An enterprise-ready status page you can brand, connect, and extend. Statusor is React + TypeScript with config-first theming, adapters for your services, and clean UX for customers.
- Config-driven branding and navigation (
src/config/*). - Adapter system (HTTP ping + static JSON included) to pull status, incidents, and maintenance data.
- Simple path to add custom connectors for any service or data source.
- TailwindCSS styling with dark mode toggle and custom colors.
- React Router pages (overview, incidents, about) with extendable routes.
- Basic tests with Vitest and Testing Library.
- Node.js 18+
- npm (or pnpm/yarn)
npm install
npm run devVisit the URL printed by Vite (usually http://localhost:5173).
npm run lint
npm test- The guided demo route (
/demo) is off by default. - Enable it by setting
VITE_ENABLE_DEMO=true(orVITE_DEMO_MODE=true) at build/run time. - It auto-enables on this repo's GitHub Pages build (base path contains
/Statusor/).
- Services: Edit
src/config/status.config.tsto add/update services and their adapters. - Branding & Theme: Adjust colors, logo, and copy in
src/config/theme.config.ts. - Interactive setup: Run
bash scripts/setup.shfor a guided terminal flow to update branding/links.
Built-in adapters live in src/adapters/:
static_json: Fetches status snapshots (and optional incidents/maintenance) from static JSON endpoints.http_ping: Pings an HTTP endpoint and derives status from the response.
To add an adapter:
- Create a new file in
src/adapters/implementingStatusAdapter. - Register it in
src/adapters/index.ts. - Reference the adapter id in
status.config.tsfor any service.
Create a static bundle and host the dist folder on your platform of choice (S3 + CDN, Nginx, Netlify, etc.):
npm run build- If serving from a subdirectory, set
BASE_PATHwhen building (e.g.,BASE_PATH="/status/" npm run build).
src/
adapters/ // Adapter implementations and registry
components/ // UI components
config/ // Declarative service + theme config
hooks/ // Data hooks
pages/ // Routed pages
types/ // Shared types and helpers
docs/ // Customer-facing how-to guides
public/data/ // Example static JSON data
.github/workflows/ // CI
- Add more pages/routes via
src/router.tsx. - Layer in analytics or logging inside
useStatusDatato trace fetch errors. - Refine UI tokens by tweaking Tailwind config and THEME colors.
- Explore the guided product demo at
/demofor a quick, interactive walkthrough.
Sample JSON feeds are under public/data/ for quick demos. Point adapters to your own endpoints for live data.