The React interface for registering, managing jobs, tracking progress, and administering users.
- React 19 and TypeScript
- Vite 8
- TanStack Router (file-based routes), Query, and Form
- Better Auth client
- Astryx Design with StyleX styling
The complete application is easiest to run from the repository root with Docker Compose. For client-only development:
pnpm install --frozen-lockfile
pnpm devThe development server listens on http://localhost:4173. It expects the backend API to be reachable through Vite's configured proxy; run the server stack alongside it.
| Command | Description |
|---|---|
pnpm dev |
Start the Vite development server on port 4173 |
pnpm build |
Type-check and create a production build |
pnpm preview |
Serve the production build on port 4173 |
pnpm lint |
Run ESLint |
pnpm check |
Check formatting with Prettier |
pnpm generate-routes |
Regenerate TanStack Router route definitions |
The app includes public sign-in and registration pages plus authenticated job and admin areas:
/jobs— job list with status filtering, sorting, pagination, and polling while work is active./jobs/$jobId— job details and current progress./adminand/admin/users— administrative views for users with the required permissions.
API calls live in src/lib/api.ts; route definitions live in src/routes. Generated router output is stored in src/routeTree.gen.ts.
Tip
After adding or renaming a file-based route, run pnpm generate-routes before committing so the generated route tree stays current.
The Dockerfile creates a Vite production build and serves it with vite preview on port 4173. In the Docker Compose environment it is exposed to the host as http://localhost:8080 and proxies API traffic to the gateway container.