La Comanda’s frontend is a single-page application built with React 19 and TypeScript, bundled by Vite, and styled with Tailwind CSS v3 extended with a full Material Design 3 color system. Authentication is delegated entirely to Clerk, which wraps the app at the entry point (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/JAQA20/Paradigmas-G3/llms.txt
Use this file to discover all available pages before exploring further.
main.tsx) and guards every route through a ProtectedRoute component defined in App.tsx. Client-side navigation is handled by React Router v7, and all visible strings are managed through i18next with English and Spanish locales shipped out of the box.
Project Structure
Key Dependencies
All runtime and build-time packages are pinned inpackage.json. The table below lists the most significant ones.
| Package | Version | Purpose |
|---|---|---|
react | ^19.2.6 | UI framework |
react-router-dom | ^7.18.0 | Client-side routing |
@clerk/clerk-react | ^5.61.8 | Authentication |
i18next | ^26.3.1 | Internationalization |
react-i18next | ^17.0.8 | React i18n bindings |
tailwindcss | ^3.4.19 | Utility CSS |
vite | ^8.0.12 | Build tool |
typescript | ~6.0.2 | Static type-checking |
Tailwind Color Tokens
La Comanda extends Tailwind’s default palette with a complete Material Design 3 color system. Every token is registered undertheme.extend.colors in tailwind.config.js, which means they are available as standard utility classes (e.g. bg-primary, text-on-surface, border-outline-variant). The tokens cover the full MD3 surface, container, and role-based color roles — including dark-mode variants via the dark: prefix, which is enabled with darkMode: "class".
The following excerpt shows the key tokens used throughout the app’s components:
All Tailwind classes that reference these tokens are validated at build time. Any token not consumed by a source file in
./src/** is tree-shaken out of the final CSS bundle.Routing
App.tsx configures a BrowserRouter with a flat Routes tree. Every route except / is wrapped in ProtectedRoute, which uses Clerk’s <SignedIn> / <SignedOut> primitives to either render the child or redirect to the Clerk-hosted sign-in flow.
| Path | Component | Protected |
|---|---|---|
/ | LoginPage | No |
/dashboard | Dashboard | Yes |
/tables | TableView | Yes |
/kitchen | KitchenMonitor | Yes |
/inventory | Inventory | Yes |
/staff | StaffControl | Yes |
/settings | Settings | Yes |
/403 | AccessDenied | Yes |
ProtectedRoute wrapper is defined inline in App.tsx:
Development Commands
The following scripts are available vianpm run (defined in package.json):
| Command | Script | Description |
|---|---|---|
npm run dev | vite | Start the Vite development server with HMR |
npm run build | tsc -b && vite build | TypeScript type-check, then produce a production bundle |
npm run lint | eslint . | Run ESLint across the entire source tree |
npm run preview | vite preview | Serve the last production build locally for inspection |