# @krypco/portal The krypco web portal — Next.js 15 (App Router), TypeScript strict, Tailwind CSS v4, forced dark theme. ## Commands ```sh bun run dev # dev server (Turbopack) bun run build # production build bun run lint # ESLint bun run typecheck # tsc --noEmit ``` (From the repo root, `bun run dev` / `bun run build` / `bun run lint` forward here.) ## Structure - `app/` — routes (`/`, `/explorer`, `/how-it-works`, `/architecture`, `/connect-wallet`, `/docs`, `/dashboard`, `/services`) plus `not-found` and `error`. - `components/ui/` — hand-built base components (Button, Card, Badge, Input, Skeleton, Separator, Tooltip) with a shadcn-style `variant`/`size` API and `cn()` from `lib/utils.ts`. - `components/icons/` — animated icons from [lucide-animated.com](https://lucide-animated.com), installed via the shadcn registry (`bunx shadcn add "https://lucide-animated.com/r/.json"`). - `components/layout/` — `AppShell`, `Sidebar`, `TopBar`, `PageShell`. - `lib/` — `utils.ts` (`cn()`), `nav.ts` (nav config), `mock.ts` (mock stats swapped for live data in Phase 2). ## Theme Tokens are defined once in `app/globals.css` via Tailwind v4 `@theme` (surfaces, text, indigo accent, status colors for pending/confirmed/anchored, radii, Inter via `next/font`). Components reference tokens only — no hardcoded hex values.