# 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: ```sh cp .env.docker.example .env.docker ``` 2. Start all services: ```sh docker compose up -d ``` 3. Access the applications: - Dashboard: `http://localhost:3002` - Status Pages: `http://localhost:3003` ### Manual Setup 1. Install dependencies: ```sh pnpm install ``` 2. Initialize the development environment: ```sh pnpm dx ``` 3. Run a specific application: ```sh 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: ```sh turso dev ``` Then, seed the database with test data: ```sh cd packages/db pnpm migrate pnpm seed ``` Then run the tests with: ```sh 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.