A comprehensive full-stack web application for managing domains with SSL monitoring, alert notifications, and health status tracking. Built with React, Node.js, Express, and PostgreSQL.
- Secure JWT-based authentication
- User registration and login
- Profile management
- Password hashing with bcrypt
- CRUD operations for domains
- Domain health monitoring
- Expiry date tracking
- Registrar information management
- Purchase details and cost tracking
- Automatic SSL certificate checking
- Certificate expiry tracking
- SSL health status monitoring
- Certificate issuer information
- Bulk SSL checking for all domains
- Email notifications via SMTP
- SMS notifications via Twilio
- Configurable alert preferences
- Domain expiry alerts
- SSL certificate expiry alerts
- Downtime monitoring alerts
- Real-time domain health overview
- Interactive charts and statistics
- Expiring domains tracking
- SSL certificate status visualization
- Cost analysis and reporting
- Complete activity tracking
- User action history
- Change logging for all operations
- Export functionality (JSON/CSV)
- Detailed audit reports
- React 18 - Modern UI framework
- Tailwind CSS - Utility-first CSS framework
- React Router - Client-side routing
- React Query - Server state management
- Recharts - Data visualization
- React Hook Form - Form handling
- React Hot Toast - Notifications
- Node.js - JavaScript runtime
- Express.js - Web framework
- PostgreSQL - Primary database
- JWT - Authentication
- bcryptjs - Password hashing
- node-cron - Scheduled tasks
- nodemailer - Email sending
- Twilio - SMS notifications
- Docker - Containerization
- Docker Compose - Multi-container orchestration
- Nginx - Reverse proxy
- PM2 - Process management (production)
- Node.js 18+ and npm
- PostgreSQL 15+
- Docker and Docker Compose (for containerized deployment)
- SMTP credentials (for email alerts)
- Twilio account (for SMS alerts)
git clone <repository-url>
cd domain-managerCopy the example environment file and configure your settings:
cp env.example .envEdit .env with your configuration:
# Database
DB_HOST=localhost
DB_PORT=5432
DB_NAME=domain_manager
DB_USER=postgres
DB_PASSWORD=your_password
# JWT
JWT_SECRET=your-super-secret-jwt-key
# Email (Gmail example)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
# Twilio (optional)
TWILIO_ACCOUNT_SID=your-account-sid
TWILIO_AUTH_TOKEN=your-auth-token
TWILIO_PHONE_NUMBER=your-twilio-number# Install all dependencies (root, server, and client)
npm run install-allCreate a PostgreSQL database:
CREATE DATABASE domain_manager;The application will automatically create all required tables on first run.
# Start both frontend and backend in development mode
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Health Check: http://localhost:5000/health
- Build and start all services:
docker-compose up -d- View logs:
docker-compose logs -f- Stop services:
docker-compose down# Build the image
docker build -t domain-manager .
# Run the container
docker run -p 5000:5000 --env-file .env domain-managerPOST /api/auth/signup- User registrationPOST /api/auth/login- User loginGET /api/auth/profile- Get user profilePUT /api/auth/profile- Update user profile
GET /api/domains- Get all domainsGET /api/domains/:id- Get domain by IDPOST /api/domains- Create new domainPUT /api/domains/:id- Update domainDELETE /api/domains/:id- Delete domainGET /api/domains/stats/overview- Get domain statisticsGET /api/domains/expiring-soon- Get expiring domains
POST /api/ssl/check/:domainId- Check SSL certificateGET /api/ssl/:domainId- Get SSL certificatePUT /api/ssl/:domainId- Update SSL certificateDELETE /api/ssl/:domainId- Delete SSL certificatePOST /api/ssl/bulk-check- Bulk SSL check
GET /api/alerts- Get all alertsPOST /api/alerts- Create alertPUT /api/alerts/:id- Update alertDELETE /api/alerts/:id- Delete alertPOST /api/alerts/test/:id- Test alert notification
GET /api/audit- Get audit logsGET /api/audit/stats- Get audit statisticsGET /api/audit/export- Export audit logs
The application includes automated monitoring with the following scheduled tasks:
- Daily Monitoring (9 AM UTC) - Domain expiry checks
- SSL Monitoring (Every 6 hours) - SSL certificate validation
- Uptime Monitoring (Every 30 minutes) - Domain availability checks
- Alert Checking (Every hour) - Send notifications for expiring domains/SSL
-
EC2 Setup:
- Launch Ubuntu EC2 instance
- Install Docker and Docker Compose
- Configure security groups (ports 80, 443, 22)
-
Domain & SSL:
- Point domain to EC2 IP
- Configure SSL certificates with Let's Encrypt
- Update nginx.conf with your domain
-
Environment Variables:
- Set production environment variables
- Use strong JWT secret
- Configure production database
-
Deploy:
docker-compose -f docker-compose.prod.yml up -d
-
Droplet Setup:
- Create Ubuntu droplet
- Install Docker and Docker Compose
- Configure firewall
-
Deploy Application:
git clone <repository> cd domain-manager docker-compose up -d
- JWT Authentication - Secure token-based authentication
- Password Hashing - bcrypt with salt rounds
- Rate Limiting - API request throttling
- CORS Protection - Cross-origin request security
- Helmet.js - Security headers
- Input Validation - Request data sanitization
- SQL Injection Protection - Parameterized queries
- XSS Protection - Content Security Policy
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Check the documentation
- Review the API endpoints
- Multi-tenant support
- Advanced SSL certificate management
- Domain transfer tracking
- DNS management integration
- Advanced reporting and analytics
- Mobile application
- API rate limiting dashboard
- Webhook integrations
- Backup and restore functionality