Smart Contract Vulnerability Detection Platform
Features β’ Demo β’ Getting Started β’ API Reference β’ Deployment β’ Roadmap
Mandoscan is a comprehensive smart contract security analysis platform built with Next.js 15, React 19, and Tailwind CSS. It enables developers to upload Solidity smart contracts, analyze them for vulnerabilities using AI-powered detection, and visualize the results through interactive control flow graphs and detailed reports.
The platform detects 7 major vulnerability categories:
- π Access Control
- β Arithmetic Issues
- π« Denial of Service (DoS)
- π Front Running
- π Reentrancy
- β° Time Manipulation
β οΈ Unchecked Low-Level Calls
- File Upload: Drag-and-drop or browse to upload
.solfiles - AI-Powered Detection: Leverages machine learning models for accurate vulnerability detection
- Real-time Scanning: Get instant feedback on contract security status
- Control Flow Graphs: Visualize contract execution paths with interactive 2D/3D graphs
- Code Highlighting: Synchronized code viewer with vulnerability highlighting
- Node Inspection: Click on graph nodes to navigate directly to relevant code sections
- Detailed Bug Reports: JSON-formatted reports with severity levels and recommendations
- Export Options: Download reports in multiple formats (JSON, PDF, HTML)
- Historical Analysis: Track and compare scan results over time
- Secure Key Generation: Cryptographically secure API keys for programmatic access
- Scope-based Permissions: Fine-grained access control (scan:read, scan:write, ai:inference, etc.)
- Usage Tracking: Monitor API key usage and last access timestamps
- AWS Cognito Integration: Secure authentication with OAuth 2.0/OIDC
- JWT Token Verification: Secure API endpoint protection
- Key Hashing: API keys are hashed (SHA-256) before storage
Live App: https://mandoguru.com
| Category | Technology |
|---|---|
| Framework | Next.js 15.1.5 |
| Language | TypeScript 5.9.3 |
| Styling | Tailwind CSS 4.1.14 |
| UI Components | @heroui/react |
| Authentication | react-oidc-context + AWS Cognito |
| Visualization | react-force-graph |
| Code Display | react-syntax-highlighter |
| Charts | ApexCharts |
| Animation | Framer Motion |
| Code Quality | ESLint, Prettier |
- Node.js 18.0 or higher
- npm, yarn, or pnpm package manager
- Git for version control
-
Clone the repository
git clone git@github.com:MANDO-Project/mandoguru.git cd mandoguru -
Install dependencies
npm install # or yarn install # or pnpm install
-
Configure environment variables
Create a
.env.localfile in the root directory:# AWS Cognito Configuration NEXT_PUBLIC_COGNITO_AUTHORITY=https://cognito-idp.<region>.amazonaws.com/<user-pool-id> NEXT_PUBLIC_COGNITO_CLIENT_ID=your-client-id NEXT_PUBLIC_REDIRECT_URI=http://localhost:3000 NEXT_PUBLIC_LOGOUT_URI=http://localhost:3000 # API Configuration NEXT_PUBLIC_SCAN_API_BASE_URL=https://api.mandoguru.com
-
Start the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
| Command | Description |
|---|---|
npm run dev |
Start development server with hot reload |
npm run build |
Build for production |
npm run start |
Start production server |
npm run lint |
Run ESLint for code quality |
mandoscan/
βββ src/
β βββ app/ # Next.js App Router pages
β β βββ api/ # API routes
β β β βββ api-keys/ # API key management endpoints
β β β βββ files/ # File listing endpoint
β β β βββ scan/ # Contract scanning endpoint
β β β βββ upload/ # File upload endpoint
β β βββ dashboard/ # Dashboard pages
β β β βββ (admin)/
β β β βββ (others-pages)/
β β β βββ api-keys/ # API key management UI
β β β βββ api-reference/ # API documentation UI
β β β βββ profile/ # User profile
β β β βββ solidity/ # Contract upload & scan UI
β β βββ auth-provider.tsx # Cognito authentication provider
β β βββ layout.js # Root layout
β βββ components/ # React components
β β βββ api-keys/ # API key UI components
β β βββ auth/ # Authentication components
β β βββ common/ # Shared components
β β βββ ecommerce/ # Dashboard widgets
β β βββ form/ # Form components
β β βββ solidity/ # Solidity-specific components
β β βββ ui/ # Base UI components
β β βββ Graph.jsx # Force graph visualization
β β βββ VulnerabilityGrid.jsx
β βββ context/ # React context providers
β βββ hooks/ # Custom React hooks
β βββ icons/ # SVG icon components
β βββ layout/ # Layout components
β βββ lib/ # Utility functions & middleware
βββ public/ # Static assets
β βββ examples/ # Sample vulnerability reports
β βββ images/ # Image assets
βββ docs/ # Documentation
βββ data_backup/ # Sample contract data
βββ next.config.mjs # Next.js configuration
βββ tailwind.config.mjs # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
βββ package.json
https://api.mandoguru.com
All API requests require authentication using an API key or JWT token:
Authorization: Bearer YOUR_API_KEYPOST /api/upload
Content-Type: multipart/form-data
Authorization: Bearer <token>
file: <solidity-file.sol>
estimated_cost: 1POST /api/scan
Content-Type: application/json
Authorization: Bearer <api-key>
{
"contract_code": "pragma solidity ^0.8.0; ...",
"contract_name": "MyContract"
}GET /api/scan/{scan_id}
Authorization: Bearer <api-key>| Scope | Description |
|---|---|
scan:read |
Read scan results |
scan:write |
Submit contracts for scanning |
ai:inference |
Access AI detection services |
reports:read |
Read vulnerability reports |
reports:export |
Export reports (PDF, HTML) |
For complete API documentation, see docs/API_DOCUMENTATION.md.
- Push code to GitHub
- Connect repository to AWS Amplify
- Configure environment variables in Amplify Console
- Deploy
For detailed instructions, see AWS_AMPLIFY_DEPLOYMENT.md.
# Build the application
npm run build
# The build output is in the 'mando-tool' directory
# Deploy the contents to your hosting providerNEXT_PUBLIC_COGNITO_AUTHORITY=https://cognito-idp.<region>.amazonaws.com/<pool-id>
NEXT_PUBLIC_COGNITO_CLIENT_ID=<client-id>
NEXT_PUBLIC_REDIRECT_URI=https://your-domain.com
NEXT_PUBLIC_LOGOUT_URI=https://your-domain.com
NEXT_PUBLIC_SCAN_API_BASE_URL=https://api.mandoguru.com| Repository | Description |
|---|---|
| mandoscan_engine | Backend scanning engine and API server |
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ by the MANDO Project team