Port existing screens to Expo Router #184

Closed
opened 2026-06-20 15:44:35 +00:00 by james · 0 comments
Owner

Port the remaining screens from app/(app)/, app/login, app/register, app/page.tsx, and app/offline/page.tsx to Expo Router in apps/client.

Per-screen subtickets are too granular; this is one ticket with a checklist. Each item is a self-contained port — read the current Next.js page, render the same UI in apps/client using DS primitives + tokens, replace data fetching with the generated client + hooks.

Scope

Port each screen, preserving its current behaviour and tests where applicable.

  • / (home / landing)
  • /login
  • /register
  • /profile
  • /skills
  • /experience
  • /settings
  • /notes (the TanStack reference route)
  • /offline (force-static today; document the Expo equivalent)
  • Any 404 / error pages

Acceptance criteria

  • Every existing route from app/ is reachable in the Expo client.
  • Cross-user isolation behaviour (404 on someone else's data) verified end-to-end on at least Skills and Profile.
  • No screen reads from apps/api source — all data flows through packages/api-client.
  • Visual parity on both themes.
  • i18n: strings load via the new runtime; placeholder text and ARIA labels survive.

Out of scope

  • Deleting the Next.js UI files (its own ticket — easier as a single cleanup PR).
  • New visual designs — this is a port, not a redesign.

Composes with

Expo scaffolding, Decommission Next.js UI.

Part of

#176

Port the remaining screens from `app/(app)/`, `app/login`, `app/register`, `app/page.tsx`, and `app/offline/page.tsx` to Expo Router in `apps/client`. Per-screen subtickets are too granular; this is one ticket with a checklist. Each item is a self-contained port — read the current Next.js page, render the same UI in `apps/client` using DS primitives + tokens, replace data fetching with the generated client + hooks. ## Scope Port each screen, preserving its current behaviour and tests where applicable. - [ ] `/` (home / landing) - [ ] `/login` - [ ] `/register` - [ ] `/profile` - [ ] `/skills` - [ ] `/experience` - [ ] `/settings` - [ ] `/notes` (the TanStack reference route) - [ ] `/offline` (force-static today; document the Expo equivalent) - [ ] Any 404 / error pages ## Acceptance criteria - [ ] Every existing route from `app/` is reachable in the Expo client. - [ ] Cross-user isolation behaviour (404 on someone else's data) verified end-to-end on at least Skills and Profile. - [ ] No screen reads from `apps/api` source — all data flows through `packages/api-client`. - [ ] Visual parity on both themes. - [ ] i18n: strings load via the new runtime; placeholder text and ARIA labels survive. ## Out of scope - Deleting the Next.js UI files (its own ticket — easier as a single cleanup PR). - New visual designs — this is a port, not a redesign. ## Composes with Expo scaffolding, Decommission Next.js UI. ## Part of #176
james closed this issue 2026-06-21 18:25:59 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
james/carol#184
No description provided.