Life organiser · product design · design system · web & mobile

Patchwork

Patchwork started with a person, not a product brief. A high school student with too many things to keep track of, spread across too many places. It became a clearer way to stay in control.

Patchwork on a phone, My worlds: School, My wellbeing, Where next and Volunteering, each with its own colour and drawing
ScopeDesign + full build, front to back
PlatformiOS-style mobile app · admin-style desktop
StatusLive · invite-only, still evolving
Built in~3 weeks

From idea to live

My niece was heading into her final year of school. Her wellbeing, scouting, sport, school, university applications, home and friends - all competing for space in her head. Some things lived on paper, some in emails, some in memory. The problem wasn't a lack of motivation to be organised. It was losing track of something because it was written down somewhere she wasn't looking.

She needed one calm place to put everything down and know it was there.

The alternatives felt wrong. Adult productivity tools bring the language and pressure of work: projects, priorities, deadlines and overdue states. Teen apps often add streaks, badges and notifications to keep users engaged.

She didn't need another thing asking her to perform. She needed to feel in charge of her life without adding another source of stress.

So I made Patchwork.

A quiet organiser

Patchwork brings the different parts of her life into one place as distinct worlds: school, scouting, sport, wellbeing, university applications, home and everything else.

Each world has its own colour and illustration. The language stays ordinary: My worlds. My wellbeing. Everything else.

The product doesn't chase her. There are no push notifications, streaks or badges. An overdue task is simply overdue. A task can be skipped without continuing to nag. A pin stays where she put it until she removes it.

There is no notification machinery, just a list of currently active reminders: visible in the app and, once a day, in the daily email.

These aren't missing features. They are product decisions.

The Volunteering world on a phone in dark mode: its drawing, what is happening this week, a pinned note and its tasks
A world · dark
Notes on a phone in light mode, each coloured by the world it belongs to
Notes · light
The reminders list on a phone in dark mode: two overdue tasks stated plainly, two coming up
Reminders · dark

Designed around one real person

Patchwork was designed for my niece first.

Her friends may join later, but the product began with someone real rather than an abstract target audience or persona. I could use the language she actually uses, observe how she thinks about her week, and change things based on real reactions.

It also made it easier to say no.

Right now she is the only person using it. That's intentional: it is still early, and I'm testing and refining it with her before opening it up to anyone else.

A visual language and design system

I started in Figma by defining the visual language rather than prototyping the whole application. I established the brand, typography, colour system, main components, tokens and visual assets, which then became the foundation for the implementation in Claude Code.

The visual direction is warm and structured: a stone-coloured canvas, white cards, dark green anchors and fourteen accent colours. Colour has a job — each world has its own accent — while hand-drawn illustrations give them character. The colour and typography system meets WCAG contrast requirements in both light and dark modes.

The Figma definition became a working code design system: 35 component modules, 46 primitives, 11 token files and written specifications for behaviour and values. Every component and value was traced back to the design, with anything missing flagged rather than invented.

Patchwork Design system · v1 Warm stone, one dark green anchor, white cards. Quicksand for headings, Inter for the rest.
Palette
Lime · action, today#C9F06B Dark green · anchor#3D453D Blue · affordance#34A7DB Lime light#F1F9D9 Canvas · stone#F5F4EF Card#FFFFFF Ink · text#20231F Border#DADDD5
Worlds · 14 accents
World tiles in light mode: School, My wellbeing and Where next, each a drawing framed in its world accent
WorldTile · light
The same world tiles in dark mode, with the drawings redrawn for dark
WorldTile · dark
The School world card: its drawing, the next three items and their status chips
AreaCard · a world at a glance
Three pinned sticky notes: an event, a task and a note
StickyNote · Pin

Each world keeps its accent in both themes. Every drawing is redrawn for dark, never dimmed.

Type
Display · QuicksandMy worlds
Body · InterScouting prep starts at 4 — don't forget your map!
AaEyebrow · 11 AaBody · 14 AaHeading · 20 AaHeading · 28
Radii · Shadow
8–14 · control 22 · card 44 · world tile
Components · the day and the week

The real components, captured from the live demo — light and dark.

Today's column in the desktop week: lime outline, two event cards and a task with its checkbox
DayColumn · CalendarCard · today
The seven-day strip on the phone, today selected
DayStrip · light
The seven-day strip in dark mode, today in lime
DayStrip · dark
An event card: date badge, title, world pill, time and place
ItemCard · event · DateBadge
A task card: world icon tile, title, world pill, due today and an open checkbox
ItemCard · task
A done task in dark mode: struck through, with a filled checkbox
ItemCard · done · dark
Components · creating and editing
Add new: Event, Task, Note
QuickActions
The Life and Classes toggle, Life selected
ViewToggle
One time, Recurring, Active all the time — One time selected
SegmentedControl
Daily reminders: a lime switch, start 7 days before the deadline or from a date
Switch · daily reminders
Components · navigation
The desktop sidebar: My week, Today, Month, recent notes and the list of worlds
SidebarNavItem · AreaList
The phone header in dark mode: brandmark, greeting, search and avatar
MobileHeader · dark
The phone tab bar in dark mode: My day, My worlds, Notes, Calendar and the add button
BottomTabBar · dark
The reminders list in dark mode: two overdue tasks stated plainly, two coming up
Reminders · dark

Designed around context

Patchwork is primarily a mobile experience because her phone is with her most of the time. But mobile and desktop aren't the same interface at different widths — they serve different situations.

Mobile is for the day. A quick view of today's workflow, easy access to her worlds and quick actions when she's out and about.

Desktop is for stepping back. At home, with more time and screen space, it becomes a broader planning and life-admin surface: the week at a glance, pinned items, more information visible at once and room for bulk organisation.

Light and dark mode follow the device's system setting automatically. During the day, the light interface is designed to remain comfortable and readable outdoors without harsh contrast. In the evening, the dark interface reduces the amount of screen light when she's at home.

So the two themes and two layouts aren't variations of the same screen. They respond to when, where and how she is using Patchwork.

The same design system holds them together, but the hierarchy changes with the situation.

My day on a phone in light mode: the week strip and today's events and tasks
My day · light
My day on a phone in dark mode, for the evening
My day · dark
The month calendar on a phone in dark mode, each day marked with world-coloured items
Calendar · dark
The desktop dashboard in light mode: the week at a glance, pinned items and her worlds
My week · light
The desktop dashboard in dark mode
My week · dark
The month view on desktop in dark mode
Month · dark
The School world on desktop in light mode: this week's events, its tasks and a summary
A world · light

Designing behaviour, not just screens

Some of the most important decisions aren't visible in screenshots.

  1. Nothing scoldsOverdue means overdue, not failure.
  2. A task can be skippedIt stops being late without pretending it was completed.
  3. Postpone is different from editMoving a future deadline is normal; postponing an overdue task is an explicit action.
  4. Pins stay pinnedThe app never rearranges the user's chosen shelf.
  5. Lessons are sceneryThe timetable can be viewed, but lessons don't become tasks, reminders or email items.

I wrote these behaviours down before implementation in a plain-English specification. It became the contract between the design and the code.

A task with no deadline on desktop in dark mode:
An item · dark
Creating a task on desktop in light mode: one time, recurring or active all the time, with optional daily reminders
Create a task · light

Architecture shaped by the product

The same thinking carried into the technical architecture.

Task status is derived when read rather than stored by a scheduled process. A task becomes overdue because the current time says it is overdue, not because a background job remembered to update it.

The phone, desktop and daily email use the same server-side reminder logic, so there is one definition of what needs attention.

Backup came before features. Changes are recorded as an append-only event stream in the same transaction, replicated off-site, with restores tested before the first real item was entered.

And because Patchwork contains someone's personal life, administration has a deliberate privacy boundary: the admin interface can show system health and operational counts, but never people's content, and there is no impersonation route.

FigmaClaude CodeReactViteTypeScriptExpressSQLiteDrizzleLuxonRailway

Built with AI

I owned every product, behavioural and visual decision. The implementation was built with AI coding agents, primarily Claude Code, working directly in the repository.

What made that possible wasn't clever prompting. It was having good design artefacts:

The agents wrote the code. I directed what the code was supposed to mean.

Built in spare time

Patchwork went from idea to a working product in about three weeks, built in my spare time.

I designed the product, wrote the behavioural and design-system specifications, directed the AI implementation and reviewed each step against the original decisions.

The result is a real application in daily use—not a portfolio prototype. It is live, invite-only and still evolving as I test it with my niece.

The next features and improvements are already specified and will be added as the product grows.

$ git log --oneline
  1. 118cefcOpen a demo from the sign-in page, on a made-up week that is never kept
  2. 5d68303Save a one-time task with no deadline, and call it that
  3. c59f192Name a repeating item once in a world, by its nearest occurrence
  4. b0b6758Open no day under the phone's calendar until one is tapped
  5. 77b4d62Let go of "Saving…" when the panel closes
  6. 7cd6e63Wait for the real worlds: no grey items, a late skeleton, fades that survive reduced motion
  7. b771ee2Quieten the phone: one-size bar, a reminders list, and the gaps between lessons
  8. 226811aMake dark mode hold up where it was measured to fail
  9. decf10fKeep the reminders board to what is late and what has started

Try the demo

Patchwork is invite-only, but a fully working demo is available with seeded example data.

Explore the interface, create, edit, complete and skip items, and see how the different parts of the system work without affecting any real account.

It uses the same application, validation and domain logic as the live version—the only difference is the data.

Try the demo ↗

The point

The design work became the specification, and the specification held all the way to production

The start

Patchwork started with one young person who needed a calmer way to organise a very full life.

Three weeks later

It was no longer a design exercise. It was something my niece could open every morning and use to make her life a little more manageable.