PentestAI is a multi-tenant SaaS platform that converts static penetration test outputs into a continuous vulnerability intelligence system.
- Frontend (Next.js + Tailwind + Recharts): Dark-themed client portal and analytics dashboards.
- Backend API (Express + Prisma): Auth, RBAC, report ingestion, parsing, enrichment, remediation tracking, marketplace, and mock Jira sync.
- PostgreSQL: Tenant-isolated operational data.
- Redis (optional for MVP): Queue and async-ready design.
- File storage (local uploads/): Report intake abstraction designed to be replaced by S3.
- JWT authentication
- bcrypt password hashing
- role-based access control
- tenant-aware API filtering
- input validation with Zod
- secure upload file type and size checks
- audit logging
Current MVP runs as one deployable API with service modules; it is split for future microservice extraction:
- Identity Service (auth, JWT, RBAC)
- Ingestion Service (file upload + parser dispatch)
- Vulnerability Intelligence Service (normalization, enrichment, duplicate detection, risk scoring)
- Workflow Service (remediation, ticketing/Jira sync)
- Marketplace Service (pentest request lifecycle)
- Analytics Service (dashboard aggregates)
pentest-ai/
├── backend/
│ ├── prisma/
│ │ ├── schema.prisma
│ │ └── seed.ts
│ └── src/
│ ├── controllers/
│ ├── middleware/
│ ├── parsers/
│ ├── routes/
│ ├── services/
│ ├── types/
│ ├── utils/
│ └── index.ts
├── frontend/
│ ├── app/
│ │ ├── dashboard/
│ │ ├── reports/
│ │ ├── remediation/
│ │ ├── marketplace/
│ │ ├── future-ai/
│ │ └── login/
│ ├── components/
│ └── lib/
├── uploads/
│ └── samples/
└── README.md
Implemented tables:
- Users
- Organizations
- Projects
- Reports
- Vulnerabilities
- Assets
- Remediation
- Tickets
- ServiceRequest
- AuditLog
Includes enums for severity, role, service type, and remediation status.
POST /api/auth/registerPOST /api/auth/loginGET /api/dashboardGET /api/reportsPOST /api/reports/uploadGET /api/vulnerabilitiesPATCH /api/vulnerabilities/:id/statusPOST /api/vulnerabilities/:id/tickets/jiraGET /api/marketplacePOST /api/marketplace
- JWT includes
organizationId - middleware requires org context for non-platform-admin users
- data access queries scoped by
organizationId
- Professional cybersecurity dark UI with neon accents
- Dashboard cards + charts:
- severity distribution (pie)
- risk trend (line)
- asset exposure map (bar)
- Reports page
- Remediation tracker
- Marketplace catalog
- Future autonomous AI pentesting roadmap page
Parsers implemented in backend:
- Nmap XML
- Nessus XML
- Generic JSON
- Generic XML
- PDF regex extraction
Supports accepted formats for MVP flow and extension points for Burp, Qualys, OpenVAS, ZAP, Nikto, DOCX/CSV/HTML.
Seed data includes:
- SQL Injection
- Cross-Site Scripting
- Open Port
- Weak TLS Configuration
Each finding is enriched with mapping data (CWE/CVE/OWASP/MITRE/CAPEC where available), risk-scored 0-100, and linked to assets/projects/reports.
- Node.js 20+
- PostgreSQL
- Redis (optional)
cp backend/.env.example backend/.env
cp frontend/.env.local.example frontend/.env.local
npm install
npm run prisma:generate -w backend
npm run prisma:migrate -w backend -- --name init
npm run seed
npm run devFrontend: http://localhost:3000
Backend: http://localhost:4000
Login with seeded user:
admin@acme-sec.comChangeMe123!
Then open /login, authenticate, and dashboard data will load from backend APIs.