tracking sites of azul tech across Rwanda
# Site Tracker — Azul Tech
A full-stack project management dashboard for tracking document-digitization sites across Rwanda. Field teams scan documents at sector offices; admins and project managers monitor progress across **45 scanning sites**, manage projects, assign tasks, review an audit trail, and get deadline alerts.
**React 18 + Vite** frontend · **Express 5 + SQLite** REST API · JWT authentication · OpenAPI-documented endpoints · plain CSS design system (no UI libraries).
## Quick start
Requires **Node.js 22.5+** (the backend uses the built-in `node:sqlite` module).
```bash
# 1. Install dependencies
npm install
# 2. Start the API (
localhost)
npm run server # or: npm run server:dev (auto-restart)
# 3. In a second terminal, start the frontend (
localhost)
npm run dev
```
The Vite dev server proxies `/api/*` to `
localhost` (see `vite.config.js`), so no CORS setup is needed in development.
### Demo accounts
| Role | Email | Password |
| --- | --- | --- |
| Admin | `admin@azultech.com` | `Password123!` |
| Project Manager | `jean.bosco@azultech.com` | `Password123!` |
| Field Worker | `eric@azultech.com` | `Password123!` |
Sign-up (self-registration) creates Manager or Field Worker accounts; Admin accounts are created by an existing admin from the Users page.
### Production build
```bash
npm run build
npm run preview
```
### Configuration (environment variables)
| Variable | Default | Purpose |
| --- | --- | --- |
| `PORT` | `4000` | API port |
| `JWT_SECRET` | dev fallback (warns on startup) | Token signing secret — set this outside development |
| `DB_PATH` | `server/data.sqlite` | SQLite database location |
## API documentation (Swagger)
Every endpoint is documented with OpenAPI 3:
- **Swagger UI** →
localhost — interactive, with *Try it out* on every operation
- **Raw spec** →
localhost
Operations are grouped into tags: **Authentication, Users, Project …