This guide walks you through running Classify locally from scratch. You will start the Express 5 API server on portDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Taykl12/Classify/llms.txt
Use this file to discover all available pages before exploring further.
3001 and the Vite frontend on port 5173. In development, Vite transparently proxies all /api/* requests to Express, so no cross-origin configuration is needed on your machine.
You need an active Supabase project before starting. Create one at supabase.com and collect your Project URL, anon key, and service role key from the Supabase Dashboard under Settings → API. You also need Node.js ≥ 18 and pnpm ≥ 9 installed globally.
Clone the repository and install dependencies
Clone the Classify monorepo and install all workspace dependencies with a single The workspace root contains both the React frontend (
pnpm install. pnpm workspaces will hoist shared packages and link the classify-server package automatically.src/) and the Express backend (server/). You do not need to cd into subdirectories to install — pnpm handles every workspace in one pass.Configure server environment variables
The Express server reads its configuration from Open
server/.env. Copy the provided example file and fill in your Supabase credentials and other required values.server/.env in your editor and set the following variables:Start the Express API server
Run the backend in watch mode using You should see output similar to:Confirm the server is healthy by visiting http://localhost:3001 or running:
tsx. The server will restart automatically whenever you save a file inside server/src/.- pnpm (cross-platform)
- Windows (.bat)
Start the Vite frontend
In a second terminal, start the Vite development server. It will automatically proxy any request whose path begins with Vite will print:
/api to http://localhost:3001, so your React app never makes cross-origin requests during development.- pnpm (cross-platform)
- Windows (.bat)
- Both servers at once (Windows)
Open the app and log in
Navigate to http://localhost:5173 in your browser. You will be redirected to After logging in you will land on the
/login if you are not authenticated.Enter the credentials of a seeded user (or one you created directly in the Supabase dashboard). On successful login, the server issues a JWT that is stored as classify_access_token in localStorage. Every subsequent API call includes this token as a Bearer header./dashboard. From there you can navigate to:| Path | Description |
|---|---|
/dashboard | Home overview |
/proyectos | Project list |
/calendario | Academic calendar |
/proyectos/:id/config | Project settings |
If you receive a
401 Unauthorized response at any point, Classify will automatically clear the stored token and redirect you back to /login. The apiFetchWithRetry helper retries requests up to 3 times on 502, 503, and 504 gateway errors before surfacing the failure to the UI.Next Steps
Architecture
Explore the monorepo layout, the Vite proxy configuration, Express middleware chain, and how Supabase RLS policies protect your data.
Authentication API
Learn how Classify issues and validates JWTs, handles token refresh, and protects role-restricted API routes.