Real-time uptime tracking with distributed architecture and advanced analytics
Features β’ Architecture β’ Tech Stack β’ Getting Started β’ Development β’ Deployment β’ Contributing
UptimeCheck is a robust, enterprise-grade monitoring solution that continuously tracks and reports the uptime status of websites and APIs. Built with modern microservices architecture, it provides real-time monitoring, detailed analytics, instant alerts, and comprehensive performance insights.
- β‘ Real-time Monitoring - Sub-second response time tracking
- π Global Distribution - Multi-region validator network
- π Advanced Analytics - Historical trends and performance metrics
- π Enterprise Security - Cryptographic authentication and data integrity
- π Modern Stack - Next.js 15, Bun runtime, WebSocket communication
- π 24/7 Real-time Monitoring β Continuous website and API availability checks
- β‘ Sub-second Response Times β Precision latency measurement and tracking
- π Global Validator Network β Distributed monitoring from multiple geographic regions
- π Historical Analytics β Long-term uptime trends and performance insights
- π¨ Intelligent Alerting β Smart notifications via email, Slack, and webhooks
- οΏ½ WebSocket Communication β Real-time status updates between validators and hub
- π‘οΈ Cryptographic Security β Solana-based authentication and message signing
- βοΈ Load Balancing β Intelligent task distribution across validator network
- π Advanced Dashboard β Intuitive visualization with performance metrics
- οΏ½ Enterprise Authentication β Seamless user management with Clerk integration
- π¨ Modern UI/UX β Beautiful, responsive interface with dark/light themes
- οΏ½ Fast Development β Hot reload, TypeScript, and modern tooling
- π± Mobile Responsive β Optimized for all device sizes and touch interfaces
- π§ Easy Configuration β Simple setup with environment variables and Docker
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 15.2+ |
React framework with App Router |
| React | 19.0+ |
UI library with concurrent features |
| TypeScript | 5.8+ |
Type-safe development |
| Tailwind CSS | 4.1+ |
Utility-first styling |
| Shadcn/ui | Latest |
Beautiful component library |
| Framer Motion | 12.6+ |
Smooth animations |
| Clerk | 6.12+ |
Authentication service |
| Technology | Version | Purpose |
|---|---|---|
| Bun | 1.2+ |
High-performance JavaScript runtime |
| Express.js | 4.18+ |
Web application framework |
| WebSockets | Native |
Real-time bidirectional communication |
| Prisma | 6.5+ |
Next-generation ORM |
| PostgreSQL | 15+ |
Robust relational database |
| Solana Web3.js | 1.87+ |
Cryptographic authentication |
| Tool | Purpose |
|---|---|
| Turbo | Monorepo management and build system |
| ESLint | Code linting and quality enforcement |
| Prettier | Code formatting and style consistency |
| Husky | Git hooks for quality assurance |
| Docker | Containerization and deployment |
- Solana Cryptography - Ed25519 digital signatures
- TweetNaCl - Cryptographic library for message signing
- JWT - JSON Web Tokens for API authentication
- Clerk - Enterprise authentication provider
UptimeCheck is built on a modern microservices architecture designed for scalability, reliability, and global distribution. The system consists of four main components connected through WebSocket communication and shared database access.
| Component | Port | Technology | Purpose |
|---|---|---|---|
| π¨ Frontend | 3000 |
Next.js 15 + React 19 | User interface and dashboard |
| π API Server | 4000 |
Express.js + Bun | REST endpoints and business logic |
| π― Hub Service | 4001 |
WebSocket + Bun | Validator coordination and task distribution |
| β‘ Validators | Dynamic |
Bun + Solana Keys | Distributed monitoring workers |
graph TB
Frontend[π¨ Frontend App] --> API[π API Server]
API --> Database[(ποΈ PostgreSQL)]
Hub[π― Hub Service] --> Database
Hub <--> Validator1[β‘ Validator 1]
Hub <--> Validator2[β‘ Validator 2]
Hub <--> ValidatorN[β‘ Validator N]
Validator1 --> Website1[π Website 1]
Validator2 --> Website2[π Website 2]
ValidatorN --> WebsiteN[π Website N]
- Solana Cryptography - Ed25519 signatures for validator authentication
- JWT Tokens - Secure API access and session management
- Clerk Integration - Enterprise-grade user authentication
- Message Signing - All validator communications cryptographically verified
π¦ uptimecheck/
βββ π apps/
β βββ π¨ frontend/ # Next.js 15 web application
β βββ π api/ # Express.js REST API server
β βββ π― hub/ # WebSocket hub coordinator
β βββ β‘ validator/ # Distributed monitoring workers
βββ π packages/
β βββ π common/ # Shared TypeScript types
β βββ ποΈ db/ # Prisma database client
β βββ π eslint-config/ # Shared linting rules
β βββ π§ typescript-config/ # Shared TS configurations
βββ π docs/ # Documentation files
βββ π .env.example # Environment variables template
βββ π LICENSE # MIT License
βββ π README.md # This file
Before you begin, ensure you have the following installed:
| Requirement | Version | Download |
|---|---|---|
| Node.js | 18.0+ |
nodejs.org |
| Bun | 1.0+ |
bun.sh |
| Docker | Latest |
docker.com |
| Git | Latest |
git-scm.com |
Get UptimeCheck running locally in under 5 minutes:
# 1οΈβ£ Clone the repository
git clone https://github.com/AAYUSH412/uptimecheck.git
cd uptimecheck
# 2οΈβ£ Install dependencies
bun install
# 3οΈβ£ Start PostgreSQL database
docker run --name uptimecheck-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=uptimecheck \
-p 5432:5432 \
-d postgres:15
# 4οΈβ£ Set up environment variables
cp .env.example .env
# Edit .env with your configuration
# 5οΈβ£ Initialize database
cd packages/db
bunx prisma generate
bunx prisma migrate dev
bun run seed
cd ../..
# 6οΈβ£ Start all services
bun run devCreate environment files for each service:
# packages/db/.env
DATABASE_URL="postgresql://postgres:password@localhost:5432/uptimecheck"
# apps/validator/.env (generate keys first)
cd apps/validator
bun generate-key.ts
# Copy the generated private key to .env
PRIVATE_KEY=[your_generated_private_key_array]
# apps/frontend/.env.local
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="your_clerk_key"
CLERK_SECRET_KEY="your_clerk_secret"
NEXT_PUBLIC_API_URL="http://localhost:4000"# Navigate to database package
cd packages/db
# Generate Prisma client
bunx prisma generate
# Run database migrations
bunx prisma migrate dev
# (Optional) Seed with sample data
bun run seed
# (Optional) Open Prisma Studio
bunx prisma studioStart each service in separate terminal windows:
# Terminal 1: API Server (Port 4000)
cd apps/api && bun run dev
# Terminal 2: Hub Service (Port 4001)
cd apps/hub && bun index.ts
# Terminal 3: Validator Service
cd apps/validator && bun index.ts
# Terminal 4: Frontend (Port 3000)
cd apps/frontend && bun run devOnce all services are running, verify the setup:
- Frontend: http://localhost:3000 (Web dashboard)
- API: http://localhost:4000 (REST endpoints)
- Hub: ws://localhost:4001 (WebSocket server)
- Database: Check with
docker psand Prisma Studio
# Install all dependencies
bun install
# Start all services at once
bun run dev
# Build for production
bun run build
# Run linting
bun run lint
# Format code
bun run format
# Type checking
bun run check-typesUptimeCheck uses a modern development setup with hot reload, TypeScript, and comprehensive tooling.
| Service | Port | Command | Purpose |
|---|---|---|---|
| π¨ Frontend | 3000 |
bun run dev |
Next.js web application |
| π API Server | 4000 |
bun run dev |
Express.js REST API |
| π― Hub Service | 4001 |
bun index.ts |
WebSocket coordinator |
| β‘ Validator | Dynamic |
bun index.ts |
Monitoring workers |
# Frontend Development (with Turbopack)
cd apps/frontend && bun run dev
# API Server (with hot reload)
cd apps/api && bun run dev
# Hub Service (WebSocket server)
cd apps/hub && bun index.ts
# Validator Worker
cd apps/validator && bun index.ts# After schema changes
cd packages/db
bunx prisma generate
bunx prisma migrate dev --name your_migration_name
# Reset database (development only)
bunx prisma migrate reset
# View/edit data
bunx prisma studio# Generate unique cryptographic keys
cd apps/validator
bun generate-key.ts
# Copy private key to .env
echo 'PRIVATE_KEY=[generated_key_array]' >> .env# Lint all packages
bun run lint
# Format code
bun run format
# Type checking
bun run check-types
# Run all quality checks
bun run lint && bun run check-types# Test API endpoints
curl http://localhost:4000/
# Check WebSocket connection
wscat -c ws://localhost:4001
# Monitor database
docker exec -it uptimecheck-postgres psql -U postgres -d uptimecheckAdding a New Website to Monitor:
- Start all services (API, Hub, Validator, Frontend)
- Open dashboard at http://localhost:3000
- Click "Add Website" and enter URL
- Validators automatically begin monitoring
Performance Monitoring:
- Check service logs in terminal windows
- Use browser DevTools for frontend debugging
- Monitor database queries with Prisma Studio
Database Connection Issues
# Check PostgreSQL container
docker ps | grep uptimecheck-postgres
# Verify database connectivity
docker exec -it uptimecheck-postgres psql -U postgres -c "\l"
# Reset database if needed
cd packages/db && bunx prisma migrate resetValidator Connection Problems
# Verify Hub service is running
curl -I http://localhost:4001
# Check validator private key format
cat apps/validator/.env
# Test WebSocket connection
wscat -c ws://localhost:4001Port Conflicts
# Check what's using ports
lsof -i :3000 # Frontend
lsof -i :4000 # API
lsof -i :4001 # Hub
# Kill processes if needed
pkill -f "next dev"
pkill -f "bun.*api"# Build and deploy
bun run build
vercel deploy
# Environment variables for Vercel
NEXT_PUBLIC_API_URL=https://your-api-domain.com
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_...
CLERK_SECRET_KEY=sk_live_...# Dockerfile.api
FROM oven/bun:latest
WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install
COPY . .
EXPOSE 4000
CMD ["bun", "run", "dev"]# Production database setup
docker run -d \
--name uptimecheck-prod \
-e POSTGRES_USER=your_user \
-e POSTGRES_PASSWORD=secure_password \
-e POSTGRES_DB=uptimecheck_prod \
-p 5432:5432 \
postgres:15-alpine
# Run migrations
DATABASE_URL="postgresql://user:pass@host:5432/db" bunx prisma migrate deploy| Platform | Service | Recommendation |
|---|---|---|
| Vercel | Frontend | β Recommended for Next.js |
| Railway | Backend Services | β Easy deployment |
| DigitalOcean | Database | Managed PostgreSQL |
| AWS | Full Stack | Enterprise deployment |
| Google Cloud | Validators | Global distribution |
- Environment Variables: Use secure secret management
- SSL/TLS: Enable HTTPS for all services
- Database: Use connection pooling and SSL
- Authentication: Production Clerk keys
- Monitoring: Set up logging and alerting
- β Core Monitoring - Real-time website uptime tracking
- β Distributed Architecture - Multi-service microservices setup
- β WebSocket Communication - Real-time validator coordination
- β Modern UI - Next.js 15 dashboard with dark/light themes
- β Cryptographic Security - Solana-based validator authentication
- π SSL Certificate Monitoring - Track certificate expiration
- π Advanced Alerting - Email, Slack, and webhook notifications
- π Performance Analytics - Enhanced response time tracking
- π Mobile App - iOS and Android monitoring applications
- π API Documentation - Interactive Swagger/OpenAPI docs
- π± Mobile Applications - Native iOS and Android apps
- οΏ½ Advanced Notifications - PagerDuty, OpsGenie integrations
- οΏ½ Team Collaboration - User roles and team management
- π Global CDN Monitoring - Edge location performance tracking
- π€ AI-Powered Insights - Predictive analytics and recommendations
- π Custom Dashboards - Personalized monitoring views
- π Third-party Integrations - Zapier, IFTTT, and workflow automation
We love contributions from the community! UptimeCheck is open source and welcomes developers of all skill levels.
- π΄ Fork the repository
- πΏ Create your feature branch:
git checkout -b feature/amazing-feature - π‘ Make your changes with tests
- β
Commit your changes:
git commit -m 'feat: add amazing feature' - π Push to the branch:
git push origin feature/amazing-feature - π Open a Pull Request
| Area | Skills Needed | Difficulty |
|---|---|---|
| π¨ UI/UX Design | React, Tailwind, Figma | Beginner-Intermediate |
| π§ Backend Features | Node.js, Bun, TypeScript | Intermediate |
| π± Mobile Development | React Native, Expo | Intermediate-Advanced |
| π Security Audits | Cryptography, WebSockets | Advanced |
| π Documentation | Technical Writing | Beginner |
| π§ͺ Testing | Jest, Playwright, Cypress | Intermediate |
- Code Style: Follow ESLint and Prettier configurations
- Commits: Use conventional commit messages (
feat:,fix:,docs:) - Testing: Add tests for new features and bug fixes
- Documentation: Update README files for significant changes
Read our detailed Contributing Guide for more information.
- π Documentation: Check our comprehensive README files
- π Bug Reports: Open an issue on GitHub
- π‘ Feature Requests: Discuss in GitHub Discussions
- π§ Direct Contact: [email protected]
If you find UptimeCheck helpful, please consider:
- β Star the repository on GitHub
- οΏ½ Share on social media and spread the word
- π Contribute to the codebase
- π Write about your experience using UptimeCheck
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright Β© 2025 Aayush Vaghela
| Technology | Description | Website |
|---|---|---|
| Next.js | React framework for production | nextjs.org |
| Bun | Fast all-in-one JavaScript runtime | bun.sh |
| Prisma | Next-generation Node.js and TypeScript ORM | prisma.io |
| Tailwind CSS | Utility-first CSS framework | tailwindcss.com |
| Clerk | Authentication and user management | clerk.dev |
| Solana | High-performance blockchain for cryptography | solana.com |
- Open Source Community - For the amazing tools and libraries
- Early Contributors - Helping shape the project direction
- Beta Testers - Providing valuable feedback and bug reports
Get Started β’ View on GitHub β’ Visit Developer
Made with β€οΈ by Aayush Vaghela
β Star this repo if you find it helpful!


