Last Updated: 2026-04-08 Total PRPs: 16 (legacy) + 46 (SpecKit features) Completed: 15 legacy PRPs (v0.3.0) + much of v0.4.0 Foundation/Messaging/Content (silently, see below) In Progress: 024 Payment Integration (awaiting API keys), 033 SEO lib tests (3 of 4 files covered) Not Started: 034 Blog library tests, 038–042 Payment feature routes + UX Current Phase: v0.4.0 — Payments activation + testing coverage gaps
A direct-verification audit found that ~70% of non-payment feature status fields were stale — many features marked "Draft" or "Ready for SpecKit" are actually fully implemented in production. Below is the corrected state based on reading the code (not the status fields).
| Feature | Evidence |
|---|---|
| 003 User Authentication | 82 files across src/lib/auth/, src/components/auth/, src/contexts/AuthContext.tsx. Email/password + OAuth. tests/e2e/auth/ covers all flows. |
| 007 E2E Testing Framework | 60 *.spec.ts files, 6 Playwright projects, 24-shard CI matrix. Run 24113858375 (2026-04-08) achieved 24/24 green across chromium/firefox/webkit. |
| 008 Avatar Upload | 10 avatar component files, crop interface, persistence, tests/e2e/avatar/upload.spec.ts. |
| 009 User Messaging | 23 files in src/lib/messaging/ + src/services/messaging/. E2E-encrypted (JWK+noble-curves). 12 E2E spec files cross-browser validated. |
| 011 Group Chats | group-key-service, group-service, CreateGroupModal, tests/e2e/messaging/group-chat-multiuser.spec.ts. |
| 018 Font Switcher | src/components/molecular/FontSwitcher/ full 5-file pattern. |
| 022 Web3Forms | useWeb3Forms.ts hook + ContactForm + form-submission.spec.ts E2E. |
| 025 Blog Social | SocialShareButtons component, author bio rendering, OpenGraph + Twitter card metadata in blog routes. |
| 031 Test Users | scripts/seed-test-users.ts, tests/e2e/utils/test-user-factory.ts, standardized env var naming. |
| 032 Signup E2E | Dedicated Playwright project, full sign-up flow coverage. |
| 046 Admin Dashboard | 4 admin domains (audit, messaging, payments, users). JWT claim-based RLS enforcement. |
| Feature | What's done / what's missing |
|---|---|
| 006 Template Fork | scripts/rebrand.sh (615 lines) + docs/FORKING.md in production. Payment missing-config UX landed 2026-04-08 (PaymentButton feature-flag gate + /payment-demo top-of-page banner). Gap: Supabase missing-config first-run banner (same pattern, not yet applied to Supabase). |
| 019 Google Analytics 4 | src/lib/analytics/GoogleAnalytics/ full 5-file pattern, consent-gated. Awaits per-fork NEXT_PUBLIC_GA_MEASUREMENT_ID. |
| 030 Calendar Integration | CalendarEmbed + CalendarConsent + providers dir + /schedule route. Awaits per-fork NEXT_PUBLIC_CALENDAR_PROVIDER/NEXT_PUBLIC_CALENDAR_URL. |
| 033 SEO Library Tests | 3 of 4 modules tested (keywords, content, readability). Gap: src/lib/seo/technical.ts untested. |
| Feature | Reality |
|---|---|
| 034 Blog Library Tests | src/lib/blog/ has 4 production modules (markdown-processor, seo-analyzer, toc-generator, blog-data.json) with zero unit test files. Real gap — blog library has no direct test coverage despite being used across production /blog routes. |
- 043 Group Service — moved from
features/payments/tofeatures/core-features/on 2026-04-08. Depends on 009 messaging system. Has 8 unimplemented methods insrc/services/messaging/group-service.ts(addMembers, getMembers, removeMember, leaveGroup, transferOwnership, upgradeToGroup, renameGroup, deleteGroup) — messaging UI exists but these methods are the backing work. - Other features not in the tables above had their status fields reviewed and were either already accurate (rare) or could not be verified with direct file reads in limited time. A future audit pass should cover 001, 002, 004, 005, 010, 012–017, 020, 021, 023, 026–029, 035–037, 044, 045.
- An initial audit via an Explore agent was unreliable — it reported ~40% false-positive "Not Started" claims for features that actually have substantial code (006, 019, 025, 030 among others). The entries in the tables above were verified directly, not via the agent.
Reality check (2026-04-08): Payments are far more built than initial status labels implied. Most of the code exists — what's missing is activating API keys, writing 4 route files, and filling targeted UI gaps. An earlier version of this section labeled 038-042 "Not Started" — that was wrong; the foundations are there. This update corrects the picture.
What exists:
- Client libraries (
src/lib/payments/, 1124 lines):payment-service.ts,stripe.ts,paypal.ts,offline-queue.ts,metadata-validator.ts,connection-listener.ts - Supabase Edge Functions (742 lines Deno):
stripe-webhook,paypal-webhook,send-payment-email - Database schema: 5 tables (
payment_intents,payment_results,subscriptions,payment_provider_config,webhook_events) with 20+ RLS policies - React components:
PaymentButton,PaymentConsentModal,PaymentStatusDisplay,PaymentHistory,PaymentTrendChart,AdminPaymentPanel— all with 5-file test coverage - Working routes:
/payment-demo(has passing Stripe + GDPR E2E tests),/admin/payments - Type definitions + config:
src/types/payment.ts,src/config/payment.ts - Env var contract: All 6 keys listed in
.env.example..envhas only empty commented template lines — no actual values yet
What's actually missing (the real backlog):
- Obtain API keys — create Stripe account + PayPal developer sandbox, set up webhook endpoints, populate 6 values: Stripe publishable + secret + webhook secret, PayPal client ID + secret + webhook ID. Public keys go in
.envasNEXT_PUBLIC_*; server secrets go in Supabase Vault (accessed by Edge Functions viaDeno.env.get). Budget 30-60 min of external account setup. Full walkthrough: docs/PAYMENT-DEPLOYMENT.md. Forker-facing overview: README.md "Payment Integration Setup". - 4 route files — wire existing components into new page.tsx files:
/payment/dashboard(038) — composePaymentHistory+PaymentTrendChart+ live-update subscription/payment/subscriptions(038/040/041) — new component, list active subs, cancel/upgrade/payment/history(039) — wrapper aroundPaymentHistorycomponent/payment/result(040) — post-redirect result page with retry CTA
- Targeted UI affordances — some components don't exist yet:
- Offline queue status indicator / sync pill / count badge / retry button / clear-queue (039)
- Grace period banner, duplicate-subscription prevention (041)
- Rate-limit UI for payment endpoints (042)
- Verify RLS policies — policies are written; 25 E2E stubs in
08-security-rls.spec.tsneed to be un-skipped and run to prove each policy enforces what it claims (042)
The 47 skipped E2E tests are still the acceptance criteria — un-skip them as each gap closes. But "un-skip a test" sometimes means "just flip the skip flag" (if the code already works) and sometimes means "build the missing page/component first".
| Feature | Real Status | Active Tests | Stubs Remaining | Notes |
|---|---|---|---|---|
| 024 Payment Integration | Mostly Implemented — awaiting API keys | 3 Stripe + 9 GDPR + 2 PayPal + 2 retry = 16 live | 1 + 12 + 14 + 2 = 29 across 4 files | Libs + Edge Functions + DB + components all exist; Stripe + PayPal keys NOT yet obtained (.env has empty commented templates). Needs account setup (~30-60 min) before any live payment flow works. Child features 038–042 hold the remaining work. |
| 038 Payment Dashboard | Components Built, Route Missing | 2 | 20 | PaymentHistory, PaymentTrendChart, AdminPaymentPanel all exist; /payment/dashboard page.tsx does not; also needs real-time subscription wiring. |
| 039 Payment Offline Queue | Logic Built, UI Affordances Missing | 2 | 18 | offline-queue.ts + payment-adapter.ts + connection-listener.ts work; missing: status indicator, sync pill, count, retry, overflow alert, /payment/history |
| 040 Payment Retry UI | Backend Ready, Routes + UX Missing | 2 | 14 | Retry logic in payment-service.ts; missing: /payment/result page, offline error banner, retry surface |
| 041 PayPal Subscriptions | Backend Ready, UX Missing | 2 | 12 | paypal.ts lib + paypal-webhook Edge Function + subscriptions table exist; missing: /payment/subscriptions page, grace period, duplicate prevention |
| 042 Payment RLS Policies | Policies Written, Unverified | 2 | 25 | 20+ policies exist in monolithic migration; work is "un-skip tests, run them, fix any policies that fail" rather than "write from scratch". Also: rate-limit UI |
| 043 Group Service | N/A | — | — | Moved to features/core-features/ on 2026-04-08 — it's a messaging feature, not a payment feature |
| 07 Payment Performance | (no feature file) | 2 | 14 | 07-performance.spec.ts — needs a feature file or merge into 038 |
Recommended next actions (rough ordering):
- Unblock 024: obtain Stripe + PayPal keys (create test-mode Stripe account + PayPal developer sandbox app, configure webhook endpoints), populate
.env(publicNEXT_PUBLIC_*vars) and Supabase Vault (server secrets), verify/payment-demoworks end-to-end against sandbox APIs. (~1-2 hours including account setup) - 042 verification: un-skip the 25 RLS tests one at a time, fix policies where assertions disagree. No new code, just verification + policy tweaks. (half-day)
- 038 + 039 routes: create
/payment/dashboard,/payment/history,/payment/result,/payment/subscriptionspage.tsx files wiring existing components. Some stubs will go green immediately. (1 day) - 039 UI affordances: build missing queue-status / retry / clear-queue components. (1 day)
- 040 + 041 UX: result page polish, grace period handling, duplicate subscription prevention. (1 day)
Each step should land its corresponding E2E tests un-skipped and green on the next CI run — that's how we measure "done" honestly.
Tracking source of truth: when work progresses, update (1) the **Status**: line in the feature file, (2) the row in this table, (3) un-skip the corresponding E2E tests and make them pass.
Phase 1: Foundation [✅✅✅] 3/3 Complete ✨
Phase 2: Compliance [✅✅✅] 3/3 Complete ✨
Phase 3: Privacy [✅✅] 2/2 Complete ✨
Phase 4: Forms [✅✅✅] 3/3 Complete ✨
Phase 5: Features [✅✅✅] 3/3 Complete ✨
Phase 6: Authentication [✅] 1/1 Complete ✨
Sprint 3.5: Tech Debt [✅✅✅] Complete ✨
- ✅ All 46 Sprint 3.5 tasks completed
- ✅ Next.js 15.5 verified working without workarounds
- ✅ Husky pre-commit Docker detection fixed
- ✅ lint-staged git stash issues resolved
- ✅ Font loading optimized for CLS reduction
- ✅ Technical debt documentation updated
- ✅ 13 TODOs documented and categorized
- ✅ 793 tests passing, build stable
- ✅ Fixed Next.js 15 async params warnings in blog pages
- ✅ Updated TECHNICAL-DEBT.md (2 issues resolved)
- ✅ Verified nodemon config already corrected
- ✅ Only 1 low-priority issue remaining (Disqus themes)
- ✅ Created comprehensive PRP Methodology documentation
- ✅ Generated SPECKIT-PRP-GUIDE.md quick reference (350 lines)
- ✅ Updated PRP-WORKFLOW.md with SpecKit Integration section (320 lines)
- ✅ Updated CLAUDE.md and README.md with PRP/SpecKit links
- ✅ Demonstrated workflow by using it (dogfooding per NFR-005)
- ✅ All 14 implementation tasks completed (T001-T014)
- ✅ Success metrics validated: PRP-012 implementable using docs
- ✅ 46/46 tasks completed in 2 days
- ✅ 6 critical issues resolved (Next.js, Husky, lint-staged, fonts, etc.)
- ✅ Zero workarounds needed - clean build process
- ✅ 100% Storybook coverage - all stories working
- ✅ 793 tests passing - stable test suite
- ✅ Technical debt documented - 13 TODOs categorized
- Started: 2025-09-18
- Completed: 2025-09-19
- Duration: 2 days
- Result: All technical debt eliminated, ready for v0.4.0
| # | PRP | Priority | Status | Branch | Started | Completed | Notes |
|---|---|---|---|---|---|---|---|
| 1 | PRP Methodology | P3 | ✅ Completed | 001-prp-methodology |
2025-09-30 | 2025-09-30 | PRP/SpecKit workflow documentation, dogfooded via workflow |
| 2 | Component Structure | P0 | ✅ Completed | 002-component-structure |
2025-09-13 | 2025-09-13 | 5-file pattern standardization |
| 3 | E2E Testing Framework | P0 | ✅ Completed | 003-e2e-testing-framework |
2025-09-14 | 2025-09-14 | Playwright setup, local-only |
| # | PRP | Priority | Status | Branch | Started | Completed | Notes |
|---|---|---|---|---|---|---|---|
| 4 | WCAG AA Compliance | P0 | ✅ Completed | 004-wcag-aa-compliance |
2025-09-14 | 2025-09-14 | Pa11y, axe-core integration |
| 5 | Colorblind Mode | P0 | ✅ Completed | 005-colorblind-mode |
2025-09-14 | 2025-09-14 | Daltonization correction |
| 6 | Font Switcher | P1 | ✅ Completed | 006-font-switcher |
2025-09-14 | 2025-09-15 | 6 fonts including accessibility options |
| # | PRP | Priority | Status | Branch | Started | Completed | Notes |
|---|---|---|---|---|---|---|---|
| 7 | Cookie Consent & GDPR | P0 | ✅ Completed | 007-cookie-consent |
2025-09-15 | 2025-09-15 | Privacy compliance |
| 8 | Google Analytics | P1 | ✅ Completed | 008-google-analytics |
2025-09-15 | 2025-09-15 | GA4 with consent |
| # | PRP | Priority | Status | Branch | Started | Completed | Notes |
|---|---|---|---|---|---|---|---|
| 9 | Web3Forms Integration | P0 | ✅ Completed | 009-web3forms-integration |
2025-09-16 | 2025-09-16 | Contact form with validation, 620 tests |
| 10 | EmailJS Integration | P1 | ✅ Completed | 010-emailjs-integration |
2025-01-17 | 2025-01-17 | Fallback email service with failover |
| 11 | PWA Background Sync | P0 | ✅ Completed | 011-pwa-background-sync |
2025-09-16 | 2025-09-17 | Offline queue, 646 tests passing |
| # | PRP | Priority | Status | Branch | Started | Completed | Notes |
|---|---|---|---|---|---|---|---|
| 12 | Visual Regression Testing | P2 | 📥 Inbox | 012-visual-regression |
- | - | Deferred until UI stable |
| 13 | Calendar Integration | P0 | ✅ Completed | 013-calendar-integration |
2025-09-17 | 2025-09-17 | Calendly/Cal.com support with consent |
| 14 | Geolocation Map | P1 | ✅ Completed | 014-geolocation |
2025-09-18 | 2025-09-18 | Leaflet maps, desktop accuracy limited |
| 15 | Payment Integration | P0 | ✅ Completed | 015-payment-integration |
2025-10-03 | 2025-10-03 | Supabase backend, Stripe/PayPal providers, offline queue, GDPR consent |
| # | PRP | Priority | Status | Branch | Started | Completed | Notes |
|---|---|---|---|---|---|---|---|
| 16 | User Authentication | P0 | ✅ Completed | 016-user-authentication |
2025-10-05 | 2025-10-05 | Supabase Auth, OAuth (GitHub/Google), RLS policies, mobile-first UI |
- 📥 Inbox: Not started, awaiting dependencies
- 🚀 Ready: Dependencies met, can begin
- 🔄 In Progress: Active development
- 🔍 In Review: PR submitted, awaiting review
- ✅ Completed: Merged to main
- ⏸️ Blocked: Issue encountered, see notes
- 🔙 Rolled Back: Reverted due to issues
graph TD
PRP1[1. PRP Methodology] --> PRP2[2. Component Structure]
PRP2 --> PRP3[3. E2E Testing]
PRP3 --> PRP4[4. WCAG Compliance]
PRP4 --> PRP5[5. Colorblind Mode]
PRP5 --> PRP6[6. Font Switcher]
PRP2 --> PRP7[7. Cookie Consent]
PRP7 --> PRP8[8. Google Analytics]
PRP2 --> PRP9[9. Web3Forms]
PRP9 --> PRP10[10. EmailJS]
PRP9 --> PRP11[11. PWA Sync]
PRP10 --> PRP11
PRP3 --> PRP12[12. Visual Regression]
PRP2 --> PRP13[13. Calendar]
PRP2 --> PRP14[14. Geolocation]
PRP7 --> PRP14
style PRP1 fill:#f9f,stroke:#333,stroke-width:2px
style PRP2 fill:#f9f,stroke:#333,stroke-width:2px
style PRP3 fill:#f9f,stroke:#333,stroke-width:2px
- Average PRP Completion Time: <1 day
- Current Sprint: Sprint 3.5 Technical Debt - COMPLETE!
- Sprint Completion: Sprint 3.5 completed 2025-09-19
- Previous Sprint: PRP-014 (Geolocation) completed 2025-09-18
- Tests Written: 793+ total (750+ unit, 40+ E2E)
- Test Coverage: 58% overall (maintained during tech debt sprint)
- Component Coverage: 98% (Web3Forms), 97% (PWA Sync), 100% (EmailJS)
- Accessibility Score: 96/100 (4 minor issues in ContactForm)
- Lighthouse Score: 92/100 (Performance)
- Bundle Size: 102KB First Load JS (optimized)
- Technical Debt: 13 TODOs documented (6 tests, 3 features, 4 templates)
PRPs (Features):
- Component Structure (PRP-002): 5-file pattern enforced via CI/CD ensures consistency
- E2E Testing (PRP-003): Page Object Model provides maintainable test architecture
- Docker-first development: Consistent environment across all developers
- Cookie Consent (PRP-007): Context-based consent management with localStorage persistence
- Google Analytics (PRP-008): Privacy-first GA4 integration with consent mode, debug utilities
- Web3Forms (PRP-009): Contact form with Zod validation, honeypot spam protection, TDD approach (98% coverage)
- PWA Background Sync (PRP-011): IndexedDB queue, service worker sync, comprehensive offline support
- EmailJS Integration (PRP-010): Provider pattern with automatic failover, retry logic, rate limiting, 100% test coverage
- Calendar Integration (PRP-013): GDPR-compliant consent for third-party scheduling services
- Geolocation Map (PRP-014): Leaflet.js with dynamic imports, OpenStreetMap tiles, GDPR consent modal
Sprint 3.5 (Technical Debt):
- Build System: Next.js 15.5 works without Pages Router dummy files
- Docker Integration: Husky pre-commit hooks detect and handle Docker environment
- lint-staged: Fixed git stash issues with --no-stash flag
- Performance: Font loading optimized with display:swap and preconnect
- Documentation: Technical debt accurately tracked with TODO categorization
- CI/CD pnpm versions: Standardized to exact version 10.16.1 across all workflows
- E2E in CI: Tests require dev server, made local-only with clear documentation
- Missing dependencies: Added to Dockerfile for consistency (Playwright deps)
- PRP-009 Deferred Tasks: Offline support (T010-T011) moved to PRP-011, enhanced security features (T012-T016) marked as optional future enhancements
- PRP-011 Test Issues: 4 integration tests fail due to React Hook Form async validation timing (production works correctly)
- PRP-014 Desktop Accuracy: IP-based geolocation limited to city-level accuracy, documented as PRP-015 for v0.4.0
- PRP workflow: Clear /plan and /tasks commands streamline implementation
- Parallel task execution: Identified independent tasks for faster completion
- TDD approach: RED-GREEN-REFACTOR cycle ensures quality
-
PRP-001 (PRP Methodology Documentation) ⭐ RECOMMENDED
- Document the successful PRP process while it's fresh
- Create reusable framework for future development
- Low effort, high value
-
Component Test Coverage Expansion
- Address 6 TODO comments in game components
- Add comprehensive tests for CaptainShipCrew features
- Improves code reliability
-
Notification System Implementation
- Replace console logs with toast notifications
- Better UX for errors and success messages
- Professional user feedback
-
Production Error Tracking
- Integrate Sentry or LogRocket
- Essential for production monitoring
- TODO in error-handler.ts
Advanced Features:
- State Management (Zustand/Jotai)
- Animation System (Framer Motion)
- UI Components (Command Palette, DataTable, Modal)
- OKLCH Color System Scripts
- Developer Tools CLI
Deferred PRPs:
- PRP-012: Visual Regression Testing (wait for stable UI)
- PRP-015: Enhanced Geolocation Accuracy (hybrid approach)
- None currently
- High Risk: None identified
- Medium Risk: GA4 integration depends on cookie consent
- Low Risk: Calendar and geolocation are independent
- Web3Forms: Requires API key
- EmailJS: Requires account setup
- Google Analytics: Requires GA4 property
- Calendly/Cal.com: Requires account
- Chromatic/Percy: Requires account for visual regression
- Issue: 4 integration tests fail due to React Hook Form async validation timing
- Impact: Test environment only, no production impact
- Tests Affected: offline-integration.test.tsx (4 tests)
- Root Cause: Complex mocking of hooks with form validation lifecycle
- Recommendation: Split into focused unit tests + E2E tests
- Priority: Low (production works correctly)
The following tasks were deferred for future implementation as separate mini-PRPs:
- T010: Implement offline submission queue
- T011: Update Service Worker for background sync
- Priority: P1 Important
- Rationale: Core functionality working, offline can be added later
- T013: Implement client-side rate limiting
- T014: Add spam protection (honeypot field)
- T016: Implement form analytics tracking
- Priority: P1 Important
- Rationale: Basic protection in place, can enhance later
- T017: Add form draft auto-save feature
- T020: File attachment support
- Priority: P2 Nice to have
- Rationale: Core form working, these are enhancements
- 4 minor accessibility test failures in ContactForm component
- Missing navigation link to /contact page in header menu
- See
/specs/009-web3forms-integration/COMPLETION_REPORT.mdfor full details
Dashboard Usage: Update this dashboard after each PRP milestone:
- Branch creation
- Implementation start
- PR submission
- Merge to main
- Any blocking issues