A professional, production-ready P2P network visualization platform for cryptocurrency blockchains. Monitor your network's health, discover nodes worldwide, and provide transparency to your community.
π Fork-Ready | β‘ Real-time Updates | π Global Node Discovery | π¨ Fully Customizable
- Real-time Node Discovery: Bitcoin P2P protocol crawler with recursive peer discovery from DNS seeds
- Interactive Geolocation Map: Leaflet-powered map with clustering, filtering, and node details
- Performance Metrics: Node tiers (Diamond/Gold/Silver/Bronze) based on uptime, latency, and reliability
- Node Verification: Prove node ownership via message signing, DNS TXT records, HTTP binary challenge, or user agent tags
- Bot Protection: Cloudflare Turnstile CAPTCHA for API endpoints (privacy-friendly, invisible verification)
- Operator Profiles: Custom branding with avatars, descriptions, and social links for verified nodes
- Node Alerts: Email and Discord webhook notifications for node status changes (offline/online, version outdated, tier changes)
- API Keys: Programmatic access with scoped permissions, rate limiting, and key rotation
- Admin Dashboard: Moderation queue, user management, audit logs, and system settings
See AtlasP2P in action:
- Dingocoin Network: nodes.dingocoin.com - First deployment of AtlasP2P
π New users: See docs/GETTING_STARTED.md for complete guide!
# 1. Clone repository
git clone https://github.com/RaxTzu/AtlasP2P.git
cd AtlasP2P
# 2. Choose deployment mode:
# Option A: Local Docker (Full Stack - Recommended)
make setup-docker # Creates .env from template
make docker-dev # Starts PostgreSQL + Supabase + Web + Crawler
# Option B: Cloud Supabase (Production-Ready)
make setup-cloud # Creates .env from template
# Edit .env with your Supabase Cloud credentials
make cloud-dev # Starts Web + Crawler onlyWhat just happened?
make setup-dockercopied.env.docker.exampleβ.envmake setup-dockercopiedproject.config.yaml.exampleβproject.config.yaml- Both files are gitignored for upstream development
Forking? Use make setup-fork for guided fork setup!
- Customize
config/project.config.yamlfor your blockchain - Commit with
git add -f config/project.config.yaml - See FORKING.md for complete instructions
Access locally (default ports - configurable via .env):
- Web App: http://localhost:4000
- Supabase Studio: http://localhost:4022 (Docker mode only)
- API: http://localhost:4020 (Docker mode only)
- Inbucket (email testing): http://localhost:4023 (Docker mode only)
Port Configuration: All ports are configurable in .env via WEB_PORT, KONG_PORT, DB_PORT, STUDIO_PORT, etc. See .env.example for full list.
# 1. Configure domain in .env
DOMAIN=nodes.yourcoin.org
[email protected]
# 2. Deploy with auto-SSL
make prod-docker # Self-hosted (full stack)
# OR
make prod-cloud # Cloud Supabase + Docker appAccess: https://nodes.yourcoin.org (Caddy handles SSL certificates automatically)
Configure once, deploy forever with our GitHub Actions workflow:
# 1. Setup deployment workflow (forks only)
make setup-deploy
# 2. Configure deployment in config/project.config.yaml
deployment:
mode: self-hosted-docker # or self-hosted-cloud
registry:
type: ghcr # or ecr
caddy:
mode: auto # auto-detects infrastructure
secrets:
source: auto # AWS SSM, GitHub Secrets, or manual
# 3. Add GitHub Variables and Secrets
# Settings β Secrets and variables β Actions
DEPLOY_USER, SSH_HOST, DEPLOY_PATH, SSH_PRIVATE_KEY
# 3. Push to master - automatic deployment!
git push origin masterFeatures:
- β Auto-detects Caddy (container/host/none)
- β Auto-detects secrets management (SSM/GitHub/manual)
- β Health checks with automatic rollback
- β Database backups before deployment
- β Multi-secrets sources (AWS Parameter Store, GitHub Secrets, manual .env)
See: docs/CICD.md for complete automated deployment guide
Frontend:
- Next.js 16 - React framework with App Router
- React 19 - UI library
- TypeScript - Type safety
- Tailwind CSS 4 - Styling
- Leaflet + Leaflet.markercluster - Interactive maps
- Recharts - Charts and statistics
- Zustand - State management
Backend:
- Supabase - PostgreSQL database, REST API, Authentication, Real-time subscriptions
- PostgREST - Auto-generated REST API from database schema
- Kong - API Gateway for request routing
Crawler:
- Python 3.12 with asyncio - Bitcoin P2P protocol implementation
- MaxMind GeoIP2 - IP geolocation
- Supabase Python Client - Database integration
Infrastructure:
- Docker Compose - Multi-container orchestration
- Caddy - Reverse proxy with automatic HTTPS
- Turborepo - Monorepo build system
AtlasP2P is designed to be forked! Deploy a node map for ANY Bitcoin-derived cryptocurrency in minutes.
1. Edit Configuration (config/project.config.yaml):
chain: yourcoin
chainConfig:
name: YourCoin
ticker: YOUR
p2pPort: 8333
magicBytes: "f9beb4d9" # Your chain's magic bytes
dnsSeeds:
- seed.yourcoin.org2. Replace Logos (apps/web/public/logos/):
- Use the provided
TEMPLATE-*.svgfiles as guides - Replace with your coin's branding (PNG or SVG)
- Update paths in
project.config.yaml
3. Deploy!
make prod-docker # Self-hosted
# OR
make prod-cloud # Cloud SupabaseKeep Your Fork Updated:
make sync-upstream # Pull latest improvements from AtlasP2PSee Complete Forking Guide for detailed instructions.
π Complete Documentation - GitHub Pages
Quick Links:
- Forking Guide - Start here to fork for your cryptocurrency
- Configuration Reference - Complete config options
- API Reference - All API endpoints (public + authenticated)
- Architecture - System design and components
- Transparency & Privacy - What data we collect and why
- Moderation Guide - Admin tools and moderation workflow
- Deployment Guide - Docker, Kubernetes, AWS, VPS
- Crawler Implementation - P2P crawler details
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Run make lint && make typecheck && make build before submitting.
Built by: RaxTzu Team
Inspired by:
- Bitnodes.io - Node discovery methodology and API structure
- Reference implementation by Addy Yeow
- We adapted the P2P crawler approach and API compatibility
Core Technologies:
- Next.js by Vercel - React framework
- Supabase - Open-source Firebase alternative
- Leaflet - Open-source interactive maps
- PostgreSQL - Database
- Python - Crawler implementation
- Docker - Containerization
- MaxMind GeoLite2 - Geolocation data
Map Tiles:
- OpenStreetMap - Map data contributors
- CARTO - Map tile provider
Bitcoin P2P Protocol:
- Based on Bitcoin Core protocol specification
- Adapted for Bitcoin-derived chains (Dogecoin, Litecoin, Dingocoin, etc.)
Dependencies:
- See package.json for complete frontend dependencies
- See requirements.txt for complete Python dependencies
MIT License - see LICENSE file for details.
Copyright (c) 2025 RaxTzu Team
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
