How sanjayd11/codesentry works
SentinelAI is a full-stack security-analysis platform. A user organizes source code into projects, uploads files or ZIP archives, starts a scan, reviews findings, optionally requests AI explanations or fixes, and downloads a PDF report. The backend also supports authentication, dashboards, chat, administration, and project history. The README documents the upload-to-scan-to-enrichment flow; sampled analyzer code confirms rule-based detection and ZIP discovery. Several service and controller implementations were not sampled, so uncertain internal calls are omitted.
Main entry points: api API Clients · repository Repositories · ScanServiceImpl.java Scan Service · AiEnrichmentServiceImpl.java AI Enrichment
Components 26
Frontend
- App Views
frontend/src/pages - Upload UI
frontend/src/pages/scanner/SourceCodeScanner.jsx - Security Chat
frontend/src/pages/chat/SecurityChat.jsx - Reports UI
frontend/src/pages/reports/Reports.jsx - API Clients
frontend/src/api
API Layer
- Auth API
src/main/java/com/sanjay/aisecurity/controller/AuthController.java - Project API
src/main/java/com/sanjay/aisecurity/controller/ProjectController.java - Upload API
src/main/java/com/sanjay/aisecurity/controller/UploadController.java - Scan API
src/main/java/com/sanjay/aisecurity/controller/ScanController.java - AI API
src/main/java/com/sanjay/aisecurity/controller/AiEnrichmentController.java - Report API
src/main/java/com/sanjay/aisecurity/controller/ReportController.java
Backend Services
- Authentication
src/main/java/com/sanjay/aisecurity/service/AuthService.java - Upload Service
src/main/java/com/sanjay/aisecurity/service/UploadServiceImpl.java - Scan Service
src/main/java/com/sanjay/aisecurity/service/ScanServiceImpl.java - AI Enrichment
src/main/java/com/sanjay/aisecurity/service/AiEnrichmentServiceImpl.java - Chat Service
src/main/java/com/sanjay/aisecurity/service/ChatbotServiceImpl.java - Report Service
src/main/java/com/sanjay/aisecurity/service/ReportServiceImpl.java
Analysis Engine
- ZIP Discovery
src/main/java/com/sanjay/aisecurity/analyzer/pipeline/FileDiscoveryService.java - Scanner Manager
src/main/java/com/sanjay/aisecurity/analyzer/ScannerManager.java - Dynamic Rules
src/main/java/com/sanjay/aisecurity/analyzer/DynamicRuleEngine.java - Language Rules
src/main/java/com/sanjay/aisecurity/analyzer
Persistence
- Repositories
src/main/java/com/sanjay/aisecurity/repository - Domain Records
src/main/java/com/sanjay/aisecurity/entity
Other components
- User
- MySQL
- LLM Providers
Connections 30
- User → App Views: uses
- User → Upload UI: submits code
- Upload UI → API Clients: sends upload
- App Views → API Clients: requests data
- Security Chat → API Clients: sends prompts
- Reports UI → API Clients: requests reports
- API Clients → Auth API: calls auth
- API Clients → Project API: calls projects
- API Clients → Upload API: calls upload
- API Clients → Scan API: starts scans
- API Clients → AI API: requests enrichment
- API Clients → Report API: requests reports
- Auth API → Authentication: delegates auth
- Authentication → Repositories: persists accounts
- Upload API → Upload Service: delegates upload
- Upload Service → Repositories: stores file records
- Scan API → Scan Service: triggers scan
- Scan Service → ZIP Discovery: discovers ZIP files
- Scan Service → Scanner Manager: selects scanners
- Scanner Manager → Dynamic Rules: runs rules
- Scanner Manager → Language Rules: runs rules
- Scan Service → Repositories: stores findings
- AI API → AI Enrichment: triggers enrichment
- AI Enrichment → LLM Providers: queries models
- AI Enrichment → Repositories: updates findings
- Security Chat → Chat Service: asks questions
- Report API → Report Service: requests PDF
- Report Service → Repositories: reads findings
- Repositories → Domain Records: maps records
- Repositories → MySQL: reads and writes