A simple domain availability checking API built with Go and a modern Vue.js frontend interface.
- Domain availability checking
- DNS lookup for IP address resolution
- Modern Vue.js interface with real-time updates
- RESTful API with WebSocket support
- CORS enabled
- Check history viewing
- WHOIS information lookup
- Bulk domain extension checking with real-time progress
- Modular API architecture
- CI/CD Pipeline with GitHub Actions
- Docker support for easy deployment
- Dependabot for automated dependency updates
# Production
docker-compose up -d
# Development with hot reload
docker-compose --profile dev up -d./scripts/dev.shThis command automatically:
- Installs dependencies
- Starts the API server (port 8080)
- Starts the frontend dev server (port 3000)
- Provides monitoring
go mod tidy
./scripts/start-api.sh./scripts/start-frontend.sh./scripts/build.sh./scripts/dev.sh- Complete development environment./scripts/build.sh- Production build./scripts/test-api.sh- API tests./scripts/stop.sh- Stop services./scripts/logs.sh- Logs and monitoring
For details: scripts/README.md
docker build -t domaincheck .
docker run -p 8080:8080 domaincheckdocker-compose --profile dev up -dThe Dockerfile uses multi-stage builds for optimized production images:
- Frontend build stage
- Backend build stage
- Production stage with minimal footprint
This project includes a comprehensive GitHub Actions CI/CD pipeline:
- Automated Testing: Backend and frontend tests
- Code Quality: Linting and formatting checks
- Security Scanning: Trivy vulnerability scanner
- Multi-stage Deployment: Staging and production environments
- Build Artifacts: Optimized build outputs
- Test: Run backend and frontend tests
- Build: Create production artifacts
- Security: Vulnerability scanning
- Deploy Staging: Auto-deploy to staging (develop branch)
- Deploy Production: Auto-deploy to production (main branch)
- Staging deployment requires develop branch
- Production deployment requires main branch
- Manual approval for production deployments
Automated dependency updates are configured for:
- Go modules: Weekly updates
- Node.js packages: Weekly updates
- Security updates: Immediate notifications
- Updates scheduled for Mondays at 9:00 AM
- Pull request limit: 10 concurrent updates
- Automatic labeling and assignment
- Major version updates ignored for critical packages
GET /api/v1/health- API health check
POST /api/v1/domains/check- Check single domainPOST /api/v1/domains/check-all-extensions- Check domain with all extensionsPOST /api/v1/domains/check-multiple- Check multiple domainsGET /api/v1/domains/history- Get check historyDELETE /api/v1/domains/history- Clear historyGET /api/v1/domains/whois/:domain- Get WHOIS information
GET /api/v1/extensions- Get valid extensionsPOST /api/v1/extensions/reload- Reload extensions
WS /ws- WebSocket connection for real-time updates
GET /api/health- Health check (v0)POST /api/check-domain- Check domain (v0)POST /api/check-all-extensions- Check all extensions (v0)GET /api/domains- Get history (v0)
- Start backend and frontend servers
- Navigate to
http://localhost:3000 - Enter a domain name and check availability
- View results in the history section
- Use WHOIS button to get detailed domain information
- Use WebSocket tab for real-time bulk checking
- Backend: Go, Gin framework, WebSocket
- Frontend: Vue.js 3, Axios, Tailwind CSS
- Real-time: WebSocket for live updates
- CORS: Frontend-backend communication
- CI/CD: GitHub Actions
- Containerization: Docker, Docker Compose
- Security: Trivy vulnerability scanner
The project follows a modular architecture:
DomainCheck/
βββ cmd/server/ # Application entry point
βββ internal/
β βββ config/ # Configuration management
β βββ handlers/ # HTTP request handlers
β βββ models/ # Data models
β βββ services/ # Business logic
β βββ utils/ # Utility functions
βββ frontend/ # Vue.js frontend
βββ configs/ # Configuration files
βββ data/ # Data files (domain extensions)
βββ scripts/ # Build and deployment scripts
βββ .github/ # CI/CD and GitHub configurations
βββ Dockerfile # Production Docker image
βββ Dockerfile.dev # Development Docker image
βββ docker-compose.yml # Multi-service orchestration
- Go 1.19+
- Node.js 18+
- npm or yarn
- Docker (optional)
- Clone the repository
- Run
./scripts/dev.shfor full development environment - Access the application at
http://localhost:3000
./scripts/test-api.sh# Install air for Go hot reload
go install github.com/cosmtrek/air@latest
# Start with hot reload
air- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Bug reports: Use the bug report template
- Feature requests: Use the feature request template
- Pull requests: Follow the PR template
This project is licensed under the MIT License - see the LICENSE file for details.