Local-first security scanning for learning, experimentation, and ethical pentesting workflows.
SecuScan is an open source, plugin-driven platform for running security scans from your own machine. It combines a FastAPI backend, a React frontend, and a growing plugin system for recon, web, cloud, container, and reporting workflows.
The project is designed to be:
- Local-first: scan data stays on infrastructure you control.
- Contributor-friendly: frontend, backend, plugins, and docs all have clear entry points.
- Safety-aware: the product is built around ethical and learning-oriented usage.
- Students and GSSoC contributors who want a real-world full-stack open source security project.
- Security learners who want a UI-backed toolkit instead of only raw CLI flows.
- Developers and researchers who want to extend scanners, parsers, reports, or workflow automation.
- Scan orchestration and API flows in
backend/secuscan - React UI and dashboard experience in
frontend/src - Plugin metadata and parser integrations in
plugins - Reports, exports, and result normalization across backend and frontend
backend/: FastAPI app, execution logic, database/config, plugin loading, workflowsfrontend/: React + Vite app, routes, pages, shared components, and test configplugins/: scanner metadata, parser code, and plugin-specific helperstesting/backend/: Python unit and integration tests plus backend test scriptsfrontend/testing/: frontend unit and end-to-end test filesdocs/: supporting project documentationscripts/: helper scripts for signing, benchmarking, and maintenance
For a fresh local setup, make sure your machine has:
python33.11 or newer- Node.js 20 or newer
- npm 10 or newer
- Docker Desktop or Docker Engine if you want the Compose workflow
If your machine has multiple Python versions installed, ./setup.sh now looks for a compatible python3 automatically. You can also force one explicitly with PYTHON=/path/to/python3.11 ./setup.sh.
The scripted local setup path was re-checked from a fresh clone with a compatible Python 3.11+ interpreter.
Choose one local development path.
This is the fastest way to get the app running for UI or backend contributions from a fresh clone.
git clone https://github.com/utksh1/SecuScan.git
cd SecuScan
chmod +x setup.sh start.sh
./setup.sh
./start.shAfter startup:
- Frontend:
http://127.0.0.1:5173 - Backend API:
http://127.0.0.1:8000 - Swagger docs:
http://127.0.0.1:8000/docs
Use this if you want the containerized app stack with Postgres and Redis.
git clone https://github.com/utksh1/SecuScan.git
cd SecuScan
docker compose up --buildAfter startup:
- Frontend:
http://127.0.0.1:5173 - Backend API:
http://127.0.0.1:8081
Python version:
python3in these commands must resolve to 3.11 or newer. If your system default is older, substitute the full path (e.g.python3.11,python3.12) or usePYTHON=/path/to/python3.11 ./setup.shinstead. Runpython3 --versionto check.
cp .env.example .env
python3 -m venv venv
source venv/bin/activate
pip install -r backend/requirements.txt
pip install -r backend/requirements-dev.txt
python3 -m uvicorn backend.secuscan.main:app --reload --host 127.0.0.1 --port 8000cd frontend
npm install
npm run dev -- --host 127.0.0.1 --port 5173./testing/test_python.shcd frontend
npm run testcd frontend
npm run e2eIf this is your first contribution, start with one of these areas:
- Docs: improve setup steps, fix outdated instructions, or clarify contributor guidance.
- Frontend polish: small UI fixes, loading states, empty states, and test coverage.
- Backend cleanup: validation, API consistency, workflow edge cases, and unit tests.
- Plugins: metadata fixes, parser improvements, and result normalization.
Good first places to read before coding:
Before opening a pull request:
- Fork the repo and branch from
main. - Pick an issue or discuss the change before starting large work.
- Keep pull requests scoped and include tests when behavior changes.
- Update docs if you change setup, APIs, workflows, or contributor-facing behavior.
Detailed contributor expectations live in CONTRIBUTING.md.
Long-form product and planning material lives outside the main README so onboarding stays readable:
- Backend: FastAPI, Pydantic, Uvicorn, SQLite/Postgres, Redis
- Frontend: React 18, TypeScript, Vite, Vitest, Playwright
- Plugins: metadata-driven scanner integrations and parser modules
For questions, contributor coordination, onboarding help, or setup issues, use GitHub Issues.
For responsible disclosure of security issues, follow the private reporting guidance in SECURITY.md.
SecuScan is intended for authorized security testing, education, and research. Do not use it against systems you do not own or explicitly have permission to assess.
This project is released under the MIT License.
LICENSEis the canonical legal text for this repository.- Contributions merged into this repository are distributed under the same MIT License unless explicitly stated otherwise.
- Third-party tools, libraries, and external scanners referenced by SecuScan may have their own licenses and usage terms. Check upstream projects before redistributing bundled integrations.
