8bbfd90f48c6ce018d506d327d787b47da8e3b2c
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)
# 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
docker save cpas-tracker | gzip > cpas-tracker.tar.gz
Then follow README_UNRAID_INSTALL.md.
Update After Code Changes
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
- 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
Description
Languages
JavaScript
98.8%
Dockerfile
0.9%
HTML
0.3%