# CrowMate Intranet Internal staff portal for CrowMate Studio — Headless Hazard. ## Quick Start ```bash npm install npm run dev ``` The intranet runs on **http://localhost:5174** (port 5174 to avoid conflicts with the public site on 5173). ## Demo Accounts | Account | Email | Role | |---------|-------|------| | Kestrel (Admin) | `kestrel@crowmate.dev` | dev + admin | | Vesper (Staff) | `vesper@crowmate.dev` | com | Regular user accounts are blocked from intranet access. ## Project Structure ``` src/ App.tsx # Router (login + intranet routes) main.tsx # Entry point index.css # Design tokens & global styles contexts/ AuthContext.tsx # Auth state (staff-only login) components/ layout/ IntranetLayout.tsx # Sidebar + main content layout shared/ ProtectedRoute.tsx # Route guard (auth + staff check) PageLoader.tsx # Loading spinner pages/ LoginPage.tsx # Staff login page intranet/ IntranetDashboard.tsx # Overview stats & nav tiles IntranetBugs.tsx # Bug triage (filter, assign, notes) IntranetFeed.tsx # Staff-only activity feed IntranetEvents.tsx # Create/manage events & polls IntranetUsers.tsx # User management (promote/ban) IntranetModeration.tsx # Forum moderation (pin/lock/delete) data/ mockData.ts # All mock data types/ index.ts # TypeScript interfaces utils/ format.ts # Date formatting helpers ``` ## Scripts - `npm run dev` — Start dev server - `npm run build` — Type-check + production build - `npm run lint` — Run ESLint - `npm run preview` — Preview production build