meteor-simple is a simple to-do list. It exists so that one person — the task owner — can keep a small, trustworthy record of what they still have to do: add a task, see what is outstanding, mark a task complete, and delete a task they no longer need. The product's intent is deliberately narrow. It is not a project manager, a habit tracker, a calendar, or a motivational system; it is an everyday tool whose value is that adding, finishing, and clearing a task feel immediate and inevitable.
The audience is a single individual keeping track of personal tasks. Success is a current, accurate list of remaining tasks that the owner can return to and trust.
This document is the System Requirements Document for meteor-simple, written for Milan Ajudiya.
meteor-simple is delivered as a small web application with three runnable services:
The only active human actor is the Task owner. The product has application-owned identity: a task owner enrolls once on Sign Up, verifies on return through Login, and then works inside a single Tasks workspace where all four accepted task capabilities — view, add, complete, delete — live together. Task state is durable and belongs to the owner who created it.
Current scope is exactly the simple to-do list: viewing tasks, adding tasks, marking tasks complete, and deleting tasks, plus the identity establishment and return verification needed to keep a personal list private and resumable.
Removed from scope
meteor-simple is a first-party web product. All four accepted surfaces are owned and rendered by the application itself; no accepted capability is delegated to a provider surface or an external destination.
Access is split into two boundaries. Landing, Sign Up, and Login are anonymously reachable: a visitor can read what the product is, create an account, or verify an existing one without already being signed in. Tasks requires login, because the list is personal and durable — it must remain bound to the correct owner across visits. A protected destination cannot establish access to itself, so enrollment lives on Sign Up and return verification lives on Login, both reachable before authentication.
The backend owns task persistence and identity verification; the database owns durable storage. There is no differentiated permission model: every task owner sees and controls only their own list, and no role-based visibility or shared-state control is part of this product.
Everything described in this document is current. No future-horizon capabilities are defined.
FR-1 — View to-do items (explicit) As a Task owner, I should see my to-do items so that I know what is still outstanding.
FR-2 — Add a new to-do item (explicit) As a Task owner, I should add a new to-do item to my list so that I can record something I need to do.
FR-3 — Mark a to-do item complete (explicit) As a Task owner, I should mark a to-do item complete so that my list reflects what I have finished.
FR-4 — Delete a to-do item (explicit) As a Task owner, I should delete a to-do item so that my list stops showing something I no longer need.
FR-5 — Self-service enrollment (required_inference) As a Task owner, I should create my own account so that my list is private to me and survives my return.
FR-6 — Returning verification (required_inference) As a Task owner, I should sign in to my existing account so that I can reach my saved list.
FR-7 — Sign out (required_inference) As a Task owner, I should end my session so that another person using the same device cannot see or change my list.
FR-8 — Owner-scoped task isolation (required_inference) As a Task owner, I should only ever see and change my own tasks so that my list remains trustworthy.
The muse is Naoto Fukasawa; the headline is "One thing at a time." The theme is super-normal taskkeeping: quiet, tactile, and unremarkable in the best sense.
Colour tokens (light mode)
| Role | Hex | Use |
|---|---|---|
| Background | #EEECE5 | Warm paper page ground, dominant field (~65%) |
| Surface | #FAF9F4 | Soft ivory task surfaces (~30%) |
| Text | #252824 | Dark charcoal body and headline text |
| Primary | #3F6651 | Deep moss green — completion states, primary action, focus indicators |
| Accent | #C96E43 | Terracotta — destructive actions and small status marks only |
| Muted | #A8AAA1 | Sage-grey borders at low contrast, secondary marks |
Blue and indigo are excluded entirely. Borders are one-pixel muted sage-grey at low contrast; text remains dark and highly readable.
Typography
-0.025em, large practical headlines rather than promotional display type.clamp(48px, 9vw, 104px) with a 48px mobile minimum; page title clamp(30px, 5vw, 52px); section title 24px; task text 18px; body 16px; labels 12px with 0.08em tracking.Shape language. Tactile rounded rectangles with restrained 14px corners, one-pixel warm-grey outlines, circular check controls sized for touch, and no decorative shadows. Completed tasks retain their full shape but soften into a low-contrast moss-tinted surface with a precise line-through.
Layout rhythm. A single-column product rhythm with unusually generous side margins and a narrow readable task measure. Landing is a calm vertical sequence. Tasks is a focused paper-like workspace: add field anchored at the top, outstanding tasks below, completed tasks folded into a quiet lower section. At 375px all controls stack cleanly with 16px gutters; at 768px and 1280px the workspace stays intentionally narrow rather than expanding into empty dashboard panels.
Imagery. No stock photography, illustrations, gradient blobs, or device mockups. The product itself is the visual subject: large check circles, task rows, a subtle paper grain, and one quiet everyday-object still life only on Landing — such as a softly lit pencil resting outside the reading area.
Motion. Still by default. A completed task changes state with a 140ms opacity and colour transition; deletion collapses the row in 160ms without bounce. Focus states are immediate. With prefers-reduced-motion, all transitions resolve instantly.
The Landing hero is a tall warm-paper sheet framed by the #EEECE5 page ground. A single oversized sentence, "One thing at a time.", sits flush left across the upper two-thirds in #252824, scaling from 48px on mobile to 104px on desktop. Beneath it, a real three-row checklist occupies a narrow column: one unfinished task, one moss-green completed task, and one empty add row with a circular plus control. A small terracotta dot and a thin horizontal rule are the only accent. The composition is quiet but unmistakable — an everyday task list enlarged into the hero itself, never a centred SaaS headline-and-button arrangement.
The checklist specimen is the primary visual object: an oversized three-row task specimen under the viewport-spanning sentence, not a product screenshot inside a card. It is decorative and non-interactive; the two real entry links to Sign Up and Login sit below it as plain text links, so the hero never presents competing filled buttons. The corner wordmark "meteor-simple" pairs with a single square status mark.
The same signature moves carry into Tasks: the 28px outlined circle that fills moss green only when completed with a short two-stroke checkmark; the always-visible blank ruled add line with a circular plus at its left, so creating a task feels like writing onto the page rather than opening a modal; the thin rule and small count label ("DONE · 03") separating outstanding from completed; and the corner status mark shifting from muted grey to moss green when nothing remains outstanding.
Interaction Model: Static (direction) Motion Tempo: still Hero Dimensionality: flat
#EEECE5; the sentence flush left across the upper two-thirds in #252824; the narrow checklist column below with a moss-green completed row; a terracotta dot and thin rule as the sole accent; the corner wordmark with its square status mark; two plain text entry links.prefers-reduced-motion.clamp(...) to fit. No element covers readable text or a control. (explicit — creative direction)#EEECE5 and #FAF9F4 remains high. (explicit — creative direction)prefers-reduced-motion, all transitions resolve instantly. (explicit — creative direction)frontend service.backend process exposing task and identity APIs. New domain modules extend this process rather than adding services.database service, holding task owner accounts and to-do items.docker-compose.yml with the three services above: frontend, backend, database.

No comments yet. Be the first!