mirror of
https://github.com/warmbly/warmbly.git
synced 2026-09-07 08:01:41 +00:00
Separate from the user dashboard at web/ so admin and end-user surfaces never get confused. Same stack (React 19 + Vite + Tailwind v4 + shadcn) for consistency; differentiated visually via: - 3px amber top stripe on every authenticated page - persistent ADMIN badge in the sidebar header and login card - amber-tinted sidebar with diagonal pattern - amber accent on active nav items and primary buttons - env pill (red/amber/emerald for prod/staging/dev) in the topbar - 'Admin · Warmbly' title and amber-stroked shield favicon Pages with real data wiring: Overview, Workers (list+detail with SSH actions), Egresses, Audit Log, Settings (Encryption / Storage / Messaging / Cache / Transports) backed by /admin/settings/backends Stub pages with placeholder bodies (nav exists, no 404): Mailboxes, Users, Organizations, Plans, Warmup, Campaigns, Analytics Auth reuses backend session cookies. Dev server runs on port 5174 to coexist with the dashboard on 5173. pnpm install && pnpm build → clean pnpm typecheck && pnpm lint → clean (2 pre-existing fast-refresh warnings in shadcn primitives kept verbatim from the dashboard)
37 lines
997 B
JSON
37 lines
997 B
JSON
{
|
|
"compilerOptions": {
|
|
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
"target": "ES2022",
|
|
"useDefineForClassFields": true,
|
|
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
"module": "ESNext",
|
|
"types": ["vite/client"],
|
|
"skipLibCheck": true,
|
|
|
|
/* Bundler mode */
|
|
"moduleResolution": "bundler",
|
|
"allowImportingTsExtensions": true,
|
|
"verbatimModuleSyntax": true,
|
|
"moduleDetection": "force",
|
|
"noEmit": true,
|
|
"jsx": "react-jsx",
|
|
|
|
/* Linting — mirror web/. Strict-but-pragmatic: TS strict on, but
|
|
unused locals/params and erasable-syntax are surfaced via ESLint
|
|
instead so the build doesn't fail on churn. */
|
|
"strict": true,
|
|
"noUnusedLocals": false,
|
|
"noUnusedParameters": false,
|
|
"erasableSyntaxOnly": false,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"noUncheckedSideEffectImports": true,
|
|
|
|
/* Paths */
|
|
"baseUrl": ".",
|
|
"paths": {
|
|
"@/*": ["src/*"]
|
|
}
|
|
},
|
|
"include": ["src"]
|
|
}
|