Skip to content

A Laravel-based uptime monitoring application that helps you track website availability and receive instant notifications when your sites go down or recover.

License

Notifications You must be signed in to change notification settings

johnfmorton/uptimer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Uptimer

Uptimer Logo

A Laravel-based uptime monitoring application that helps you track website availability and receive instant notifications when your sites go down or recover.

License PHP Laravel

Features

  • πŸ” HTTP Monitoring - Periodic checks of website availability with configurable intervals
  • πŸ“§ Email Notifications - Receive detailed alerts via email when status changes
  • πŸ“± Pushover Integration - Get instant push notifications on your mobile device
  • πŸ“Š Uptime Statistics - Track reliability with 24-hour, 7-day, and 30-day uptime percentages
  • πŸ“ Check History - View detailed history of all checks with timestamps, status codes, and response times
  • ⚑ Background Processing - Asynchronous checks using Laravel queues for optimal performance
  • πŸ” Controlled Registration - Secure access with optional public registration control
  • 🎨 Modern UI - Clean, responsive interface built with Tailwind CSS and Alpine.js

[Screenshot of Uptimer

Quick Start

Prerequisites

  • PHP 8.2 or higher
  • Composer 2
  • Node.js and NPM
  • DDEV (for local development)
  • MySQL 8.4 or SQLite

Installation

  1. Clone the repository

    git clone <repository-url> uptimer
    cd uptimer
  2. Start DDEV environment

    ddev start
  3. Run setup

    ddev composer run setup
  4. Create an admin user

    ddev artisan user:create-admin
  5. Start development environment

    ddev composer run dev
  6. Access the application

    Open your browser to the URL shown by DDEV (typically https://kiro-laravel-ddev-skeleton-template.ddev.site)

Documentation

Comprehensive documentation is available in the documentation directory:

How It Works

  1. Add Monitors - Configure URLs you want to monitor with custom check intervals
  2. Automatic Checks - Laravel scheduler triggers checks every minute, queuing jobs for each monitor
  3. Background Processing - Queue workers execute HTTP checks asynchronously
  4. Status Tracking - Results are stored with timestamps, status codes, and response times
  5. Smart Notifications - Receive alerts only when status changes (up β†’ down or down β†’ up)
  6. View Statistics - Dashboard displays current status, uptime percentages, and check history

Technology Stack

  • Backend: Laravel 12 (PHP 8.4)
  • Frontend: Blade templates, Tailwind CSS 4, Alpine.js, Vite 7
  • Database: SQLite (default) or MySQL 8.4
  • Queue: Database driver (easily migrated to Redis)
  • Development: DDEV local environment with nginx-fpm

Key Commands

Development

ddev composer run dev      # Start all services (server, queue, logs, vite)
ddev artisan serve         # Laravel development server only
ddev npm run dev           # Vite dev server only

User Management

ddev artisan user:create-admin    # Create admin user via CLI

Queue & Scheduler

ddev artisan queue:work --tries=1  # Start queue worker
ddev artisan schedule:run          # Run scheduled tasks manually
ddev artisan pail                  # View real-time logs

Testing

ddev composer run test     # Run test suite
ddev artisan test          # Run PHPUnit tests

Code Quality

ddev exec ./vendor/bin/pint        # Format code with Laravel Pint

Configuration

Key environment variables in .env:

# Public Registration Control
ALLOW_PUBLIC_REGISTRATION=false

# HTTP Check Timeout (seconds)
CHECK_TIMEOUT=30

# Check History Retention (days)
CHECK_RETENTION_DAYS=30

# Email Configuration
MAIL_MAILER=smtp
MAIL_FROM_ADDRESS="[email protected]"

# Pushover Notifications (optional)
PUSHOVER_USER_KEY=your-user-key
PUSHOVER_API_TOKEN=your-api-token

See Environment Variables for complete reference.

Check History Retention

By default, check history is automatically deleted after 30 days to prevent database growth. This runs daily at 2:00 AM.

  • Configure retention: Set CHECK_RETENTION_DAYS in .env (default: 30)
  • Manual cleanup: ddev artisan checks:prune
  • Custom retention: ddev artisan checks:prune --days=7
  • Keep all history: Set CHECK_RETENTION_DAYS=0 (not recommended)

See CHECK_RETENTION_POLICY.md for detailed documentation.

Architecture

The application follows Laravel's MVC architecture with service layers:

Web Interface (Blade + Tailwind CSS)
         ↓
    Controllers
         ↓
   Service Layer
   - MonitorService (CRUD operations)
   - CheckService (HTTP checks)
   - NotificationService (Email & Pushover)
         ↓
    Models & Queue Jobs
         ↓
      Database

Key Components

  • Monitors - Store URL, check interval, and current status
  • Checks - Record each check result with timestamp and details
  • Queue Jobs - Background processing for HTTP checks
  • Scheduler - Triggers checks every minute based on intervals
  • Notifications - Email and Pushover alerts on status changes

Security

  • Controlled Registration - Public registration disabled by default
  • Admin User Creation - CLI command for creating users without web access
  • Authentication - Laravel Breeze for secure user authentication
  • Environment Variables - Sensitive data stored in .env (not committed)

Contributing

This project follows Laravel best practices:

  • PSR-12 code style (enforced with Laravel Pint)
  • Type-safe code with strict typing (declare(strict_types=1))
  • Comprehensive test coverage (unit, feature, and property-based tests)
  • Service layer architecture for maintainability
  • Clear separation of concerns

License

This project is open-sourced software licensed under the MIT license.

Support

Built With Kiro

This application was built using Kiro, an AI-powered IDE that helps developers build Laravel applications faster. The project structure and steering documents are optimized for Kiro's spec-driven development workflow.


Ready to monitor your sites? Start with the Setup Guide to get up and running in minutes.

About

A Laravel-based uptime monitoring application that helps you track website availability and receive instant notifications when your sites go down or recover.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published