This file provides a comprehensive overview of the OpenStatus project, its architecture, and development conventions to be used as instructional context for future interactions.
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.
- 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
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.
The project can be run using Docker (recommended) or a manual setup.
- 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:
- Install dependencies:
pnpm install
- Initialize the development environment:
pnpm dx
- Run a specific application:
pnpm dev:dashboard pnpm dev:status-page pnpm dev:web
To run the test suite, use the following command:
Before running the test you should launch turso dev in a separate terminal:
turso devThen, seed the database with test data:
cd packages/db
pnpm migrate
pnpm seedThen run the tests with:
pnpm test- 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.