51 lines
2.0 KiB
Markdown
51 lines
2.0 KiB
Markdown
# Checkmate
|
||
|
||
A full‑stack uptime and infrastructure monitoring app. The repository contains an Express/TypeScript API and a React/TypeScript client.
|
||
|
||
## Project Structure
|
||
- `server/` – Node.js API (TypeScript, ESM)
|
||
- Source: `server/src`
|
||
- Routes mounted under `/api/v1/*` via `server/src/init/routes.ts`
|
||
- Tests: `server/tests`
|
||
- Build output: `server/dist`
|
||
- `client/` – React + TypeScript (Vite)
|
||
- Source: `client/src`
|
||
- Public assets: `client/public`
|
||
|
||
## Key Features
|
||
- JWT authentication and permission checks (team/org).
|
||
- Monitors API: create, list (with sorting/pagination), get checks, toggle pause, update, delete.
|
||
- Import/Export monitors (`GET /api/v1/monitors/export`, `POST /api/v1/monitors/import`).
|
||
- Notification channels and diagnostics endpoints.
|
||
- System settings (SMTP) with env‑first email transport fallback to DB settings.
|
||
|
||
## Getting Started
|
||
1. Prerequisites: Node 18+, MongoDB
|
||
2. Environment
|
||
- Server: create `server/.env` with at least:
|
||
- `MONGODB_URI=mongodb://localhost:27017/saas`
|
||
- `JWT_SECRET=replace_me`
|
||
- `ORIGIN=http://localhost:5173`
|
||
- Optional SMTP: `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`
|
||
3. Install
|
||
- `cd server && npm ci`
|
||
- `cd ../client && npm ci`
|
||
4. Run
|
||
- API: `cd server && npm run dev` (listens on `http://localhost:52345`)
|
||
- Client: `cd client && npm run dev` (Vite dev server)
|
||
|
||
## Scripts
|
||
- Server
|
||
- `npm run dev` – Start API in watch mode
|
||
- `npm run build` – Type‑check and compile (tsc + tsc‑alias)
|
||
- `npm test` / `npm run test:coverage` – Jest tests and coverage
|
||
- Client
|
||
- `npm run dev` – Start Vite dev server
|
||
- `npm run build` – Type‑check and build
|
||
- `npm run preview` – Preview production build
|
||
|
||
## Notes
|
||
- The API expects valid JWTs on most routes; see `server/src/routes` for middleware usage.
|
||
- Mongo connection retries are handled in `server/src/db/MongoDB.ts`.
|
||
- Email transport prioritizes env config; if unset, it uses values from system settings.
|