AI-powered phishing website detection platform that analyzes any website using multiple independent analysis engines, combines their outputs, and produces a final phishing verdict together with an explainable report.
SentinelAI follows Clean Architecture principles with four layers:
- Domain: Entities, interfaces, value objects
- Application: Use cases, DTOs, mappers
- Infrastructure: Implementations, external services, persistence
- Presentation: Controllers, guards, pipes, filters
- NestJS - Node.js framework
- TypeScript - Type-safe JavaScript
- Prisma - ORM for PostgreSQL
- BullMQ - Job queue for scan processing
- Playwright - Browser automation for crawling
- Tesseract.js - OCR engine
- Google Gemini - LLM for analysis
- Redis - Caching and queue broker
- Winston - Structured logging
- Next.js - React framework
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS
- shadcn/ui - Component library
- React Query - Data fetching
- React Hook Form - Form management
- Zod - Schema validation
- Recharts - Charting library
- Docker - Containerization
- Docker Compose - Multi-container orchestration
- NGINX - Reverse proxy
- PostgreSQL - Primary database
- Redis - Cache and queue
- MinIO - S3-compatible object storage
- Docker and Docker Compose
- Node.js 20+ (for local development)
# Clone the repository
git clone <repository-url>
cd SentinelAI
# Copy environment file
cp .env.example .env
# Start all services
docker-compose up -d
# Access the application
# Frontend: http://localhost:3001
# Backend API: http://localhost:3000
# API Docs: http://localhost:3000/api/docs
# MinIO Console: http://localhost:9001# Backend
cd backend
npm install
npx prisma generate
npx prisma migrate dev
npm run start:dev
# Frontend
cd frontend
npm install
npm run devPOST /api/auth/register- Register a new userPOST /api/auth/login- Login and get JWT tokenGET /api/auth/me- Get current user profile
POST /api/scan- Start a new scanGET /api/scan/:id- Get scan resultGET /api/scan/history- Get scan historyGET /api/scan/dashboard- Get dashboard dataGET /api/scan/export- Export scan history as JSON
GET /api/dashboard/overview- Get overview statisticsGET /api/dashboard/trend- Get risk trend dataGET /api/dashboard/top-domains- Get top risky domains
GET /api/history- Get scan history with filtersGET /api/history/:id- Get scan by IDGET /api/history/export- Export history (JSON/CSV)
SentinelAI/
├── backend/ # NestJS backend
│ ├── src/
│ │ ├── auth/ # Authentication module
│ │ ├── scan/ # Scan module
│ │ ├── analyzer/ # Analysis engines
│ │ │ ├── url-analyzer/
│ │ │ ├── html-analyzer/
│ │ │ ├── brand-detector/
│ │ │ ├── ocr-engine/
│ │ │ ├── llm-analyzer/
│ │ │ └── risk-engine/
│ │ ├── scanner/ # Web scraping infrastructure
│ │ ├── history/ # History module
│ │ ├── dashboard/ # Dashboard module
│ │ ├── common/ # Shared utilities
│ │ ├── database/ # Prisma database service
│ │ └── modules/ # NestJS module definitions
│ ├── prisma/
│ │ └── schema.prisma # Database schema
│ └── test/
├── frontend/ # Next.js frontend
│ ├── src/
│ │ ├── app/ # App Router pages
│ │ ├── components/ # React components
│ │ ├── lib/ # Utilities and API client
│ │ └── hooks/ # Custom React hooks
├── docker/ # Docker configurations
├── nginx/ # NGINX configuration
├── docker-compose.yml # Multi-container orchestration
└── .env.example # Environment variables template
MIT