|
| 1 | +# v0.4.0 Handover Document |
| 2 | + |
| 3 | +**Date:** February 2026 |
| 4 | +**Last commit:** `cc7aae0` - feat(cloud): complete v0.4.0 cloud platform UI and onboarding |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## What Was Done |
| 9 | + |
| 10 | +### Cloud Infrastructure (commit `54a2dd5`) |
| 11 | +Previously implemented core cloud platform: |
| 12 | +- Cloud mode detection (`TADA_CLOUD_MODE` env var or Stripe keys) |
| 13 | +- Database schema: subscription fields, email_verification_tokens, subscription_events |
| 14 | +- Usage limits: 1-year rolling window for free tier |
| 15 | +- Email verification flow |
| 16 | +- Stripe integration (checkout, portal, webhooks) |
| 17 | +- Account page (`/account`) |
| 18 | +- `useSubscription` composable |
| 19 | +- `ArchiveNotice` component |
| 20 | + |
| 21 | +### Cloud Platform UI (commit `cc7aae0`) |
| 22 | +Just completed: |
| 23 | + |
| 24 | +**Legal & Compliance:** |
| 25 | +- [/privacy](app/pages/privacy.vue) - GDPR-compliant privacy policy |
| 26 | +- [/terms](app/pages/terms.vue) - Terms of service |
| 27 | +- [CookieConsent.vue](app/components/CookieConsent.vue) - Shows only in cloud mode |
| 28 | + |
| 29 | +**Marketing:** |
| 30 | +- [LandingPage.vue](app/components/LandingPage.vue) - Philosophy-driven landing |
| 31 | +- [index.vue](app/pages/index.vue) - Shows landing or timeline based on auth |
| 32 | +- SEO meta tags in [nuxt.config.ts](app/nuxt.config.ts) - OG, Twitter, canonical |
| 33 | + |
| 34 | +**User Support:** |
| 35 | +- [/help](app/pages/help.vue) - Searchable FAQ with 6 categories |
| 36 | +- [/feedback](app/pages/feedback.vue) - Bug report with system info consent |
| 37 | +- [/api/feedback](app/server/api/feedback.post.ts) - Logs feedback (needs DB table for production) |
| 38 | + |
| 39 | +**Onboarding:** |
| 40 | +- [useOnboarding.ts](app/composables/useOnboarding.ts) - State management |
| 41 | +- [WelcomeOverlay.vue](app/components/onboarding/WelcomeOverlay.vue) - First-visit welcome |
| 42 | +- [FeatureHint.vue](app/components/onboarding/FeatureHint.vue) - Contextual hints |
| 43 | +- [FirstTimeCelebration.vue](app/components/onboarding/FirstTimeCelebration.vue) - Celebrates firsts |
| 44 | + |
| 45 | +**Infrastructure:** |
| 46 | +- [/api/health](app/server/api/health.get.ts) - Health check endpoint |
| 47 | +- [auth.global.ts](app/middleware/auth.global.ts) - Updated for public pages |
| 48 | +- App version bumped to 0.4.0 |
| 49 | + |
| 50 | +--- |
| 51 | + |
| 52 | +## What Remains for v0.4.0 |
| 53 | + |
| 54 | +See [design/roadmap.md](design/roadmap.md) for full details. |
| 55 | + |
| 56 | +### Onboarding (minor) |
| 57 | +- [ ] First week "getting started" card on home |
| 58 | +- [ ] Settings tour when visiting Settings page |
| 59 | + |
| 60 | +### Help System (minor) |
| 61 | +- [ ] Direct "Need help?" links from relevant pages |
| 62 | +- [ ] Contextual `?` icon in header with slide-in panels |
| 63 | + |
| 64 | +### Feedback (minor) |
| 65 | +- [ ] Screenshot/recording attachment option |
| 66 | +- [ ] Database table for storing feedback (currently just logs) |
| 67 | + |
| 68 | +### Legal (minor) |
| 69 | +- [ ] Data processing agreements page |
| 70 | +- [ ] Data deletion workflow in account settings |
| 71 | + |
| 72 | +### Marketing (can defer) |
| 73 | +- [ ] Blog foundation with initial content |
| 74 | +- [ ] Email newsletter signup |
| 75 | + |
| 76 | +### Deployment (can defer) |
| 77 | +- [ ] CapRover captain-definition |
| 78 | +- [ ] Automated backup scripts |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +## Key Files to Know |
| 83 | + |
| 84 | +| Purpose | File | |
| 85 | +|---------|------| |
| 86 | +| Cloud mode detection | `app/server/utils/cloudMode.ts` | |
| 87 | +| Usage limits | `app/server/utils/usageLimits.ts` | |
| 88 | +| Subscription state | `app/composables/useSubscription.ts` | |
| 89 | +| Stripe integration | `app/server/services/stripe.ts` | |
| 90 | +| Onboarding state | `app/composables/useOnboarding.ts` | |
| 91 | +| Public page list | `app/middleware/auth.global.ts` | |
| 92 | +| Design docs | `design/commercial.md`, `design/roadmap.md` | |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## Design Philosophy Reminders |
| 97 | + |
| 98 | +Ta-Da! is **gentle and celebratory**: |
| 99 | +- Count up, not down — celebrate what you did |
| 100 | +- Identity over streaks — "you're a meditator" not "don't break your streak" |
| 101 | +- Graceful rhythms — missing a day isn't failure |
| 102 | +- Onboarding like a friend showing you around, not a tutorial |
| 103 | +- Help that answers "why" not just "how" |
| 104 | + |
| 105 | +--- |
| 106 | + |
| 107 | +## Testing Notes |
| 108 | + |
| 109 | +- Cloud mode: Set `TADA_CLOUD_MODE=true` or configure `STRIPE_SECRET_KEY` |
| 110 | +- Self-hosted mode: Leave both unset (default) |
| 111 | +- Health check: `curl localhost:3000/api/health` |
| 112 | +- Landing page: Log out and visit `/` |
| 113 | + |
| 114 | +--- |
| 115 | + |
| 116 | +## Suggested Next Steps |
| 117 | + |
| 118 | +1. **Quick wins:** Add "Need help?" links to pages, Settings tour |
| 119 | +2. **Data deletion:** Add delete account button to `/account` page |
| 120 | +3. **Feedback storage:** Create `feedback` table in schema, update API |
| 121 | +4. **Blog:** Create `/blog` with 1-2 philosophy articles |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | +*Handover prepared by Claude Opus 4.5* |
0 commit comments