A comprehensive service for tracking and managing DNS records and WHOIS information across multiple domains, providing real-time monitoring, historical data tracking, and domain validation.
Here are some screenshots showcasing the features:
Home Page
Domain Details Page
Notifications Page
Domain Monitor offers an easy-to-use platform for managing domain entries, monitoring DNS records and WHOIS information, and accessing historical changes. In addition you are able to receive alerts via our notification service. It's designed for system administrators, network engineers, and anyone needing to keep track of domain-related changes across multiple domains.
- Add, validate, and manage domains for monitoring
- Retrieve current DNS records and WHOIS information for monitored domains
- Access historical DNS and WHOIS changes (we check for updates every 30 minutes!)
- Real-time updates via message queue system
- RESTful API with versioning
- Pagination support for efficient data retrieval
- Domain statistics and change tracking
- Notification system for domain changes (ability to subscribe / unsubscribe)
The system is built using a microservices architecture:
- API Gateway: Entry point for other microservices, protected with rate limiting
- Domain Service: Manages domain entries, validates domains, and initiates monitoring
- DNS Service: Tracks and provides current and historical DNS records
- WHOIS Service: Tracks and provides current and historical WHOIS information
- Notification Service: Ability to subscribe to notificaitons for specific domains
- Frontend Service: Provides user interface for interacting with the system
- PostgreSQL Database: Stores domain, DNS record, and WHOIS data
- RabbitMQ Message Broker: Handles inter-service communication using queues (fanout and direct exchanges)
- Redis: For cachins and utilized by Rate Limiter in the API Gateway
- Python 3.9+
- Flask: Framework for building the APIs
- Next.js: Frontend framework for the user interface
- Redis: For caching
- SQLAlchemy: ORM for database interactions
- PostgreSQL: Database for storing domain, DNS, Notifcations, and WHOIS data
- RabbitMQ: Message queue for inter-service communication
- Docker & Docker Compose: Containerization and orchestration
- React Query: Data fetching, caching, and state management in the frontend
- Tailwind CSS: Frontend Styling
- Docker Deskstop
- Python 3.9+
- Node.js
-
Clone the repository:
-
Navigate to the project directory: cd domain-monitor
-
Build and start the services (due to RabbitMQ initialization, bootup may take up to 30 seconds): docker compose up --build
-
Navigate to http://localhost:3010
Environment variables can be set in the docker-compose.yml
file or in a .env
file in the project root.
Key variables:
DATABASE_URL
: PostgreSQL connection stringRABBITMQ_HOST
: RabbitMQ server addressSECRET_KEY
: Secret key for Flask applications
For detailed API documentation, please refer to the following README files:
The frontend provides a user-friendly interface for interacting with the Domain Monitor Service. Key features include:
- Domain search and validation
- Homepage with recently updated domains, with pagination
- Comprehensive domain profiles with DNS and WHOIS information
- Historical data visualization
- Notification subscription for domain changes
For more details, see the Frontend README.