Skip to content

Future Roadmap

Last updated: June 2026 (revised — messaging bugfixes, notification clear-all, clean deploy, layout UX, Firebase removal, stale file cleanup)


Completed (as of March 2026)

Core Platform

  • [x] 13-phase personalised report (rule-based insight panels, no AI)
  • [x] PDF export (html2canvas-pro + jsPDF, one section per page)
  • [x] Future Studio — Ikigai → Vision → Mission → SMART Goals
  • [x] Life Path Simulator (Acceleration / Mastery / Contribution)
  • [x] Growth Loop — habit tracking, weekly + monthly reviews
  • [x] 6-month assessment retake cooldown
  • [x] "How to Read" guide modals in Report and Future Studio
  • [x] Career alignment signal (0–100 score with rationale)
  • [x] Life stage financial guidance (calibrated by age)
  • [x] Archetype economic future map (automation risk, future-proof skills)
  • [x] Leadership readiness profile with growth gap chart
  • [x] IkigaiFormState type + full TypeScript strict compliance

Payments

  • [x] Stripe Checkout via VPS Express (/api/stripe/create-checkout-session)
  • [x] Explorer plan (RM 99/year recurring subscription) with planExpiresAt gate
  • [x] Coach plan (RM 599 year 1, RM 199/year renewal) — Stripe Subscription Schedule (two-phase)
  • [x] Annual renewal extension via invoice.payment_succeeded webhook
  • [x] Subscription cancellation via customer.subscription.deleted — reverts plan, clears coachAppStatus, deactivates coaches doc
  • [x] Payment gate on Future Studio and Growth Loop (requiresPayment prop in ProtectedRoute)
  • [x] Promo code system (free-access / percent-off / fixed-off) — admin-managed via AdminDashboard
  • [x] Stripe coupon creation on-the-fly for discount codes
  • [x] Promo usage tracking (usedCount + usedBy[] incremented on webhook)
  • [x] Coach referral code support in checkout flow
  • [x] Admin complimentary access grant (no Stripe — sets plan: 'explorer' with no planExpiresAt)
  • [x] hasPaidAccess fix — admin-granted explorer plans (missing planExpiresAt) now correctly return true

Coaching & Community

  • [x] Verified coach network (Our Coaches) — platform directory removed
  • [x] Coach pricing range on profile + displayed on coach cards
  • [x] "Find a Coach" and "Workshops" CTAs in Report gated behind paid plan
  • [x] Coach proposal + payment confirmation flow
  • [x] Certified coach directory + application workflow
  • [x] Full 5-step coach onboarding with payment gate:
  • Apply via /coach-apply
  • Admin pre-approves → coachAppStatus: 'approved_pending_payment'
  • Coach pays RM 599 via Stripe in CoachPortal payment gate
  • Webhook sets coachAppStatus: 'payment_received'; creates SubscriptionSchedule
  • Admin activates → coaches doc created, plan: 'coach' set, coachAppStatus cleared
  • [x] coachAppStatus field on UserProfile for clean gate state ('approved_pending_payment' | 'payment_received')
  • [x] CoachPortal payment gate screens (payment form, payment confirmed, activating fallback)
  • [x] Annual renewal reminder banner in CoachPortal (amber ≤30 days, red if overdue)
  • [x] Coach portal with full client roster and archetype/goal visibility
  • [x] Coach referral system with unique per-coach referral links
  • [x] Admin handleGrantCoachAccess fixed — now also calls upsertCoachFromUser + refreshes coaches state
  • [x] Admin handleRevokeCoachAccess fixed — now also calls deactivateCoach + filters coaches state
  • [x] Team reports (create/join team, archetype distribution view)
  • [x] Workshops page with event listings
  • [x] Read-only share link for mentors/parents (/share/:token)

Admin Tooling

  • [x] 10-tab AdminDashboard: Overview · Analytics · Engagement · Users · Profiles · Coaches · Workshops · Promo Codes · Feedback · Organisations
  • [x] Admin-initiated cooldown reset and plan manager
  • Promoting to coach: upsertCoachFromUser + coaches state refresh
  • Demoting from coach: deactivateCoach + coaches state filter
  • [x] Admin complimentary access grant (permanent Explorer, no Stripe)
  • [x] Admin report viewer (full paid-tier, PDF export)
  • [x] Coaching & referral overview stats on Overview tab
  • [x] Per-coach referral leaderboard
  • [x] Promo Codes CRUD tab
  • [x] Feedback analytics tab (rating breakdown + written notes + filter)
  • [x] Coach applications — full lifecycle: Pre-Approve, Reject, Delete, Activate (only on payment_received)

Organisation Management (March 2026)

  • [x] Organisation data model — inviteCode, coachIds, plan, planExpiresAt, seatLimit
  • [x] activateOrgPlan(orgId, expiresAt?) — batch-sets all members to plan: 'explorer'
  • [x] deactivateOrgPlan(orgId) — batch-reverts all members to plan: 'free'
  • [x] assignMemberToCoach + getOrgMembers + getOrganisationByInviteCode
  • [x] Org subscription covers all members (denormalized plan on each member user doc)

Feedback

  • [x] Post-report feedback widget on Report page
  • [x] Three-rating system: 😄 Very helpful / 🙂 Somewhat helpful / 😕 Not helpful
  • [x] Optional written note; saves to reportFeedback/{uid}
  • [x] Admin Feedback tab with summary cards, filtering, and entry list

Growth Loop Phase 2

  • [x] SMART Goal Progress Tracker — pillar goals visible in monthly cycle reviews
  • [x] Historical Comparison — archetype score shifts between reassessments
  • [x] Vision / Mission reminder card at top of weekly reflection

Report & Insight Phase 3

  • [x] Alignment Score Panel — % word overlap between ikigai circles and vision/mission
  • [x] Vision Gallery — anonymised examples by archetype (opt-in)
  • [x] Ikigai ↔ IkigaiProfile adapter (explicit mapping to prevent field-name regressions)

Access Control & Documentation (April 2026)

  • [x] docs/access-control.md created — single source of truth for all 3 tiers (Free/Explorer/Coach), gate functions, org rules, Explorer grant paths
  • [x] canAccessWellnessProfile and canAccessFinancialPlan refactored — now self-contained (include hasPaidAccess check internally); callers no longer need to add separate paid check
  • [x] Layout.tsx — removed redundant hasPaidAccess calls alongside gate functions; removed hasPaidAccess import
  • [x] Pricing.tsx free plan copy corrected — now accurately shows Phase 1 access only, not full 13-phase report
  • [x] docs/architect-analysis-prompt.md fully rewritten — mandatory doc-reading table, correct MongoDB/VPS references, current gate signatures, compatibilityEngine.ts and rateLimiter.js entries
  • [x] Stale Cloud Functions content removed from docs/stripe-integration.md
  • [x] docs/user-journey.md free user description corrected (Phase 01 full + Phases 02–13 locked preview)

Compatibility Engine (April 2026)

  • [x] compatibilityEngine.ts extended with 4 new output sections: dosList, dontsList, approachGuide, traitsToWatchOut, conflictFlashpoints
  • [x] 37-change plain-language rewrite of compatibility output text

Rate Limiter (April 2026)

  • [x] middleware/rateLimiter.js created — per-user userLimiter (120 req/min keyed on req.user.uid), with admin bypass
  • [x] userLimiter applied to GET /me and PUT /me in routes/users.js
  • [x] Global IP rate limiter raised from 300 to 800 req per 15 min

Self Mastery (April 2026) — menu: Self Mastery, file: SelfMasteryPage.tsx

  • [x] SelfMasteryPage.tsx (prev. SelfInquiryPage.tsx) — 5-phase structured self-coaching session (Data → Reactions → Patterns → Reality → Action)
  • [x] Gated by canAccessSelfInquiry (Discovery completed + Explorer/Coach plan)
  • [x] AI guidance at every phase via AiGuide; prompt builders in src/services/selfInquiryService.ts
  • [x] Session storage: saveSelfInquirySession()PUT /api/users/me (selfInquirySessions[] field)
  • [x] Past sessions injected into subsequent session AI context for continuity
  • [x] /self-inquiry route + Layout.tsx nav entry added

People Blueprint (April 2026) — menu: People Blueprint, file: PeopleBlueprintPage.tsx

  • [x] PeopleBlueprintPage.tsx (prev. CorporatePage.tsx) — workplace relationship mapper with per-relationship compatibility guides and AI team coach
  • [x] Gated by canAccessCorporate (Discovery completed + Explorer/Coach plan)
  • [x] computeCorporateGuide() — per-relationship scores, dimension bars, strengths, challenges, playbook
  • [x] computeTeamIntelligence() — team cohesion score, archetype spread, narrative summary
  • [x] AI team coach via AiGuide with buildTeamCoachSystemPrompt() + buildTeamSuggestedQuestions()
  • [x] saveCorporateData()PUT /api/users/me (corporateRelationships[] field)
  • [x] /corporate route + Layout.tsx nav entry added
  • [x] canAccessCorporate + canAccessSelfInquiry gate functions added to src/utils/journeyGates.ts
  • [x] All docs updated: docs/access-control.md, docs/architecture.md, docs/features.md, docs/user-journey.md, docs/architect-analysis-prompt.md

Messaging & Notifications (June 2026)

  • [x] Conversations stored with string UUID _id (via randomUUID()) — fixes all conversations.js findOne lookups (previously used ObjectId which never matched string params)
  • [x] toDbId() helper added to conversations.js for backward compatibility with any pre-existing ObjectId docs
  • [x] getOrCreateConversation() now awaited before creating coaching notifications — eliminates dead /messages links
  • [x] Notification links for coaching events (payment confirmed, proposal accepted) embed ?conv=<uuid> — direct deep-link to the correct conversation thread
  • [x] Messages.tsx auto-selects the first conversation when no ?conv= URL param is present
  • [x] DELETE /api/notifications endpoint added — clears all notifications for the authenticated user
  • [x] "Clear all" button added to both notification panels in Layout.tsx (sidebar fixed panel + top bar dropdown)
  • [x] clearAllNotifications() added to src/api/db.ts

Clean Frontend Deploy (June 2026)

  • [x] Root cause identified: every scp -r dist/* ... upload accumulated old Vite-hashed files (8,847 files after repeated deploys) — Vite hash changes each build so old files were never overwritten
  • [x] Fix: rm -rf /opt/personality-app/public/assets must run before each upload
  • [x] c:\My Apps\hostinger\deploy-personality.ps1 created — automates build → clear remote assets → SCP upload
  • [x] docs/deployment.md updated with manual steps, clean-deploy rationale, and script reference

Layout & Sidebar UX (June 2026)

  • [x] Desktop top header hidden on authenticated inner pages (avoids double navigation chrome)
  • [x] Sidebar collapsible on inner pages (Report, Wellness, LifeDesign, Financial) — toggle button collapses to gain reading space
  • [x] Notification dropdown uses fixed positioning to prevent overflow/bleed on pages with collapsible sidebar

Firebase Removal & Codebase Cleanup (June 2026)

  • [x] Firebase SDK completely removed from client — no firebase, firebase-admin, or @firebase/* packages anywhere
  • [x] firebase-admin uninstalled from VPS package.json; sa-key.json deleted; SA_KEY_PATH removed from VPS .env
  • [x] src/firebase.js deleted from both local server/src/ and VPS /opt/personality-app/src/
  • [x] All VITE_FIREBASE_* env vars removed from .env and .env.example
  • [x] client/firebase.json (Firebase Hosting config) deleted
  • [x] .github/workflows/deploy.yml rewritten from Firebase Hosting deploy to a plain Vite build workflow
  • [x] SelfInquiryPage.tsx deleted (superseded by SelfMasteryPage.tsx — the live file since April 2026)
  • [x] server/src/routes/agents.js deleted locally (agents handled by standalone agents-service on port 5003)
  • [x] server/src/routes/workshops-sharelinks-feedback.js deleted (old combined route file using verifyFirebaseToken — fully superseded by individual workshops.js, shareLinks.js, reportFeedback.js)
  • [x] server/src/models/ empty directory removed
  • [x] client/src/data/careerPaths.json.bak deleted (unused backup file)
  • [x] VPS stale one-off scripts deleted: checkorgs.js, checkorgs2.js, checkuser.js, deletedup.js, setorgrole.js, portal-config.js
  • [x] VPS agents.js route file removed from /opt/personality-app/src/routes/ (not mounted in server.js)
  • [x] docs/architecture.md corrected: removed firebase.js/agents.js stale entries, removed non-existent /api/compare route, fixed selfInquiry.sessions nested path
  • [x] docs/testing-sharing.md corrected: replaced stale Firebase integration testing step with MongoDB/VPS testing reference

UX & Onboarding

  • [ ] Improved onboarding flow — guided first-run experience after register; clearer "what to do next" cards on Dashboard
  • [ ] Better journey progress visibility — enrich JourneyProgressStrip with % completion per stage and tooltip guidance
  • [ ] Sentence-starter prompts in Future Studio fields to reduce blank-page paralysis
  • [ ] Archetype-specific examples pre-filled in Vision / Mission fields based on user's primary archetype

AI Refinement

  • [ ] AI refinement buttons — "Make my vision more specific" / "Rewrite my mission" via Gemini (aiService.ts is wired but not yet invoked from UI)
  • [ ] AI-powered daily insights — micro-content pushed to dashboard based on current archetype + growth stage

Organisation Management (UI — backend done)

  • [ ] Org Admin dashboard — manage members, assign coaches, view member report summaries
  • [ ] Invite link UI in AdminDashboard — show/copy invite link per org
  • [ ] Auto-assign plan on join — members joining an org with an active plan are immediately set to plan: 'explorer' during registration
  • [ ] Seat limit enforcement — cap paid access at seatLimit when set
  • [ ] SSO Integration — SAML / Okta for corporate clients

Platform Growth

  • [ ] Custom Questionnaire Modules — admin-configurable add-on question sets
  • [ ] Coach plan self-serve checkout — currently requires admin to manually set plan to 'coach'
  • [ ] Stripe idempotency keys — prevent duplicate webhook deliveries from double-writing planExpiresAt
  • [ ] Feedback analytics trends — chart feedback ratings over time in Admin Dashboard