Open-source email threat intelligence platform with a customizable SOC dashboard
DeepMail unifies threat detection, sandboxing, MITRE ATT&CK mapping, and incident response into a single browser-based dashboard -- eliminating the need for fragmented security tools.
| Main Dashboard | Email Inbox | Geo Threat Map |
![]() |
![]() |
![]() |
| Sandbox Queue | Cases Kanban | Landing Page |
![]() |
![]() |
![]() |
- Real-time threat monitoring with live WebSocket updates
- Severity breakdown with donut charts
- Threat volume timeline with grouped bar charts
- Top alert categories and malicious senders tracking
- Geo threat map with MapLibre GL clustering and arc visualization
- MITRE ATT&CK heatmap mapping detections to techniques
- Active IOCs (Indicators of Compromise) tracking
- n8n-style workflow graphs for investigation pipelines
- 3-panel resizable email client (sidebar, mail list, mail detail)
- Real-time WebSocket updates for new emails
- Keyboard shortcuts for power users
- Compose modal with rich text editing
- XState-driven task lifecycle (PENDING, RUNNING, COMPLETED, FAILED)
- File analysis with progress bars and verdict indicators
- Worker node infrastructure monitoring
- Integration with VirusTotal, GreyNoise
- 22+ widgets across 5 categories (Core, Intelligence, Operational, Sandbox, Platform)
- Drag-and-drop grid layout with react-grid-layout
- Role-based templates (Administrator, Analyst)
- Persistent layouts via localStorage
- Widget marketplace for extensibility
- JWT-based authentication with OTP verification
- Role-based access control
- API key management
- Security settings (2FA, session management)
- Bun (package manager)
- Backend services running (see root README)
# Clone the repository
git clone https://github.com/DeepMail-org/dashboard.git
cd deepmail-dashboard
# Install dependencies
bun install
# Configure environment
cp .env.example .env.local
# Edit .env.local with your backend URLs
# Start development server
bun dev| Category | Technology |
|---|---|
| Framework | Next.js 16, React 19, TypeScript 5.9 |
| Styling | Tailwind CSS v4 |
| State Management | Zustand 5 (persisted stores) |
| Server State | TanStack React Query 5 |
| Charts | ECharts 6, Recharts 3 |
| Grid Layout | react-grid-layout |
| Maps | MapLibre GL |
| 3D / Globe | Three.js, cobe |
| Animation | Framer Motion, GSAP |
| UI Primitives | Radix UI, shadcn/ui |
| Package Manager | Bun |
src/
├── app/ # Next.js App Router routes
│ ├── (marketing)/ # Public pages (landing, auth, payments)
│ └── (dashboard)/ # Authenticated app pages
├── components/
│ ├── layout/ # App shell, sidebar, topbar
│ ├── dashboard/ # Widget grid, marketplace, command palette
│ ├── widgets/ # 22+ widget components
│ └── ui/ # Reusable UI primitives (shadcn/ui)
├── stores/ # Zustand stores (auth, dashboard, mail, etc.)
├── hooks/ # Custom React hooks
├── lib/ # Utilities, API client, WebSocket manager
└── public/ # Static assets (logos, favicons)
Contributions are welcome. Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
Follow the existing code style (ESLint + TypeScript strict mode).
MIT License - see LICENSE for details.





