2026-03-18 — Prakta
What shipped today
This was a marathon session that took Prakta from a marketing shell to a fully architected product with complete foundation infrastructure. Three major themes: clearing the marketing launch surface, building the billing/trial system end-to-end, and laying all three foundation tracks for the core product features.
Marketing surface completed. Seven issues cleared in rapid succession: custom metadata and OG image with dynamic generation via next/og (#3), Prakta-specific README (#4), GitHub Actions CI for lint and build (#5), privacy and terms placeholder pages (#7), dead asset cleanup (#8), mobile-responsive navigation with shadcn Sheet drawer (#9), and a branded global error boundary (#10). The marketing homepage is now launch-ready with no remaining starter boilerplate.
Billing system built end-to-end. The full trial + Stripe pipeline shipped in four issues: plan fields migration with 14-day trial auto-set on signup (#29), plan gating logic with getUserPlanInfo and requireAccess helper (#30), Stripe checkout/webhook/portal API routes (#31), and the user-facing trial banner, paywall gate, and app layout with plan-aware rendering (#32). Users get a 14-day free trial (no credit card), then convert via Stripe Checkout at $15/mo or $149/yr. The app goes read-only on expiry with a calm conversion screen.
All three foundation tracks built. The user config system (#37 migration + types, #38 server functions + API) establishes the “everything is a lever” architecture — every behavioral parameter (cycle lengths, energy weights, sequencing parameters) is tunable per user with source tracking (default/user/learned). Auth shipped with email/password signup and login (#41), password reset flow (#42), Google OAuth (#43), and passkey table infrastructure (#52). The task schema (#48 migration + types, #49 CRUD server actions) provides the core data model with cognitive mode classification, activation thresholds, anxiety flags, and deferral tracking.
Product vision crystallized. The full product spec (prakta-product-spec.md) was ingested and used to design the feature architecture: 11 feature issues created covering task ingestion, cognitive classification, sequencing engine, cycle-based daily UI, Maya sidebar assistant, end-of-day capture, learning model, source task decomposition, and billing. All were triaged, prepped (or flagged for decomposition), and organized into a dependency graph. The three parent issues (#11, #12, #14) were decomposed into grindable children.
Completed
- #1 — Homepage (closed as shipped from yesterday)
- #3 — Metadata + favicon + OG image
- #4 — README replaced
- #5 — CI workflow
- #6 — Auth forms (superseded by #12)
- #7 — Privacy + terms pages
- #8 — Clean default assets
- #9 — Mobile navigation
- #10 — Error boundary
- #11 — User config system (decomposed → #37, #38)
- #12 — Auth forms (decomposed → #41, #42, #43, #44)
- #14 — Task schema (decomposed → #48, #49)
- #29 — Plan fields migration
- #30 — Plans gating logic
- #31 — Stripe integration
- #32 — Trial banner + paywall gate
- #37 — User config migration + types
- #38 — Config server functions + API
- #41 — Login + signup forms
- #42 — Password reset flow
- #43 — Google OAuth
- #44 — Passkeys (decomposed → #52, #53, #54)
- #48 — Tasks table + types
- #49 — Task CRUD server actions
- #52 — Passkey tables + webauthn config
Total: 19 issues shipped (code), 6 decomposed/closed, 25 closed overall.
Release progress
March 2026 milestone: 0 issues assigned (milestone exists but no issues were milestoned — all feature work is unmilestoned pending MVP milestone creation).
Carry-over
- #2 — Nav destinations: needs-clarification. Questions posted about Blog, support email, standalone pages. Waiting for Paul’s answers.
- #53 — Passkey registration routes: ready-for-prep. Next in the passkey chain.
- #54 — Passkey login routes + button: ready-for-prep. Depends on #53.
- #13 — Onboarding flow: blocked on auth (#41 now done) and config (#37/#38 now done). Can be unblocked and decomposed.
- #15 — Task ingestion: blocked on tasks (#48/#49 now done) and config. Can be unblocked.
- #16 — Sequencing engine: blocked on tasks and config. Can be unblocked — likely grindable as-is.
- #21 — Source tasks: blocked on tasks. Can be unblocked.
- #17-20 — Daily view, Maya, EOD, Learning: blocked further down the chain.
- Supabase migrations: 4 migrations written but none applied to the live database yet. Need to run them all.
Risks
- Migrations not applied. All 4 migrations (plan fields, user config, tasks, passkeys) exist as SQL files but haven’t been run against the live Supabase instance. Auth forms won’t work until at least the first two are applied.
- Stripe not configured. Env vars are placeholder — needs real Stripe keys, products/prices created in Stripe dashboard.
- Google OAuth not configured. Needs Google Cloud Console setup + Supabase provider config.
- No tests. 19 issues shipped with zero test coverage. The CI runs lint and build but there are no unit or integration tests.
Flags and watch-outs
- buttonVariants server/client split.
src/components/ui/button-variants.tsis the server-safe export;button.tsxre-exports it for client use. shadcnadd --overwritewill clobber this — always restore after adding components. - Port 3006. Dev server always runs on 3006 per Paul’s instruction. Stored in memory.
prakta-product-spec.mdis the canonical product spec — supersedes PRODUCT.md for feature details. PRODUCT.md links to it.
Next session
- Run all 4 Supabase migrations against the live database
- Re-triage blocked issues (#13, #15, #16, #21) — foundations are now built, they should unblock
- Prep and exec #53 + #54 (passkey registration + login routes) to complete auth
- Decompose #13 (onboarding) and #15 (task ingestion) — they’re the next feature layer
- Consider creating an “MVP” milestone and assigning the feature issues to it
- Start the Stripe setup: create products/prices in Stripe dashboard, add real keys
Why customer tools are organized wrong
This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.
Infrastructure shapes thought
The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.
Server-side dashboard architecture: Why moving data fetching off the browser changes everything
How choosing server-side rendering solved security, CORS, and credential management problems I didn't know I had.
The work of being available now
A book on AI, judgment, and staying human at work.
The practice of work in progress
Practical essays on how work actually gets done.
The org chart your agents need
The AI community is reinventing organizational design from scratch — badly. Agencies figured this out decades ago. Competencies, not clients. Briefs, not prompts. Lateral communication, not hub-and-spoke. The answers are already there.
AI agents need org charts, not pipelines
Every agent framework organizes around tasks. The agencies that actually work organize around competencies. The AI community is about to rediscover this the hard way.
The delegation problem nobody talks about
When your automated systems start finding real bugs instead of formatting issues, delegation has crossed a line most managers never see coming.