Pocket Planner, the app
Pocket Planner started with a frustration I kept seeing in myself and in the people buying my Notion templates. Notion and tools like it hand you a blank page. Before you can plan a single day, you have to design a system, then build the architecture that holds that system, then maintain both forever. I built the system as a Notion template first and sold it. In 2026 I rebuilt it as a real web app with Claude Code, so the architecture is already there. You answer nineteen questions, personalize it, and open a planner that is already yours.
Where it came from
The frustration
People who buy ADHD planners have tried Notion, GoodNotes and every app that promised to help. The tools are either flexible but shapeless, or structured but rigid. In the flexible ones you spend the first month building a system for yourself and the housing for it, and the first bad week breaks it.
The template proved the method
I built the system in Notion first: 16 databases, three dashboards, a notification center, a mood menu. Sold on Gumroad, every review five stars. It worked. But every formula and relation was mine to maintain, and buyers still had to set it up by hand from a guide.
What Notion could not do
Change what you see based on your mood. Update five surfaces from one checkbox. Sync a calendar. Reset one routine without touching the others. Ask you a question and build the page from your answer. You can get close with tricks, and the tricks break.
The system, and the house I built for it
The app does not ask you to build anything. The structure is built in. You name your lists, pick what each page shows, and launch. Under it all is one rule I wrote on the first day and never let the code break.
Databases are truth. Widgets are views. Dashboards are arrangements.
A record exists exactly once. A list has an identity (id, name, icon, color, work or personal) and every widget reads that same identity. Check a task off anywhere and it is done everywhere, because there is only one of it.
Five lists per hub
The Work Hub holds five work lists: Daily, Weekly and Emails come built in, two you name. Personal HQ holds five you name. Five projects, five goals, five routines. The limit is the product: you can manage five things well or twenty badly.
A list becomes a widget
Name a list once and the app makes a Quick Capture button for it, a widget with its own banner, a tab and a row in the Task Tracker, and a stat tile. One answer creates real infrastructure.
Same widget, any page
That widget can be toggled on or off the Daily Dashboard, added to a Daily Planner day, and dragged wherever you want it. The layout engine rebalances the row every time, so there is never an empty gap.
Four dashboards, four questions
Daily Dashboard: what am I doing today? Work Hub: how is work going? Personal HQ: how am I doing as a person? Daily Planner: what do my days look like across the week? Different pages for different states, all windows into the same data.
No guilt, by design
No streak counters, no overdue red, no "last active". Partial progress is shown proudly. Open it Tuesday, open it three weeks later, it still works.
Type a name, pick a color, toggle the pages. Four surfaces update from one list record. In the app the same record also feeds the Daily Planner and the Starboard count.
| Dashboard | Answers | Always on |
|---|---|---|
| Daily Dashboard | What am I doing today? | Quick Capture, stat tiles, calendar, Day Card, Starboard |
| Work Hub | How is my work going? | Stat tiles, Starboard, work habits, the Work Zone (Priority, Daily, Weekly, Emails) |
| Personal HQ | How am I doing as a person? | Stat tiles, personal lists, goals |
| Daily Planner | What do my days look like? | Schedule, the day's lists, mood, journal, one card per day |
| Layer | Pool | What you choose |
|---|---|---|
| Page widgets | 12 on Daily, 8 on Work Hub, 12 on Personal HQ | Any non-core widget on or off, in any order |
| Starboard | 18 cards | Up to 8, under a locked greeting |
| Day Card | 11 mini widgets | 5, under a locked greeting |
| Stat tiles | 8 per page | 4 showing |
| Quick Capture | Every list you own | 3 of the 8 buttons; 5 are locked |
How I built it with Claude
Spec first, then code
Before the first line, I wrote the app's source-of-truth documents: the architecture, the system rules, the layout system, and a one-page set of execution rules. The repo's instructions tell Claude to follow those and to ask instead of guessing.
Scoped sessions with handoffs
Each build session got its own prompt (one for the Work Hub, one for Personal HQ, one for the planner, one for onboarding) and ended with a handoff note: what shipped, what is still broken, what comes next. 19 of those in the repo.
Rules Claude had to obey
Only the requested task. Never a duplicate system. Widgets are views and never own data. No sample data in a real account. "Done" means it works, not that it renders. 44 locked decisions and corrections, kept in memory across sessions.
| When | What happened |
|---|---|
| January 2026 | The Notion template is live on Gumroad |
| March 12 to 17 | App spec, a 139-decision design document, and an HTML prototype of the Daily Dashboard |
| March 26 | First commit, as a React Native app. Within the week, pivoted to React on the web |
| April 2 | Full codebase pushed and live on Vercel: login, 19-step onboarding, all four dashboards |
| April 3 | One-day audit: 12 features and fixes, then the zone layout system |
| April 9 to 15 | Calendar day view, seed data for every table, the routines system |
| April 21 to 22 | Two features I had not planned: Pockets of Sun and Cadet Mode |
| May to July | Promo video, marketing site, refinements. 72 commits by April 22, and 200+ changes in progress since |
| Guardrail | Why it is there |
|---|---|
| Four source-of-truth docs | Architecture, system rules, layout rules, execution rules. Decisions live there, not in chat |
| Build-time audit | A script runs on every build and fails it if a page talks to the database directly instead of the shared data layer |
| Strict TypeScript | Unused variables and loose types fail the build. Several commits exist only to satisfy it |
| Push to main deploys | Vercel rebuilds in about a minute, so I review every change on the live app, never on localhost |
| Never push partial work | A rule I added after Claude shipped half a fix. Finish everything requested, then commit |
| Push back on me | Claude is told to challenge any decision that would hurt a shipped product, and to ask when an edge case is missing |
Feature spotlights
Try them
Everything below is clickable and built with the app's own colors, fonts and glass. Sample data, no real account.
Why these seven
Each one is a place where the app does something the Notion template could not: ask, build, respond, reset, sync.
Onboarding builds the planner before you see it
Four phases
Your world: name, icon pack, work lists, work sections, everyday tasks, personal lists. The bigger shape: projects, goals, habits, routines, meals, finances, mood. What each page shows: dashboards, then Starboard and Day Card. Then launch.
Every answer writes real rows
Launch inserts your lists, projects, goals, habits, routines and widget preferences into the database, then opens the Daily Dashboard. Your real list names are on the buttons. No empty states on day one.
Setup is the reward
In the template, setup was a guide you followed by hand. Here it is the best-looking part of the product: glass cards on a blurred holographic background, a rainbow progress bar, and a launch button that opens something you just built.
The titles, defaults and limits are the app's own. Click through, or jump to step 19 and press Launch to watch the dashboard assemble from what you typed.
Quick Capture
Eight buttons
Five are locked: Today, Weekly, Priority, Reminder, Brain Dump. Three the user swaps in from a pool: Home, Life, Email, Note, Idea, Cleaning, Money, or any list they made.
Every button knows where things go
The list, the dashboard, the icon and the color are already decided. Nothing to configure at the moment of capture.
One write, many surfaces
The task is saved once. The list, the stat tile and Starboard all read from that one record, so they change together.
Good afternoon, Shelby! 👋
You have 28 active tasks and 1 upcoming event this week.
Press a button. The task lands in its list, the tile and Starboard update from the same record.
The Day Card and Starboard
A second scale of information
The main widgets answer "what do I need to work on?" These two answer "what is quietly going on right now?" Small cards, ambient, read in a glance.
Greeting locked, slots open
The Day Card keeps its greeting and fills 5 slots from a pool of 11 mini widgets. Starboard keeps its greeting and fills up to 8 from a pool of 18. Each person's picks are saved to their profile.
Every line is computed
Active tasks are counted from the task table. Next appointment comes from the synced calendar. The rings are completion rates. Weather uses the zip code on the profile. The fact comes from a library of ADHD tips.
You have 28 active tasks and 1 upcoming event this week.
Both greetings are computed from your clock right now. Tap the chips to turn cards on and off, the way the Customize menu does in the app; the slot limits are the real ones.
Mood to Action
Tap a mood
A mood entry is logged for the day. The suggested actions underneath change to match, so help shows up inside the workflow instead of in a separate app.
Calibrated to capacity
Each action carries an effort level and a time. Tired gets two-minute actions; energized gets a whole room.
Two things, kept apart
The menu of actions is a reference. The log of moods is a history. In the template they were two databases; in the app they are two tables, for the same reason.
Tap a mood. Sample actions in the app's own wording style, not the full menu.
Routines with their own resets
Five routines
Morning, Night, Workout, Sunday Reset, Cleaning by default, named in onboarding. Each is a sequence of steps, not a habit, and each has its own progress.
Reset one, keep the rest
The user decides when a new day starts for each part of life. Resetting Night leaves Morning exactly as it was.
Nothing resets itself
No automatic midnight wipe. If you come back after two weeks, the routines are where you left them, with no note about the gap.
Check steps off, then press Reset on one routine. Only that one clears.
Five lists, one table, four behaviors
One table, many views
Daily, Weekly, Emails, Priority and Reminders are all rows in one task table with a list id. Every widget is a filtered view of it.
Emails is a to-do list of emails
It holds the emails you still need to write, in one place instead of scattered through other lists. Send marks the row complete. The app never touches your inbox. Reminders dismiss with an X, because an X is the whole action.
Generate stamps, never duplicates
Everyday Tasks are the five things you named in onboarding. Generate Today's Tasks sets today's date on those same rows and unchecks them. Nothing is copied, so nothing piles up while you are away.
Send an email, dismiss a reminder, generate the day. Three behaviors, one table. The cursor runs the Generate step for you when the card scrolls into view.
A planner for every day, with Google Calendar inside it
Seven Day Cards
Generate the week and every day gets its own page: a schedule down the left, the day's lists in the middle, Important, Mood and Journal on the right. The same lists as the dashboards, filtered to that day.
Google events land in the app's own layer
Four serverless functions: connect, callback, sync, disconnect. The token stays server-side. Synced events are written into the internal calendar table, so the schedule, the calendar page and the dashboards show one event system. Google events are read-only here.
Fails loudly, not silently
If Google revokes or expires the token, the app marks the connection and asks to reconnect instead of quietly showing an empty day.
The schedule column is one third of the page, like the app. Sync pulls the day's Google events; the small link shows what the user sees when Google drops the connection.
By the numbers
Also in the app
Habit tracker with a momentum percentage per day. Projects with milestones. Goals. Notes with five types. Journal. Finance in six categories that puts bills on the Day Card. A Make It Yours studio for backgrounds, banners and four icon packs.
Two I did not plan
Pockets of Sun, a keepsake page where good moments are filed as grateful, proud, growth or love. Cadet Mode, a learning vault with a dark space theme and three stages: in motion, discovery, vault.
The plumbing
Supabase with row-level security and email login. Stripe subscriptions with a trial, a webhook for checkout and invoices, and a customer portal. Push to main and Vercel is live in a minute.
How I think about building
Spec before code
Decisions live in documents the build has to follow, not in a chat that scrolls away.
Done means it works
Rendering is not finished. Every element has to trace back to real data.
Design is a layer of the system
Banners, spheres and progress bars are wayfinding and dopamine, not decoration.
The tool adapts to the human
Mood, routines and resets bend to the person. Never the other way round.