ReconaGraph is a web-based OSINT (Open Source Intelligence) platform designed to investigate and visualize relationships between digital assets like domains and emails. It leverages various external APIs to enrich targets, stores the findings, and presents them in an actionable, prioritized dashboard.
This repository contains the complete, Dockerized local development environment for the platform.
- Multi-Source Enrichment: Gathers data from over a dozen public APIs (VirusTotal, Shodan, GitHub, Ahmia, etc.).
- Asynchronous Scanning: Executes all API modules concurrently for fast, non-blocking scans.
- Robust & Safe: Features built-in, per-module rate limiting to prevent API key throttling and a simple cache to avoid redundant lookups.
- Interactive Dashboard: A modern, "tech-themed" dark-mode UI built with React and Vite.
- Prioritized Findings: Automatically classifies results as "Critical," "Warning," or "Info" to help focus investigations.
- Data Visualization: Includes an interactive graph view (via Cytoscape.js) to explore relationships between discovered entities.
- Persistent Storage: Uses PostgreSQL for scan history/auditing and Neo4j for graph-based relationship storage.
- Turnkey Local Development: The entire stack (frontend, backend, databases) is orchestrated with a single
docker-composecommand.
The application runs as a multi-container setup managed by Docker Compose.
- Docker and Docker Compose
-
Clone the repository:
git clone <repository-url> cd reconagraph
-
Configure Environment: Copy the environment template to a new
.envfile.cp .env.template .env
Open the
.envfile and populate it with your credentials for the databases and any API keys for the enrichment modules you wish to use. Modules with missing keys will be gracefully skipped. -
Build and Run the Application:
docker-compose up --build
This command will build the frontend and backend images, download the database images, and start all services.
-
Access the Application:
- ReconaGraph UI: http://localhost:3000
- Neo4j Browser: http://localhost:7474 (Use credentials from your
.envfile)
The first time you run the application, the backend will automatically create the necessary tables in the PostgreSQL database.
.
├── backend/ # FastAPI application
│ ├── app/
│ │ ├── db/ # SQLAlchemy models & migrations (Alembic)
│ │ ├── graph/ # Neo4j connector and queries
│ │ ├── modules/ # All OSINT enrichment modules
│ │ └── ratelimits.py # Centralized rate-limiting config
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/ # Vite + React application
│ ├── src/
│ │ ├── components/ # Reusable React components
│ │ ├── lib/ # Core UI logic (severity processing)
│ │ └── App.tsx # Main dashboard component
│ ├── Dockerfile
│ ├── tailwind.config.js
│ └── package.json
├── .env.template # Template for environment variables
├── .gitignore
└── docker-compose.yml # Docker Compose orchestration file
This project is licensed under the MIT License. See the LICENSE file for details.
