2026-03-06 14:42:12 -06:00
2026-03-06 13:56:36 -06:00
2026-03-06 14:38:43 -06:00
2026-03-06 11:33:32 -06:00
2026-03-06 14:11:19 -06:00
2026-03-06 12:19:55 -06:00
2026-03-06 11:33:32 -06:00
2026-03-06 14:42:12 -06:00

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
No description provided
Readme 211 KiB
Languages
JavaScript 98.8%
Dockerfile 0.9%
HTML 0.3%