Up-Hive is a robust website monitoring platform that helps you track the uptime and performance of your websites in real-time. Built with modern technologies and a distributed architecture, it provides reliable monitoring with instant notifications when your websites experience downtime.
- Real-time website monitoring
- Response time tracking
- Beautiful dashboard interface
- Visual graphs per website with multiple time periods (24h, 7d, 30d):
- Response Time line chart (Avg, P95, hover details)
- Status Timeline (Up/Down) bar chart
- Time period selector with dropdown
- Individual data point tooltips for precise monitoring
- Dynamic chart layouts (column-wise for extended periods)
- On-brand glass/green gradient tooltips and hover cursors
- Animated green light effects on metric cards
- Distributed monitoring system using message queues
- Smart notification system:
- Email notifications for website downtime and recovery
- Redis-based email queue for reliable delivery
- Automatic retries for failed notifications
- Scalable architecture ready for growth
- Secure authentication with Google OAuth using Better Auth
- Frontend: Next.js with TypeScript
- API Server: Bun with TypeScript
- Google OAuth: Better Auth
- Worker: TypeScript (with planned Go migration)
- Message Queues:
- RabbitMQ for monitoring tasks
- Bull Queue (Redis) for database operations and scalability
- Redis for email notifications
- Email Service: Nodemailer with Gmail SMTP
- Database: PostgreSQL with Prisma
- Package Management: bun with Turborepo
- Node.js 22 or higher
- bun
- Bun runtime
- RabbitMQ (or CloudAMQP account)
- Redis (for email queue)
- PostgreSQL database
- Gmail account for SMTP (with App Password)
- Clone the repository:
git clone https://github.com/Vinayak2k03/Up-Hive
cd Up-Hive- Install dependencies:
bun install- Set up environment variables:
# In apps/web/.env
NEXT_PUBLIC_BACKEND_URL=http://localhost:3001
# In apps/api/.env
DATABASE_URL=your_database_url
RABBITMQ_URL=your_cloudamqp_url
PORT=3001
# In apps/worker/.env
DATABASE_URL=""
AMQP_URL="" # RabbitMQ URL
EMAIL_USER="" # Gmail address
EMAIL_PASSWORD="" # Gmail App password for nodemailer
REDIS_URL="redis://localhost:6379" # Redis URL for email queue- Start the development servers:
bun devThis will start:
- Web interface on http://localhost:3000
- API server on http://localhost:3001
- Worker service for processing monitoring tasks and managing email notifications
The system is built with a distributed architecture to ensure reliability and scalability.
The architecture consists of several key components working together:
-
Backend (BE):
- Runs a 5-minute cron job to check website status
- Manages website monitoring tasks
- Sends batch monitoring jobs to RabbitMQ
- Includes user email in monitoring messages for notifications
-
Database (DB):
- Stores website information
- Records monitoring history and website ticks
- Maintains response times and status data
- Stores user information for notifications
-
Worker:
- Consumes monitoring tasks from RabbitMQ
- Performs actual website status checks
- Queues database operations via Bull Queue to prevent DB overload:
- Website tick creation with response times and status
- Handles 1000+ concurrent monitoring without database connection exhaustion
- Manages email notifications through Redis queue:
- Queues downtime notifications
- Queues recovery notifications
- Handles automatic retries
- Provides reliable email delivery
-
Message Queues:
- RabbitMQ for monitoring tasks
- Bull Queue (Redis) for database operations:
- Prevents database overload during high-volume monitoring
- Ensures reliable database writes with retry logic
- Scales to handle 1000+ concurrent website checks
- Redis for reliable email notification delivery:
- Priority-based email queuing
- Automatic retries with exponential backoff
- Failed notification tracking
-
Monitored Websites:
- External websites being monitored
- Status checks performed every 5 minutes
- Response times recorded for performance tracking
- Smart notification system:
- Downtime alerts
- Recovery notifications
- Automatic retry on delivery failure
Key components:
- Web Interface: React-based dashboard for managing monitored websites and viewing their status
- API Server: Handles website management and publishes monitoring tasks with user email info
- RabbitMQ: Message queue for distributing monitoring tasks
- Bull Queue: Handles database operations to prevent overload during high-volume monitoring
- Redis: Handles reliable email notification delivery with retries
- Worker Service: Consumes monitoring tasks, performs website checks, queues DB operations, and manages notifications
- PostgreSQL: Stores website data, monitoring history, and user information
- Email Service: Processes queued notifications via Gmail SMTP
apps/
├── web/ # Next.js frontend
├── api/ # Bun/TypeScript API server
└── worker/ # TypeScript monitoring worker with Redis-based notifications
packages/
├── db/ # Prisma schema and client
├── ui/ # Shared UI components
└── config/ # Shared configuration
Inside apps/tests
bun testbun run build- Fork the repository
- Create your 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Multiple notification channels:
- Enhanced email notifications:
- HTML email templates with rich formatting
- Customizable notification templates
- Batch notifications for multiple events
- Weekly/monthly status reports
- Additional channels:
- WhatsApp integration
- SMS alerts
- Voice calls for critical outages
- Webhook support
- Enhanced email notifications:
- Advanced notification features:
- Rate limiting and throttling
- Custom notification rules
- Per-user notification preferences
- Scheduled maintenance windows
- Custom alert thresholds
- Notification history and analytics
- Time Series DB for metrics
- Extended monitoring history
- Performance analytics:
- Trend analysis
- Uptime statistics
- Response time graphs
- Geographic monitoring distribution

