Files
shihaam 2f5659f3ff
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 8s
document the ui
2026-08-02 18:44:46 +05:00

4.2 KiB

SAR Link Portal — Frontend Documentation

This folder is a reconstruction spec for the SAR Link Portal frontend: enough detail to rebuild the app screen-by-screen in any framework. It documents the UI, user flows, API endpoints, design system, and all hardcoded copy.

What the app is

A customer + admin portal for an ISP (SAR Link by OmegaTech Solutions). Customers register (identity-verified against the national registry), add network devices, and pay for device subscriptions by bank transfer (MIB) or from a prepaid wallet. Admins verify users and manage devices, payments, topups, and wallet credits.

Index

Doc What's in it
architecture.md Stack, folder map, current (BFF) vs target (static + nginx + API_URL) architecture, auth model, deployment, cleanup list
design-system.md Brand color (sarLinkOrange #f49b5b), theme tokens, fonts (Barlow/Bokor), dark mode, status colors, reusable layout patterns, app shell
navigation.md Full sidebar menu tree (labels, icons, routes, permissions), user vs admin visibility, other nav entry points
routes.md Every route/page: URL, purpose, components, guards, loading states
components.md Component catalog by feature area + conventions
user-flows-and-state.md End-to-end flows (register, login, buy/pay device, topup, parental control, admin) + Jotai atoms + React Query + auth/token storage
api-endpoints.md Every backend endpoint: method, path, purpose, request/response, auth, + dead-code list
ui-copy.md Every hardcoded string (headings, buttons, placeholders, toasts, validation, bank/brand/contacts) for i18n

Related, outside this folder: ../STATIC_MIGRATION_PLAN.md (in-progress static-export migration), .build/prod/ (production compose + nginx).

How to recreate the app from these docs

  1. Scaffold the target stack (recommended: Vite + React + TanStack/React Router + Tailwind v4 + shadcn/ui new-york neutral + lucide). See architecture.md.
  2. Theme it from design-system.md — brand color, fonts, tokens, title-bg, status colors, dark mode.
  3. Build the shell — sidebar (navigation.md) + header (wallet / theme / account) + auth-page card layout (design-system.md).
  4. Auth — implement the login flow and token store from user-flows-and-state.md using API_URL; guard routes.
  5. Routes — create every screen in routes.md; compose from components.md.
  6. Data — wire each screen to its endpoints in api-endpoints.md via React Query; carry over the response envelope + status conventions.
  7. Copy — pull all visible text from ui-copy.md (fix the noted typos; set up i18n keys).
  8. Flows — validate the six end-to-end flows in user-flows-and-state.md.

Key facts to carry over

  • API base is configurable: API_URL=http://localhost:8000 (dev) / https://portal.sarlink.net/api (prod, nginx → Django). Same build, both environments.
  • Auth: Knox token from POST /callback/auth/, stored in localStorage, sent as Authorization: Token <token>; 401 → signin.
  • Two-tier UI: desktop tables + mobile cards for every list; filters/pagination via URL query params.
  • Payments: device payments and wallet both verify via the same endpoint with a method (TRANSFER/WALLET); MIB verification is server-side — the frontend only sends the method and shows hardcoded bank details.
  • Admin gating: user.is_admin / user.user_permissions.
  • Dead code exists — don't port Omada, Invoice Ninja, next-auth routes, or the unused axios helpers (see api-endpoints.md).

Provenance

Compiled from a full read of app/, components/, actions/, queries/, lib/, and config. The app is mid-migration from the Node/BFF model to a static build — docs describe current behavior and flag migration deltas inline.