# CPAS Violation Tracker Single-container Dockerized web app for CPAS violation documentation. Built with React + Vite (frontend), Node.js + Express (backend), SQLite (database). ## The only requirement on your machine: Docker Desktop Everything else — Node.js, npm, React build — happens inside Docker. --- ## Quickstart (Local) ```bash # 1. Build the image (installs all deps + compiles React inside Docker) docker build -t cpas-tracker . # 2. Run it docker run -d --name cpas-tracker \ -p 3001:3001 \ -v cpas-data:/data \ cpas-tracker # 3. Open # http://localhost:3001 ``` ## Export for Unraid ```bash docker save cpas-tracker | gzip > cpas-tracker.tar.gz ``` Then follow README_UNRAID_INSTALL.md. ## Update After Code Changes ```bash docker build -t cpas-tracker . docker stop cpas-tracker && docker rm cpas-tracker docker run -d --name cpas-tracker -p 3001:3001 -v cpas-data:/data cpas-tracker ``` ## Project Structure ``` cpas-violation-tracker/ ├── Dockerfile # Multi-stage: builds React + runs Express ├── .dockerignore ├── package.json # Backend (Express) deps ├── server.js # API + static file server ├── db/ │ ├── schema.sql # Tables + 90-day score view │ └── database.js # SQLite connection └── client/ # React frontend (Vite) ├── package.json ├── vite.config.js ├── index.html └── src/ ├── main.jsx ├── App.jsx ├── data/ │ └── violations.js # All CPAS violation definitions └── components/ └── ViolationForm.jsx ``` ## Phases - [x] Phase 1 — Container scaffold, SQLite schema, base React form - [ ] Phase 2 — Employee history, prior violation highlighting - [ ] Phase 3 — Puppeteer PDF generation - [ ] Phase 4 — Dashboard, CPAS scores, tier warnings - [ ] Phase 5 — Recidivist point auto-suggest