Openstatus www.openstatus.dev

Agent.md#

This file provides a comprehensive overview of the OpenStatus project, its architecture, and development conventions to be used as instructional context for future interactions.

Project Overview#

OpenStatus is an open-source synthetic monitoring platform. It allows users to monitor their websites and APIs from multiple locations and receive notifications when they are down or slow.

The project is a monorepo managed with pnpm workspaces and Turborepo. It consists of several applications and packages that work together to provide a complete monitoring solution.

Core Technologies#

  • Frontend:
    • Next.js (with Turbopack)
    • React
    • Tailwind CSS
    • shadcn/ui
    • tRPC
  • Backend:
    • Hono (Node.js framework)
    • Go
  • Database:
    • Turso (libSQL)
    • Drizzle ORM
  • Data Analytics:
    • Tinybird
  • Authentication:
    • NextAuth.js
  • Build System:
    • Turborepo

Architecture#

The OpenStatus platform is composed of three main applications:

  • apps/dashboard: A Next.js application that provides the main user interface for managing monitors, viewing status pages, and configuring notifications.
  • apps/server: A Hono-based backend server that provides the API for the dashboard application.
  • apps/checker: A Go application responsible for performing the actual monitoring checks from different locations.

These applications are supported by a collection of shared packages in the packages/ directory, which provide common functionality such as database access, UI components, and utility functions.

Building and Running#

The project can be run using Docker (recommended) or a manual setup.

With Docker#

  1. Copy the example environment file:
    cp .env.docker.example .env.docker
    
  2. Start all services:
    docker compose up -d
    
  3. Access the applications:
    • Dashboard: http://localhost:3002
    • Status Pages: http://localhost:3003

Manual Setup#

  1. Install dependencies:
    pnpm install
    
  2. Initialize the development environment:
    pnpm dx
    
  3. Run a specific application:
    pnpm dev:dashboard
    pnpm dev:status-page
    pnpm dev:web
    

Running Tests#

To run the test suite, use the following command:

Before running the test you should launch turso dev in a separate terminal:

turso dev

Then, seed the database with test data:

cd packages/db
pnpm migrate 
pnpm seed

Then run the tests with:

pnpm test

Development Conventions#

  • Monorepo: The project is organized as a monorepo using pnpm workspaces. All applications and packages are located in the apps/ and packages/ directories, respectively.
  • Build System: Turborepo is used to manage the build process. The turbo.json file defines the build pipeline and dependencies between tasks.
  • Linting and Formatting: The project uses Biome for linting and formatting. The configuration can be found in the biome.jsonc file.
  • Code Generation: The project uses drizzle-kit for database schema migrations.
  • API: The backend API is built using Hono and tRPC. The API is documented using OpenAPI.