What Shipped
forgehome/ — Rounds-engine daily route app for household managers
packages/forgekit-ui/ — cn, Badge, Button, Card (single source of truth)
packages/forgekit-core/ — createDb(schema) Neon proxy + Clerk middleware re-export
packages/templates/rounds-app/ — complete skeleton for any new Rounds app
package.json (root) — npm workspaces monorepo wiring
leashline wired to packages via re-export shims + transpilePackages
Where We Spun
Re-export shim via package boundary fails with Turbopack static analysis
20 min
Inline config directly in each app — don't re-export through packages/
leashline has its own .git — workspace linking silently skips it
10 min
Keep leashline/.git for now, migrate to monorepo in a dedicated session
Key Insights
Rounds engine rule: if the operator goes TO the client, it's Rounds. If clients come to the operator, it's Rail.
Section-based Today page — fetch all items, split by type, render sections in priority order. Each section is an independent server component.
Guilt-free Move: no red overdue state. Move just advances the date. This is a product principle, not a UI detail.
createDb(schema) is generic — each app passes its own schema, gets a fully typed client. No connection held at module load.
ForgeKit Patterns Earned
Rounds app template
cp template, swap name/colors/schema/seed — working Rounds app in 15 min. Location: packages/templates/rounds-app/
createDb(schema) proxy
Generic Neon DB factory — typed per app, no connection held at module load. Location: packages/forgekit-core/src/db.ts
Re-export shim pattern
Keep app import paths (@/components/ui/badge) stable while pointing to shared package. Components become 1-line re-exports.
Section-based Today page
Fetch all items, split by type, render sections in priority order. Each section is an independent server component.
Session in Numbers
15m
To scaffold a new Rounds app
A new Rounds app in 15 minutes. The template is the compression.
Session insight
Next Session — Start Here
Deploy
ForgeHome — Neon DB + .env.local + deploy — Set up Neon DB, push schema, seed Junge family data, deploy to home.forgekits.build
Verify
Leashline monorepo linking — Run npm install from root, verify leashline resolves forgekit-ui and forgekit-core correctly
Future
forgekit-ai package — Claude API wrapper, structured output, retries, eval logic — extract when two apps need it