This repository has been archived on 2026-05-24 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
fd65679ca17bcb8128cb469d142649ddcf9effa1
setup-node's cache: pnpm requires pnpm-lock.yaml to exist. The lockfile is coming in PR #15 but isn't on main yet. Remove caching for now — it'll be re-enabled once the lockfile lands. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Groom Book
Open source, self-hostable pet grooming business management and customer relationship platform.
Features
- Appointment scheduling — calendar management for single or multiple groomers
- Client & pet records — detailed profiles with grooming history and preferences
- Service management — pricing, duration, and service catalog
- Online booking portal — customer-facing self-service booking
- POS & invoicing — payments, tips, and receipt generation
- Automated reminders — SMS and email notifications
- Reporting dashboard — revenue, utilization, and trend analytics
- PWA — installable on mobile devices, works offline
Tech Stack
| Layer | Technology |
|---|---|
| Backend | Hono (TypeScript, Node.js) |
| Frontend | React 19 + Vite + vite-plugin-pwa |
| Database | PostgreSQL via CNPG + Drizzle ORM |
| Auth | OIDC via Authentik |
| Infra | Kubernetes (namespace: groombook), Flux GitOps |
| CI | GitHub Actions (self-hosted groombook-runners) |
Repository Structure
groombook/
├── apps/
│ ├── api/ # Hono REST API
│ └── web/ # React PWA
├── packages/
│ ├── db/ # Drizzle schema + migrations
│ └── types/ # Shared TypeScript types
├── .github/
│ └── workflows/ # CI/CD pipelines
└── docker-compose.yml
Getting Started
Prerequisites
- Node.js >= 20
- pnpm >= 9 (
npm install -g pnpm) - Docker & Docker Compose (for local Postgres)
Local Development
# Clone the repo
git clone https://github.com/groombook/groombook.git
cd groombook
# Install dependencies
pnpm install
# Start local Postgres
docker compose up postgres -d
# Run database migrations
DATABASE_URL=postgres://groombook:groombook@localhost:5432/groombook pnpm db:migrate
# Start API and Web in parallel
pnpm dev
API will be available at http://localhost:3000 Web will be available at http://localhost:5173
Environment Variables
API (apps/api/.env)
DATABASE_URL=postgres://groombook:groombook@localhost:5432/groombook
OIDC_ISSUER=https://authentik.example.com
OIDC_AUDIENCE=groombook
CORS_ORIGIN=http://localhost:5173
PORT=3000
Running Tests
pnpm test
Building
pnpm build
Self-Hosting
See the groombook/infra repository for Kubernetes manifests and Flux configuration.
Groom Book is deployed in the groombook Kubernetes namespace using:
- CNPG for PostgreSQL
- Authentik for OIDC authentication
- Flux for GitOps-managed deployments
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Open a pull request
All PRs require CI to pass before merge.
License
MIT
Languages
TypeScript
98.5%
Python
0.7%
Go Template
0.3%
Dockerfile
0.2%
CSS
0.2%