A web application for tracking NIST 800-171 compliance and generating System Security Plans (SSP) for CMMC Level 2 certification.
Tech Stack:
- Frontend: React 18, React Router 6
- Backend: Node.js, Express
- Database: PostgreSQL 15
- ORM: Prisma
- Document Generation: docx
- Containerization: Docker
Created a full browser-based SSP preview that renders the complete System Security Plan document matching the IntelliGRC template style.
New File: client/src/pages/SSPPreview.js
Features:
- Cover page with system name
- Record of Changes table
- Approvals/signature section
- Introduction section
- Section 1: Information System Name
- Section 2: System Roles & Responsibilities with role definitions
- Section 3: Information System Details
- Operational Status (checkboxes)
- Information System Type
- System Environment Description
- System Data Types with CIA impact ratings
- Overall System Categorization (CIA)
- System Interconnections
- Related Laws, Regulations & Policies
- Physical Locations & Security
- Security Control Selection summary
- Section 4: Minimum Security Controls
- SPRS Score display
- Compliance pie charts per control family
- Expandable/collapsible control tables
- Section 5: POA&M Summary
- Print-ready styling with cyan headers (matching IntelliGRC)
- Dark mode support
Access: Reports page > "View Full SSP Preview" button, or /ssp-preview
New Models Added:
| Model | Purpose |
|---|---|
Personnel |
Roles & responsibilities (name, role, title, email, phone, roleDefinition) |
DataType |
System data types with CIA impact ratings |
PhysicalLocation |
Physical locations and security measures |
Interconnection |
External system connections |
LawRegulation |
Applicable laws, regulations, policies |
SSPVersion |
Record of changes/version history |
Enhanced Models:
SystemInfo - Added:
uniqueIdentifier- System unique ID (e.g., "GoG-IS")operationalStatus- OPERATIONAL, UNDER_DEVELOPMENT, MAJOR_MODIFICATIONsystemType- e.g., "General Support System"systemTypeDescriptionenvironmentDescriptionconfidentialityLevel,integrityLevel,availabilityLevel- CIA ratingsoverallCategorizationsystemDiagramPath,dataFlowDiagramPath
Assessment - Added:
findings- Assessment findingsrecommendations- Recommendations for improvementvalidationMethods- Artifacts/methods used to validate
SSP Data:
GET /api/ssp/full-data- Returns all SSP data for browser preview
Personnel CRUD:
POST /api/system-info/personnelPUT /api/system-info/personnel/:idDELETE /api/system-info/personnel/:id
Data Types CRUD:
POST /api/system-info/data-typesPUT /api/system-info/data-types/:idDELETE /api/system-info/data-types/:id
Physical Locations CRUD:
POST /api/system-info/physical-locationsPUT /api/system-info/physical-locations/:idDELETE /api/system-info/physical-locations/:id
Interconnections CRUD:
POST /api/system-info/interconnectionsPUT /api/system-info/interconnections/:idDELETE /api/system-info/interconnections/:id
Laws & Regulations CRUD:
POST /api/system-info/laws-regulationsPUT /api/system-info/laws-regulations/:idDELETE /api/system-info/laws-regulations/:id
SSP Versions CRUD:
POST /api/system-info/ssp-versionsDELETE /api/system-info/ssp-versions/:id
After pulling the latest code, run:
cd server
npx prisma migrate dev --name add_ssp_models- System Info Page UI - Add forms to manage the new models (Personnel, DataTypes, Locations, etc.)
- Diagram Upload - Allow uploading system and data flow diagrams
- Assessment Objectives - Break down practices into individual assessment objectives ([a], [b], [c]) like in the IntelliGRC template
- PDF Export - Direct PDF generation in addition to Word export
- Table of Contents - Auto-generated TOC for the SSP document
| File | Description |
|---|---|
server/prisma/schema.prisma |
Database schema with all models |
server/src/index.js |
All API endpoints |
client/src/pages/SSPPreview.js |
SSP browser preview component |
client/src/pages/Reports.js |
Reports page with SSP actions |
client/src/pages/SystemInfo.js |
System info editing page |
client/src/index.css |
All styling including SSP preview styles |
docker-compose up -d
# Frontend: http://localhost:3000
# Backend: http://localhost:5000# Terminal 1 - Server
cd server
npm install
npx prisma migrate dev
npm run db:seed # First time only
npm run dev
# Terminal 2 - Client
cd client
npm install
npm startExtractPage1.pdf- Example SSP template from IntelliGRC (used as reference for styling)ExtractPage1.txt- Text extraction from the PDF
6c2e654- Add SSP browser preview and enhanced data models4a8f0ce- Fix SSP preview API response property namesa30a872- Add comprehensive README with documentation1293fca- Add SSP generation feature with template-assisted implementation statements