Argus is a full-stack platform that discovers external assets, analyzes risk, and provides real-time monitoring with executive-ready reporting.
- Automated asset discovery and attack surface mapping
- Risk scoring across exposure, exploitability, and business impact
- Real-time scan updates via Socket.IO
- Reports export in JSON and PDF
- User authentication with JWT and optional 2FA
- API key management for programmatic access
- Backend: Node.js, Express, Sequelize, PostgreSQL, Socket.IO
- Frontend: React, TypeScript, Vite, Tailwind CSS, React Query, Recharts
- Auth: JWT, bcrypt, speakeasy (2FA)
- Reports: PDFKit
- Email: Nodemailer (optional)
Argus/
├── backend/
│ ├── server.ts
│ ├── config/
│ ├── controllers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── services/
│ └── utils/
├── frontend/
│ ├── src/
│ ├── public/
│ └── vite.config.ts
├── docker-compose.yml
├── DEPLOYMENT_GUIDE.md
└── README.md
- Node.js 18+
- PostgreSQL (local or managed, e.g. Supabase)
cd backend
npm install
npm run devThe API listens on http://localhost:3001 by default and exposes a health check at /health.
cd frontend
npm install
npm run devThe Vite dev server defaults to http://localhost:5173.
PORT(default3001)DATABASE_URL(PostgreSQL connection string)JWT_SECRET(required)EMAIL_USER(optional)EMAIL_PASS(optional)FRONTEND_URL(used for CORS and Socket.IO)DB_SSL_REJECT_UNAUTHORIZED(optional, set tofalseto disable strict TLS)SSL_SCAN_REJECT_UNAUTHORIZED(optional, set tofalseto allow invalid certs in scan)
VITE_API_BASE_URL(e.g.http://localhost:3001/apior your deployed API URL)
POST /api/auth/registerPOST /api/auth/loginPOST /api/auth/login/2faGET /api/auth/mePOST /api/auth/2fa/generatePOST /api/auth/2fa/verifyPOST /api/auth/api-keysGET /api/auth/api-keysDELETE /api/auth/api-keys/:id
POST /api/analyzeGET /api/analysesGET /api/analyses/:idGET /api/analyses/:id/exportGET /api/analyses/:id/export/pdf
All analysis endpoints require a Bearer token in the Authorization header.
See DEPLOYMENT_GUIDE.md for Render and Vercel deployment steps.
- Passwords are hashed with bcrypt
- JWT tokens are used for auth
- Rate limiting is enabled for auth and analysis endpoints
- Schema updates are handled via migrations; set
DB_SYNC=trueonly for local development
ISC License