feat(web): Vite + TanStack Router + Tamagui app #19
No reviewers
Labels
No labels
app/archiv
app/einkaufslisten
app/imap-client
app/wissensbasis
arch-answered
arch-question
area/api
area/auth
area/infra
area/mobile
area/shared
area/ui
area/web
portfolio-status
prio/high
prio/low
prio/medium
roadmap/public
size/l
size/m
size/s
size/xl
size/xs
status/blocked
status/needs-info
type/bug
type/chore
type/docs
type/feature
type/idea
type/refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
admin-mrrm/mrrmlabapp!19
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/apps-web"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
apps/web— first user-facing surface, wires together every package shipped on this branch so far@vitejs/plugin-react+@tamagui/vite-plugin(Tamagui static style extraction enabled in prod)/,/lists,/lists/$listId,/auth/callback. Auth-protected routes usebeforeLoadto redirect to Keycloak when no session exists.QueryClient(sane defaults:staleTime: 30s,refetchOnWindowFocus: false)@mrrmlab/authwired viaWebStorageTokenStore(sessionStorage)— tokens die with the tab, refresh-token rotation handles silent re-loginVITE_KC_ISSUERis empty, the app skips login entirely and the backend's dev-user passthrough handles auth. Mirrors the api server's ownKC_ISSUERbehavior./listsand/lists/$listIddrop the screens from@mrrmlab/feature-shopping-liststraight in — feature parity with mobile (#12) comes for freeBundled refactor: auth + api-client → source-only
mainat./src/index.ts. Matchesuiandfeature-shopping-list.index.jsoutputs — first auth, then api-client would have hit the same wall.shared-typesstays CJS-built because Nest still depends on it. Vite handles its CJS dist viabuild.commonjsOptions.includewidened to cover the workspace package.Verification
pnpm -r typecheck— 8 packages cleanpnpm --filter @mrrmlab/web build— produces a 763 kB JS / 3.8 kB CSS bundlepnpm --filter @mrrmlab/api build— Nest backend still builds (shared-types CJS path unaffected)Test plan
pnpm --filter @mrrmlab/web devand click through/,/lists, item add/toggle/delete.env.local, verify the dev-user passthrough flow works end-to-end against the running api/auth/callbackround-trips correctly andreturnTois honoredCloses #11
Adds apps/web — the first user-facing surface for mrrmlab. Wires everything previously shipped on this branch into a working web app: - Vite 6 + @vitejs/plugin-react + @tamagui/vite-plugin (with static style extraction enabled in prod) - TanStack Router with typed routes: /, /lists, /lists/$listId, /auth/callback. Auth-protected routes use beforeLoad to redirect to Keycloak when no session exists. - TanStack Query v5 with a single shared QueryClient - @mrrmlab/auth wired via sessionStorage token store; OIDC config is optional in dev — when VITE_KC_ISSUER is unset, the app skips login entirely and the backend's dev-user passthrough handles it. - @mrrmlab/api-client built with a getToken callback that pulls from the AuthClient - Drops @mrrmlab/feature-shopping-list's screens straight into the /lists and /lists/$listId routes — feature parity comes for free. Vite build needs commonjsOptions.include widened so Rollup processes @mrrmlab/shared-types' CJS dist (which has to stay CJS for NestJS). Closes #11 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>