Phase 2 platform shell prep

Platform boundary map

This page keeps the migration honest: which runtime owns what, which routes stay interactive, and which workspaces are already scaffolded for the next phase.

Workspaces

5

Scaffolded

2

Routes

22

Protected

5

Workspace boundaries

Current root web app

current

.

Keeps the existing Vite UI running while phased migration work continues.

Keep this frontend as the active Cloudflare Pages shell while shared boundaries mature.

Future web shell

scaffolded

apps/web

Reserved for a future shell extraction if the repo outgrows the root web boundary.

Adopt only when the extraction brings more value than additional migration cost.

Worker API

current

apps/api

Owns Hono routes, middleware, Drizzle, persistence, auth, telemetry, and resilience boundaries.

Keep routes, migrations, and bootstrap data aligned as the baseline evolves.

Shared contracts

current

packages/shared

Holds shared domain helpers plus frontend/backend request and response contracts.

Keep expanding shared contracts as new API boundaries are introduced.

Shared config

scaffolded

packages/config

Will store shared TypeScript and tooling config once the monorepo boundary is worth activating.

Introduce base configs only when multiple workspaces genuinely need them.

Execution rule

The root frontend keeps shipping while the future workspaces are scaffolded around it. We only move the shell after the shared boundaries are stable enough to avoid a rewrite spiral.

Route ownership is centralized in one manifest before the shell move starts.
`apps/api` and `packages/shared` exist now so backend work lands in the right place later.
Rendering strategy is declared route-by-route to support the future Remix migration.

Route migration map

Home

/

SSG
Marketingpublicphase-2

Static-first landing experience for the product shell.

Universities

/universities

ISR
Catalogpublicphase-4

Backed by catalog APIs and suitable for cache-aware listing behavior.

University Detail

/universities/:id

ISR
Catalogpublicphase-4

Candidate for future cache revalidation once detail APIs expand.

Compare

/compare

CSR
Catalogpublicphase-4

Comparison state remains interactive and user-driven.

Courses

/courses

ISR
Catalogpublicphase-4

Search and filtering now sit on top of API-backed course data.

Scholarships

/scholarships

ISR
Catalogpublicphase-4

Public funding data now follows the catalog API boundary.

Career Quiz

/career-quiz

CSR
Recommendationspublicphase-6

Interactive flow with persisted quiz results through the API.

GPA Calculator

/gpa-calculator

CSR
Toolspublicphase-2

Remains client-side within the current shell.

Community

/community

SSR
Communityuserphase-6

Runs through auth-aware APIs and moderation workflows.

Resources

/resources

ISR
Resourcespublicphase-6

Connected to tracked resource metadata and download events.

News

/news

ISR
Contentpublicphase-6

Driven by CMS-style article workflows.

Stories

/stories

ISR
Contentpublicphase-6

Powered by real editorial content rather than static-only imports.

Mentors

/mentors

SSR
Mentorshippublicphase-4

Served from API-backed mentor data.

Market Demand

/market-demand

ISR
Insightspublicphase-4

Lazy-loaded chart-heavy route backed by market insight APIs.

Cost Breakdown

/cost-breakdown

CSR
Toolspublicphase-4

Lazy-loaded cost analysis view to keep the initial bundle lighter.

Auth

/auth

SSR
Identitypublicphase-3

Owned by the session-backed auth boundary between web and Worker API.

Profile

/profile

SSR
Studentuserphase-4

User-scoped data route with protected API-backed state.

Applications

/applications

SSR
Studentuserphase-4

Moved from local state to authenticated persistence.

Notifications

/notifications

SSR
Studentuserphase-4

Consumes notification APIs and read-state mutations.

Admin

/admin

SSR
Adminadminphase-6

Guarded by admin-only auth checks and backed by moderation, content, FAQ, and audit APIs.

Roadmap

/roadmap

SSG
Platformpublicphase-1

Documents execution progress inside the product shell.

FAQ

/faq

SSG
Supportpublicphase-6

Public product FAQ backed by managed content entries.