A web application for tracking NIST 800-171 compliance and generating System Security Plans (SSP) for CMMC (Cybersecurity Maturity Model Certification) Level 2 certification.
- SPRS Score Gauge - Visual representation of your Supplier Performance Risk System score (-203 to 110)
- Compliance Donut Chart - At-a-glance view of implementation status across all practices
- Control Family Heatmap - Color-coded grid showing compliance by family (AC, AT, AU, etc.)
- Level Progress Bars - Track Level 1 vs Level 2 practice completion
- POA&M Summary - Quick view of open, in-progress, and delayed action items
- Overdue Alerts - Highlighted list of POA&Ms past their due date
- Dark Mode - Toggle between light and dark themes
- Browse all 110 NIST 800-171 practices organized by control family
- Filter by CMMC Level (1 or 2) and assessment status
- Detailed view for each practice with:
- Full description and discussion text
- Assessment status tracking (Not Started, In Progress, Implemented, N/A)
- Implementation statement editor with template loading
- POA&M creation and tracking
- Evidence file uploads
- System Info Page - Configure organization details, key personnel, system architecture, and CUI types
- Template-Assisted Statements - Pre-written implementation templates for all Level 1 practices
- SSP Preview - Review statistics and warnings before generating
- Word Export - Generate formatted .docx documents with:
- System identification section
- Control implementation details by family
- POA&M summary table
- Create and track Plans of Action & Milestones
- Priority levels (Low, Medium, High, Critical)
- Status tracking (Open, In Progress, Completed, Delayed, Cancelled)
- Milestone tracking with due dates
- Filter and sort capabilities
- SPRS score calculation with gap analysis
- Compliance breakdown by control family
- Exportable reports (print, Word document)
| Component | Technology |
|---|---|
| Frontend | React 18, React Router 6 |
| Backend | Node.js, Express |
| Database | PostgreSQL 15 |
| ORM | Prisma |
| Document Generation | docx |
| Containerization | Docker |
| CI/CD | GitHub Actions |
The easiest way to run the application is using Docker Compose:
# Clone the repository
git clone https://github.com/clucraft/cmmc.git
cd cmmc
# Start all services
docker-compose up -d
# The application will be available at:
# - Frontend: http://localhost:3000
# - Backend API: http://localhost:5000Docker images are automatically built and published to GitHub Container Registry:
# Pull the latest images
docker pull ghcr.io/clucraft/cmmc/client:latest
docker pull ghcr.io/clucraft/cmmc/server:latest- Node.js 18+
- PostgreSQL 15+
- npm or yarn
- Create a PostgreSQL database:
CREATE DATABASE cmmc;
CREATE USER cmmc WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE cmmc TO cmmc;- Set the database URL environment variable:
export DATABASE_URL="postgresql://cmmc:your_password@localhost:5432/cmmc"cd server
# Install dependencies
npm install
# Run database migrations
npx prisma migrate deploy
# Seed the database with NIST 800-171 practices
npm run db:seed
# Start the development server
npm run devcd client
# Install dependencies
npm install
# Start the development server
npm start| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Required |
PORT |
Server port | 5000 |
NODE_ENV |
Environment (development/production) | development |
| Variable | Description | Default |
|---|---|---|
REACT_APP_API_URL |
Backend API URL | Auto-detected |
GET /api/practices- List all practicesGET /api/practices/:id- Get practice detailsPUT /api/assessments/:practiceId- Update assessment
GET /api/poams- List all POA&MsPOST /api/poams- Create POA&MPUT /api/poams/:id- Update POA&MDELETE /api/poams/:id- Delete POA&M
POST /api/practices/:id/evidence- Upload evidence fileGET /api/evidence/:id/download- Download evidence fileDELETE /api/evidence/:id- Delete evidence
GET /api/reports/sprs-score- Get SPRS score and gapsGET /api/reports/compliance-by-family- Get compliance by familyGET /api/dashboard/stats- Get dashboard statistics
GET /api/system-info- Get system informationPUT /api/system-info- Update system informationGET /api/ssp/preview- Preview SSP data and warningsGET /api/ssp/generate/docx- Generate SSP Word document
cmmc/
├── client/ # React frontend
│ ├── src/
│ │ ├── pages/ # Page components
│ │ │ ├── Dashboard.js
│ │ │ ├── Practices.js
│ │ │ ├── PracticeDetail.js
│ │ │ ├── POAMs.js
│ │ │ ├── Reports.js
│ │ │ └── SystemInfo.js
│ │ ├── App.js # Main app with routing
│ │ └── index.css # Global styles
│ └── Dockerfile
├── server/ # Express backend
│ ├── src/
│ │ ├── index.js # API routes
│ │ └── seed.js # Database seeder
│ ├── prisma/
│ │ ├── schema.prisma # Database schema
│ │ └── migrations/ # Database migrations
│ └── Dockerfile
├── docker-compose.yml # Docker orchestration
└── .github/
└── workflows/
└── docker-publish.yml # CI/CD pipeline
- ControlFamily - 14 NIST 800-171 control families
- Practice - 110 security practices with implementation templates
- Assessment - Status and implementation statements per practice
- POAM - Plans of Action & Milestones with milestones
- Evidence - Uploaded artifacts linked to practices
- SystemInfo - Organization and system details for SSP
- Create a
docker-compose.ymlwith the configuration from this repo - Update passwords and ports as needed
- Run
docker-compose up -d
# Pull latest images
docker-compose pull
# Restart services
docker-compose up -d
# Run any new migrations (if needed)
docker-compose exec server npx prisma migrate deployThis application tracks compliance with:
- NIST SP 800-171 Rev 2 - Protecting Controlled Unclassified Information in Nonfederal Systems
- CMMC 2.0 - Cybersecurity Maturity Model Certification
- Level 1: 17 practices (basic cyber hygiene)
- Level 2: 110 practices (full NIST 800-171)
The Supplier Performance Risk System (SPRS) score ranges from -203 (no implementation) to 110 (full compliance). Each unimplemented practice deducts points based on its security weight.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- NIST for the 800-171 framework
- DoD for CMMC requirements
- The open source community