Plans
Plans
Finite, day-by-day programs — start from a blueprint, an AI-generated import, or from scratch.
A Plan is different from a Habit: it's finite (it has a set number of days), each day can have its own content, and it progresses by completion order rather than a calendar streak. Use Plans for anything with a defined start and finish — exam prep, a fitness challenge, a course, a 30-day reset.

Four ways to start a plan
- Open Plans from the sidebar and click 'New plan'. You land on a picker with four options plus a community gallery.
- Blueprint — apply a ready-made template (Student Starter, Early Riser, Learn a New Language, Learn a New Programming Language, Structured Diet & Nutrition Plan, General Deliberate-Practice Skill Plan). Copies straight into your account and opens the editor so you can adjust it before you start.
- Community plans — other users' published plans appear in a grid below the blueprints, each showing its author and day count. Click 'Use this plan' to fork a private copy for yourself.
- Build with ChatGPT — describe your goal, copy a generated prompt into ChatGPT or Claude, paste the reply back, and rituall turns it into days and blocks.
- Start from scratch — a 4-step wizard: Goal basics → Days & blocks → Evidence-based additions → Reminder & review.

Step 1 of 4 — Goal basics (every field)
- Plan name — required. Text input, placeholder 'e.g. Learn Spanish'. You can't move to step 2 without one; leaving it blank shows 'Give your plan a name before continuing.'
- Description — optional, free text.
- Category — optional free-text field (placeholder 'Language, Programming, Diet...') plus five quick-set chips: Language, Programming, Diet, Fitness, Custom. Picking a chip fills the field for you; you can still type anything else.
- Icon (emoji) — optional, up to 8 characters. Paste any emoji.
- Color — optional. Pick from 8 swatches, use the native color-wheel picker, or type a hex code directly. A live preview swatch shows the resolved color. Near-white values are automatically remapped to a soft pearl silver so borders and buttons stay visible.
- Start date — defaults to today. Quick chips: Today, Next Monday, 1st of next month. This date only matters if you choose Calendar mode below — in Flexible mode it's just informational.
- Pace style — a required choice between two radio options: Flexible (recommended), which moves at your own speed with no dates enforced, and Calendar dates, which locks each day to a real date but always lets you catch up.


Step 2 of 4 — Days & blocks
- Every plan needs at least one day — trying to submit with zero days shows 'Add at least one day.'
- Each day has: a title (placeholder 'Day {n} title', falls back to 'Untitled day' if left blank), an optional rich-text intro (bold/italic/underline/strikethrough, headings, lists, checklists, quotes, code, links), and its own list of blocks.
- Day-row controls: duplicate (copies the day and appends ' (copy)' to its title), move up, move down, remove. Use 'Add day' to append another.
- A block is one row inside a day — either a plain checklist item or a time-scheduled item, toggled with the 'Set a time' checkbox. Enabling it defaults the time range to 7:00–7:30 AM; adjust the two time pickers as needed.
- Once a block is timed, 'Copy this time to more days' lets you apply the same start/end time across a day range (defaults 2 to 7) in one click — useful for a recurring slot like 'Study — 7:00–7:30 AM' every day.
- Anchor to habit (optional) — link a block to an existing Habit via a dropdown (defaults to 'None'). This is habit-stacking: doing the plan block right after/before a habit you already have.
- Location cue (optional) — placeholder 'Where this happens — e.g. at my desk, in the kitchen'.
- Tiny version (optional) — placeholder 'Tiny version — e.g. open the doc for 2 minutes'. This is what shows up as a fallback if you fall behind in Calendar mode.
- Block notes (optional) — the same rich-text editor as the day intro, for anything else worth writing down.
- Block-row controls: move up, move down, remove. Use 'Add block' to append another to the same day.

Step 3 of 4 — Evidence-based additions (all optional)
- This step doesn't add required fields — it's three one-click buttons that insert pre-built content you can still edit afterward.
- '+ Weekly review checkpoints' — inserts a review day every 7 days, titled 'Weekly review', with one block prompting 'Write your weekly reflection: planned vs. actual, one thing to adjust.'
- '+ Spaced-repetition review blocks' — only shown if your Category is Language or Programming. Appends a review block at day offsets 1, 3, 7, and 14 (the classic spacing curve), titled 'Review: Day 1 material (spaced-repetition checkpoint).'
- '+ If-then intention' — reveals a three-part form: 'If [cue], then I will [action]' plus an optional 'Main obstacle (WOOP)' field. This is Gollwitzer & Sheeran's implementation-intention research — a specific if-then plan beats relying on general motivation. It gets folded into your first day's notes when you submit.

Step 4 of 4 — Reminder & review
- Daily reminder — optional checkbox, off by default.
- If checked: a time picker (defaults to 8:00 AM) and seven weekday toggle chips (Sun–Sat). Leaving all weekdays unselected means 'every day' — you don't have to tap all seven.
- A read-only Review panel summarizes Name, Category, Days (count), Reminder (On/Off), and Schedule (Flexible or Calendar dates) before you commit.
- Every new plan starts private — the review step reminds you of this; you can publish it later from its detail page once you're happy with it.
- The final button reads 'Create plan'. It stays disabled/spinning while the plan saves, then takes you straight to the plan's detail page.

Building with ChatGPT — every field, step by step
- 'What are you planning?' — optional one-line goal (placeholder 'e.g. 30-day Spanish speaking sprint, 20 min/day'). Leaving it empty shows a nudge that filling it in makes the generated prompt far more accurate.
- 'Copy prompt for ChatGPT' generates a structured prompt asking for JSON only, schema version 1, up to 365 days and 50 blocks per day, timed or checklist blocks, and rich-text-compatible notes (headings, bold/italic/underline, lists, tasks, quotes, code, links). Click 'What's in the prompt?' to see the exact bullet list before copying.
- Quick links open ChatGPT or Claude in a new tab, or download a sample JSON file if you'd rather see the expected shape first.
- Step 2, Paste reply — a large textarea (or upload a .json file directly) for the AI's response. Click 'Check my paste' to validate.
- If validation fails, every issue is listed in plain language, and a 'Copy fix prompt for ChatGPT' button generates a follow-up prompt you can paste back into the same chat to get a corrected reply.
- Step 3, Preview & create — shows day count, block count, and whether the plan is self-paced or calendar-dated (with its start date), plus an expandable accordion of the first 3 days so you can sanity-check the content. You can still override the plan's name here before creating it.

Example: applying the Student Starter blueprint
- 1From the picker, click 'Start from this' under a blueprint tile.
- 2rituall copies the blueprint's days and blocks into a brand-new private plan and opens the editor immediately.
- 3Every field — name, description, category, icon, color, start date, pace style, and all days/blocks — is pre-filled but fully editable, exactly like a from-scratch plan.
- 4Adjust anything you want (rename it, change the color, add a reminder), then use the normal edit-page 'Save changes' button — there's no separate 'confirm blueprint' step.

Self-paced vs. calendar plans
- Flexible/self-paced (default) — you move through the plan at your own speed. Completing 'today's' day always advances the cursor to the next incomplete one, whether that's tomorrow or three days from now.
- Calendar mode — each day is pinned to a real date. Falling behind shows a catch-up banner with a tiny-version fallback so a busy day doesn't break the plan. Once any day is completed, the pace style locks — restart the plan from its menu if you need to switch modes.
The plan detail page
- Progress ring and pace badge (e.g. 'On track') at the top of the plan card, plus current streak once you've completed at least one day.
- Timeline view — a scrollable, week-grouped, day-by-day list. The current day is highlighted and labeled 'TODAY'; the next incomplete day is labeled 'UP NEXT'. 'Mark [day] done' completes it in one click; 'Undo' reverses that.
- Calendar view — a month-grid heatmap with a legend (Done / Today / Upcoming). Clicking any date opens a side panel with that day's title, status, an 'Open in timeline' shortcut, and a few nearby days for quick navigation.
- Weekly review and If-then intention panels sit above the timeline/calendar if you added those in step 3 (or want to set them up later) — 'Start review' and 'Set intention' open their respective forms.
- The '...' menu on the detail page holds pause, resume, duplicate, export (JSON/Markdown/ICS calendar), restart, and abandon.



Today & Tomorrow — the merged agenda
- Both the Overview dashboard and a dedicated '/plan/today' page show every active plan's current step merged into one chronological list, grouped into Today, Up next, and Tomorrow.
- Complete a whole day at once from this panel, or open the plan itself to check off individual blocks.
- When everything for today is done, the panel confirms it with a short message ('All done for today — nicely paced.') instead of just going blank.


Spaced repetition
- Turn on spaced repetition for any block worth reviewing later (a vocabulary list, a key formula) from the block's controls.
- Reviews appear in the Review Queue when they're due, with four grading buttons — Again, Hard, Good, Easy — using an SM-2-style algorithm: grading 'Again' resets the interval, while Hard/Good/Easy scale the next interval further out each time you get it right.
Streaks, pinning, and publishing
- Plans track their own streak, separate from Habit streaks, with an optional streak-freeze (up to 3 uses per 30 days) to bridge a single missed day.
- Pin your most important plan (the pin icon on its card or detail page) to keep it at the top of your Plans list.
- Publish a plan from its detail page to share it with the community — others can fork it into their own copy, and you can track its fork count and finish rate on the public gallery.
Free-tier limits
- Up to 50 active plans at once on the Free tier. Finish, pause, or abandon one to free up a slot.
- Up to 365 days and 50 blocks per day, per plan — enforced whether you build from scratch, import via AI, or apply a blueprint.
Field reference — from-scratch plan builder
| Field | Required? | Default | Notes |
|---|---|---|---|
| Plan name | Required | empty | Blocks moving past step 1 if empty. |
| Description | Optional | empty | Plain text, no formatting. |
| Category | Optional | empty | Free text, or pick one of 5 chips: Language, Programming, Diet, Fitness, Custom. |
| Icon (emoji) | Optional | empty | Max 8 characters. |
| Color | Optional | amber (#f5a623) if left blank | 8 preset swatches, native color picker, or type a hex code. Near-white is remapped to a visible silver. |
| Start date | Has a default | today | Only affects behavior in Calendar mode. |
| Pace style | Required choice | Flexible (self-paced) | Locks once any day is completed — restart the plan to change it. |
| Days | At least 1 required | one day titled "Day 1" | Blank day titles become "Untitled day" on save. |
| Block title | Optional per block | empty | Blank blocks are dropped silently on save. |
| Block timed toggle | Optional | off (checklist-style) | Checking it defaults the time range to 7:00–7:30 AM. |
| Anchor habit | Optional | None | Links the block to one of your existing Habits. |
| Location cue | Optional | empty | Free text, e.g. "at my desk." |
| Tiny version | Optional | empty | Shown as a fallback when you're behind in Calendar mode. |
| Daily reminder | Optional | off | When on: time defaults to 8:00 AM, no weekdays selected = every day. |
Example: a week with a study plan
- 1Monday: complete Day 1 — 'Reading comprehension basics'.
- 2Tuesday: complete Day 2, and mark 'Vocabulary list' for spaced repetition.
- 3Wednesday: too busy — use the tiny-version fallback to keep the streak alive.
- 4Thursday: catch up, completing both Wednesday's and Thursday's content.
- 5Sunday: review due vocabulary cards in the Review Queue, grading each one.