MyLifeRPG is a planning-first personal operating system with a restrained progression layer. The product is built to help a user plan the week clearly, execute today deliberately, and see honest progress over time.
- Planning comes first.
- Progression exists to support real behavior, not replace it.
- The tone stays adult, calm, and grounded.
- Astro owns routes and page composition.
- PostgreSQL is the durable system of record.
- The intended public self-hosted domain is myliferpg.app.
- Bun workspace monorepo
- Astro for the web surface
- Elysia for the API
- Zod for shared contracts
- PostgreSQL as the system of record
- Docker Compose and Caddy for local edge routing and service orchestration
- Biome, TypeScript, Bun test, and Playwright for quality gates
apps/
api/
web/
packages/
contracts/
db/
migrations/
seeds/
docs/
adr/
ops/
docker/
Implemented now:
- landing page
- register, login, logout, and session validation flows
- onboarding for timezone, week start, focus areas, and stat emphasis
- authenticated shell and settings page
- PostgreSQL-backed users, preferences, and session storage
Not implemented yet:
- planning weeks and planning days
- habits, routines, tasks, and goals
- XP, streaks, quests, and reporting
- production deployment and launch runbooks
Public routes:
/landing page/loginsign-in page/registeraccount creation page
Authenticated routes:
/appfirst protected shell/onboardingrequired first-run preference capture/settingseditable account and planning defaults
API routes:
/api/health/api/health/db/api/session/api/auth/register/api/auth/login/api/auth/logout/api/onboarding/api/settings
- A new user lands on
/and chooses to enter the app. - The user registers at
/registerwith display name, email, and password. - The API creates the account, creates a session, and redirects to
/onboarding. - The user sets timezone, week start, preferred focus areas, and stat emphasis.
- The product saves those defaults and redirects to
/app. - The first protected shell confirms identity, shows saved planning defaults, and makes the remaining unfinished surfaces explicit.
- Future phases layer in first week planning, first task completion, first XP gain, and first weekly review on top of this foundation.
- user: account identity with email, display name, password hash, and onboarding completion state
- user preference: planning defaults such as timezone, week start, focus areas, and stat emphasis
- auth session: durable server-backed login session stored in PostgreSQL and represented by a secure cookie
- planning week: the future weekly planning record that will hold priorities, effort expectations, and review notes
- planning day: the future daily execution record that will connect priorities, carryover, and day-close notes
- habit: a recurring commitment with schedule and completion history
- routine: an ordered set of steps run as a structured sequence
- task: a discrete action item with urgency, effort, and completion state
- goal: a longer-horizon objective with milestone and progress tracking
- quest: a progression wrapper around meaningful work, never a substitute for it
- xp event: an auditable progression record tied to a real action or review
V1 is the serious planning core:
- account auth and preference capture
- week planning and day planning
- habits, routines, tasks, and goals
- restrained XP, levels, stats, streaks, and quests
- honest weekly reporting and review loops
Explicit non-goals for V1:
- novelty-first gamification
- childish fantasy theming
- mobile apps before the web product earns them
- push notifications, calendar sync, or worker infrastructure before the planning core is solid
- social mechanics, leaderboards, or public profiles
-
Copy the example environment files as needed.
-
Install dependencies:
bun install
-
Start local PostgreSQL and the edge proxy. PostgreSQL is exposed on host port
55432and Caddy is exposed on9080:docker compose up -d postgres caddy
-
Start the app processes on the host in development mode:
bun run dev
-
Apply migrations:
bun run db:migrate
-
Use
http://localhost:9080as the integrated browser origin so the web shell and API behave the same way they will undermyliferpg.app.
bun run verifyThis runs Biome, TypeScript and Astro checks, Bun tests, builds for the contracts, API, and web app, plus a Docker Compose syntax check.
The Astro-first browser boundary is documented in docs/adr/0001-browser-surface-boundary.md.
The repo is in greenfield build mode. BUILD.md is the execution authority and must stay current with repo truth.