Jordan Ramos 845d843e71 feat(postgres): infrastructure setup and schema creation (tasks 1-2)
- Install pg (node-postgres) dependency
- Create backend/db.js connection pool module (max 10, auto-reconnect)
- Install Docker and spin up steam-postgres container on port 5433
- Create backend/db-schema.sql with complete Postgres DDL (24 tables)
- Replace findings_json blob with ivanti_findings table (individual rows)
- Merge notes/overrides into findings table columns
- Add proper indexes: state, bu_ownership, severity, composite
- Create backend/setup-postgres.js for idempotent schema initialization
- Add DATABASE_URL to .env and .env.example
- Update migration plan docs with Docker setup commands
- Verify: schema executes cleanly, pool connects, 24 tables created
2026-05-05 15:47:09 -06:00

STEAM Security Dashboard v1.0.0

A self-hosted vulnerability management dashboard for the NTS-AEO-STEAM and NTS-AEO-ACCESS-ENG business units. Centralises CVE tracking, Ivanti host finding triage, AEO compliance posture, FP/Archer/CARD exception workflows, and internal documentation in a single interface.

Quick Start

Prerequisites

  • Node.js 18+
  • Python 3 with python3-pandas and python3-openpyxl (for compliance xlsx parsing)

Install

git clone <repo-url>
cd cve-dashboard

# Backend dependencies
npm install

# Frontend dependencies
cd frontend && npm install && cd ..

# Python dependencies (Ubuntu/Debian)
apt install -y python3-pandas python3-openpyxl

Configure

cp backend/.env.example backend/.env
# Edit backend/.env — at minimum set SESSION_SECRET:
#   openssl rand -base64 32

See backend/.env.example for all available options including Ivanti API, Jira, and Atlas integration keys.

Initialize Database

node backend/setup.js

Creates the database with the complete schema and prints a one-time admin password. Save it.

Build and Run

# Build frontend
cd frontend && npm run build && cd ..

# Start servers
./start-servers.sh

Dashboard: http://localhost:3000 · API: http://localhost:3001

For persistent deployments, use the systemd services in systemd/. See the full manual for setup instructions.

Features

Feature Description
CVE Management Track CVEs across multiple vendors with document storage and NVD auto-fill
Reporting Ivanti host finding triage with donut charts, inline editing, advanced filtering, CSV/XLSX export
Ivanti Queue Personal staging list for batch FP, Archer, CARD, and Granite workflows
FP Workflow Submit false positive workflows directly to Ivanti API with attachments
Compliance Weekly AEO xlsx upload with diff preview, drift detection, per-team metric health cards
Archive Tracking Automatic detection of disappeared/returned findings with BU reassignment classification
Findings Trend Historical open vs closed chart with archive activity sparkline and shift reason tooltips
Jira Integration Create, sync, and track Jira Data Center tickets linked to CVE/vendor pairs
Archer Tickets Track risk acceptance exceptions (EXC numbers) linked to findings
CARD API Granite/CARD asset lookup integration for network device workflows
Knowledge Base Internal document library with inline PDF/Markdown viewing
Access Control Four user groups (Admin, Standard_User, Leadership, Read_Only) with full audit trail

Project Structure

cve-dashboard/
├── backend/
│   ├── server.js              # Express API server
│   ├── setup.js               # Database initialization (run once)
│   ├── routes/                # API route handlers
│   ├── helpers/               # API clients (Ivanti, Jira, Atlas, CARD)
│   ├── middleware/            # Auth middleware
│   ├── migrations/            # Schema migrations (for existing deployments)
│   └── scripts/               # Compliance parser, data import utilities
├── frontend/
│   ├── src/
│   │   ├── App.js             # Main app with routing
│   │   ├── components/        # React components
│   │   └── contexts/          # Auth context
│   └── public/
├── docs/
│   ├── api/                   # API specs (Ivanti, Atlas, Jira)
│   ├── design/                # Design system, workflow diagrams
│   ├── guides/                # User guides, full reference manual
│   ├── security/              # Security audits and remediation plans
│   ├── testing/               # Test plans and scripts
│   └── troubleshooting/       # Investigation scripts and reports
├── systemd/                   # systemd service files
├── start-servers.sh
└── stop-servers.sh

Tech Stack

Layer Technology
Backend Node.js 18+, Express 5, SQLite3
Frontend React 19, Recharts, Lucide React
Auth bcryptjs, cookie-based sessions, express-rate-limit
Compliance Python 3, pandas, openpyxl

Documentation

License

Internal use only — Charter Communications / NTS-AEO.


Designed and built by Jordan Ramos (jordan.ramos@spectrum.com)

Description
No description provided
Readme 20 MiB
Languages
JavaScript 98.5%
CSS 0.6%
Python 0.5%
Shell 0.3%
HTML 0.1%