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#
- Copy the example environment file:
cp .env.docker.example .env.docker - Start all services:
docker compose up -d - Access the applications:
- Dashboard:
http://localhost:3002 - Status Pages:
http://localhost:3003
- Dashboard:
Manual Setup#
- Install dependencies:
pnpm install - Initialize the development environment:
pnpm dx - 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/andpackages/directories, respectively. - Build System: Turborepo is used to manage the build process. The
turbo.jsonfile 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.jsoncfile. - Code Generation: The project uses
drizzle-kitfor database schema migrations. - API: The backend API is built using Hono and tRPC. The API is documented using OpenAPI.