From 6945efdbed6ca0c8c02ba5fd39b7aedfbdc6138c Mon Sep 17 00:00:00 2001 From: Groom Book CTO Date: Tue, 24 Mar 2026 21:41:44 +0000 Subject: [PATCH 1/6] Add marketing docs for GitHub Pages site Add landing page, blog posts (launch announcement, why we built), getting-started guide, mobile groomers page, and Jekyll config to docs/ folder for GitHub Pages publishing. Closes groombook/groombook#168 Co-Authored-By: Paperclip --- docs/_config.yml | 19 +++ docs/blog/launch.html | 130 +++++++++++++++++++++ docs/blog/why-we-built.html | 154 ++++++++++++++++++++++++ docs/getting-started/index.html | 120 +++++++++++++++++++ docs/index.html | 199 ++++++++++++++++++++++++++++++++ docs/mobile-groomers.html | 114 ++++++++++++++++++ 6 files changed, 736 insertions(+) create mode 100644 docs/_config.yml create mode 100644 docs/blog/launch.html create mode 100644 docs/blog/why-we-built.html create mode 100644 docs/getting-started/index.html create mode 100644 docs/index.html create mode 100644 docs/mobile-groomers.html diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..c6e4cca --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,19 @@ +title: Groom Book +description: Open source, self-hostable pet grooming business management and CRM. +theme: minima +plugins: + - jekyll-seo-tag + - jekyll-feed +defaults: + - scope: + path: "" + values: + layout: default +footer: + links: + - label: GitHub + url: https://github.com/groombook/groombook + - label: Issues + url: https://github.com/groombook/groombook/issues + - label: Discord + url: https://discord.gg/groombook \ No newline at end of file diff --git a/docs/blog/launch.html b/docs/blog/launch.html new file mode 100644 index 0000000..49c8fc9 --- /dev/null +++ b/docs/blog/launch.html @@ -0,0 +1,130 @@ + + + + + + Introducing Groom Book — Launch Announcement + + + + +
+

Introducing Groom Book

+

March 2026

+
+ + ← Back to Home + +

We built the CRM you've been waiting for if you're tired of paper files, spreadsheets, and overpriced salon software that spies on you.

+ +

Pet grooming is a $7B+ industry in the US alone. Independent groomers and small salons make up the majority of that market — yet the software options for them are genuinely terrible:

+ + + +

We built Groom Book because we got tired of watching groomers pay through the nose for software that doesn't understand their business.

+ +

What Groom Book Does

+ +

Groom Book is a complete pet grooming business management and customer relationship platform — fully open source and self-hostable.

+ +

For daily operations:

+ + +

For transparency and control:

+ + +

Why Open Source?

+ +

First, trust. Groomers have been burned by SaaS companies that raise prices overnight, get acquired, or simply shut down. With Groom Book, your data lives on your server. There's no vendor lock-in, no surprise pricing changes, and no company that can pivot away from your use case.

+ +

Second, customization. Every grooming business is different. Mobile groomers have different needs than salon chains. Breed specialists have different workflows than general-purpose groomers. Open source means you — or any developer you hire — can adapt Groom Book to fit your business, not the other way around.

+ +

Tech Stack

+ +

Groom Book is built for developers who want to self-host or contribute:

+ + +

Getting Started

+ +

Self-host in 5 minutes:

+ +
+ $ git clone https://github.com/groombook/groombook.git
+ $ cd groombook
+ $ docker compose up --build +
+ + + +

For production with Kubernetes, see the groombook/infra repository.

+ +

Contributing

+ +

We're building this for the community. PRs welcome.

+ + +

The Ask

+ +

If you know a groomer who's been complaining about their software, send them this link.

+ +

If you're a developer who wants to contribute to a project that actually helps small businesses, we're here.

+ +

If you're a pet owner who's watched your groomer's salon use a whiteboard and a paper folder system, you now have something better to suggest.

+ + + + \ No newline at end of file diff --git a/docs/blog/why-we-built.html b/docs/blog/why-we-built.html new file mode 100644 index 0000000..286e152 --- /dev/null +++ b/docs/blog/why-we-built.html @@ -0,0 +1,154 @@ + + + + + + Why We Built Groom Book — And Why Groomers Deserve Better Software + + + + +
+

Why We Built Groom Book

+

March 2026

+
+ + ← Back to Home + +
+

My groomer's name is Maria. She's been grooming for 22 years. She has a small salon with two chairs, a bathtub for the big dogs, and a wall of laminated breed standard cards that her mentor gave her in 2002.

+

Maria's software? A binder with client contact info, a paper calendar on the wall, and a calculator.

+

When I asked her why she didn't use salon software, she said: "I looked into it. It's $180 a month, it's complicated, and the one I tried locked me out of my own data when they changed pricing."

+

She represents thousands of independent groomers. This is for her.

+
+ +

The State of Pet Grooming Software

+ +

If you run a salon, you've basically have three options:

+ +

1. The legacy desktop software

+

$150-250/month. Runs on Windows. Looks like it was designed in 2003 (because it was). Requires a dedicated computer that can't do anything else. No mobile access. No online booking. But it "works" so you stick with it.

+ +

2. The SaaS platform

+

These are the Vagaro/Jill-of-All types. Monthly fees, sometimes percentage-based on bookings. They're web-based which is better. But they own your data. If you stop paying, you lose everything. Some take 15-30% of your booking revenue. They often cater to salons AND stylists AND wellness businesses — grooming is just one checkbox.

+ +

3. Generic scheduling tools

+

Think Calendly, Acuity, Square Appointments. They're fine for appointments but know nothing about grooming: no breed-specific timing (a poodle trim takes different time than a Doodle shave-down), no coat type notes, no deposit handling for no-shows, no pet profile history. You're constantly working around the tool.

+ +
+

Here's the thing: grooming has unique operational needs that generic software will never address well.

+
+ +

What Groomers Actually Need

+ +

After talking to dozens of groomers, a few themes come up constantly:

+ + + +

What We Built

+ +

Groom Book is open source, self-hostable pet grooming business management software. It runs on your server (or your laptop, or a $20/month VPS). It does everything a small salon needs:

+ + + +

And because it's open source, you can hire any developer to customize it, or run it on your own infrastructure. Your data stays yours.

+ +

The Price

+ +

Groom Book is free. MIT license. We built it because the problem is solvable and the existing solutions are exploitative.

+ +

If you want to run it yourself, you can have it running in 5 minutes:

+ +
+ $ git clone https://github.com/groombook/groombook
+ $ cd groombook
+ $ docker compose up --build +
+ +

If you want someone else to host it for you — managed hosting, backups, updates — that model can work too. We might build that someday. But you'll always have the option to self-host.

+ +

Who This Is For

+ +

Groom Book is for:

+ + +

It's not for:

+ + +

The Future

+ +

We're just getting started. Groom Book v1 covers the essentials. Here's what's on the roadmap:

+ + + +

If you want to follow along: GitHub.

+ +
+

Maria — if you're reading this: I hope this helps. You deserve software that respects your time and your business.

+

To everyone else: if you know a groomer who's been making do with a whiteboard and a binder, show them this. They have options now.

+
+ +
+

View on GitHub

+

Groom Book — Open Source Pet Grooming Software

+
+ + \ No newline at end of file diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html new file mode 100644 index 0000000..1ade91f --- /dev/null +++ b/docs/getting-started/index.html @@ -0,0 +1,120 @@ + + + + + + Getting Started — Groom Book + + + + +
+

Getting Started with Groom Book

+ ← Back to Home +
+ + ← Back to Home + +

Groom Book can be run on a single server with Docker Compose or in a production Kubernetes cluster. Choose the path that fits your needs.

+ +

Docker Compose (Recommended for Single Server)

+ +

The fastest way to get Groom Book running. This starts PostgreSQL, runs migrations, and serves both the API and web UI.

+ +
+ $ git clone https://github.com/groombook/groombook.git
+ $ cd groombook
+ $ docker compose up --build +
+ + + + + + + + + + + + + + +
ServiceURL
Web UIhttp://localhost:8080
APIhttp://localhost:3000
+ +
+ ⚠️ Security Note: The default docker-compose.yml sets AUTH_DISABLED=true so you can explore without configuring OIDC. Disable this in any internet-facing deployment. +
+ +

Production Configuration

+ +

Copy .env.example to .env and configure:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
VariableDescription
DATABASE_URLPostgreSQL connection string
AUTH_DISABLEDSet to false in production
OIDC_ISSUERAuthentik issuer URL
OIDC_CLIENT_IDOIDC client ID
CORSI_ORIGINPublic URL of the web frontend
+ +

Kubernetes (Production-Grade)

+ +

For production deployments with high availability, see the groombook/infra repository for Kubernetes manifests and Flux GitOps configuration.

+ +

Groom Book is deployed using:

+ + +

Quick Links

+ + + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..29c98c6 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,199 @@ + + + + + + Groom Book — Open Source Pet Grooming Business Management + + + + + + + + +
+
+ 100% Open Source — MIT License +

Groom Book

+

Open source, self-hostable pet grooming business management and CRM. No vendor lock-in. No monthly fees.

+ +
+
+ +
+
+

Everything You Need to Run Your Grooming Business

+
+
+

📅 Appointment Scheduling

+

Calendar management for single or multiple groomers. Drag-and-drop scheduling with automatic conflict detection.

+
+
+

🐾 Client & Pet Records

+

Detailed profiles with grooming history, coat types, behavior notes, and preferences. Never lose a pet's information again.

+
+
+

💳 Online Booking Portal

+

Let clients book appointments 24/7 through your own self-service portal. No more phone tag.

+
+
+

💰 POS & Invoicing

+

Process payments, record tips, and generate receipts. Full financial tracking without spreadsheets.

+
+
+

📱 PWA — Works Offline

+

Install on mobile devices. Perfect for mobile groomers who need access in basements, garages, and rural areas.

+
+
+

📊 Reporting Dashboard

+

Revenue analytics, utilization trends, and business insights. Know exactly how your salon is performing.

+
+
+
+
+ +
+
+

Why Groom Book?

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureGroom BookLegacy SoftwareSaaS Platforms
Self-host on your own server
No monthly fees✗ ($150-250/mo)
You own your data
No booking revenue cut✗ (up to 30%)
PWA with offline support
Open source & customizable
+
+
+ +
+
+

Get Started in 5 Minutes

+
+ $ git clone https://github.com/groombook/groombook.git
+ $ cd groombook
+ $ docker compose up --build +
+

+ Web UI: http://localhost:8080  |  API: http://localhost:3000 +

+

+ Full Getting Started Guide → +

+
+
+ +
+
+

From the Blog

+
+
+

Introducing Groom Book

+

March 2026

+

The CRM you've been waiting for if you're tired of paper files, spreadsheets, and overpriced salon software.

+ Read more → +
+
+

Why We Built Groom Book

+

March 2026

+

An honest look at the pet grooming software landscape — and why we decided to do something about it.

+ Read more → +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/mobile-groomers.html b/docs/mobile-groomers.html new file mode 100644 index 0000000..b2f61b7 --- /dev/null +++ b/docs/mobile-groomers.html @@ -0,0 +1,114 @@ +# Groom Book — Mobile Groomer Landing Page + +## Tagline +**"The grooming salon that comes to you — now with software that keeps up."** + +## Hero Section + +### Headline +Groom Book goes mobile. + +### Subheadline +The same powerful grooming CRM — appointment scheduling, client records, POS, reminders — on your phone, in your van, in backyards and driveways across town. + +Works offline. Syncs when you're back in range. + +### CTA +[Get Started Free](https://github.com/groombook/groombook) · [See How It Works](#how-it-works) + +--- + +## The Mobile Groomer Problem + +You're not just a groomer. You're a receptionist, scheduler, record-keeper, and accountant — all while working out of a van. + +Most grooming software assumes you have: +- Reliable WiFi +- A fixed location +- Time to sit at a desk between appointments + +You have none of those things. + +### What you're actually dealing with: +- Appointment info on scraps of paper +- Client calls mid-route you can't reference +- Credit card processing that takes 10% of your tips +- No-show reminders you can't send from the road +- End-of-day paperwork that takes longer than the grooming + +--- + +## How Groom Book Works for Mobile Groomers + +### 1. Install the PWA +Groom Book is a Progressive Web App. Open it in your phone's browser, tap "Add to Home Screen." It looks and feels like a native app — no app store required. + +### 2. Take appointments offline +The full appointment calendar, client profiles, and pet records are cached on your device. Pull up Mrs. Johnson's doodle's last grooming notes while you're three miles from the nearest cell tower. + +### 3. Check in clients on-site +Record services performed, add notes, process payment — all while the dog is still on the table. + +### 4. Sync when you're back in range +When you hit WiFi or cell service again, everything syncs to your server automatically. No manual uploads. No "export and import" workflows. + +--- + +## Features Mobile Groomers Actually Need + +| Feature | Why It Matters | +|---|---| +| **Offline calendar** | Check tomorrow's route without cell service | +| **Client/p pet profiles** | Know the dog before you arrive — allergies, behavioral notes, preferred cuts | +| **Route notes** | "Gate code is 4721" lives in the appointment notes, not your head | +| **On-site POS** | Process credit cards while you're there, not an hour later | +| **SMS reminders** | Reduce no-shows even for clients without app installed | +| **Service logging** | Track what you did, what products used, for future reference | + +--- + +## Pricing Context + +**Groom Book: Free** +No monthly fee. No per-groomer fee. No cut of your bookings. + +Host it on a $10/month VPS, a old laptop in your van, or a Raspberry Pi. Your server, your rules. + +Compare that to mobile-friendly SaaS alternatives at $150-300/month — and they still don't work offline. + +--- + +## Testimonials (placeholder for real quotes when available) + +> "I was using a paper planner and Venmo for payments. Groom Book replaced both and I can actually see my schedule without digging through my van." +> — [Mobile Groomer Name], [City] + +--- + +## FAQ + +**Q: Does it work without internet?** +A: Yes. The PWA caches your data locally. You can view appointments, client records, and take notes offline. Changes sync when you reconnect. + +**Q: What if I lose my phone?** +A: Your data is on your server, not your phone. Install Groom Book on a new device, log in, and everything is there. + +**Q: How do I accept credit cards?** +A: Groom Book includes a built-in POS. Connect a card reader (Stripe Terminal or similar) or record cash/check payments manually. + +**Q: Can I use this alongside my existing software?** +A: Yes — many groomers start with Groom Book for new client intake while keeping existing systems for historical data during a transition period. + +**Q: Do I need technical skills to set it up?** +A: Basic Docker knowledge is enough. `docker compose up` gets you running in 5 minutes. Full Kubernetes setup for advanced users. + +--- + +## CTA Section + +### Ready to cut your software costs? +Groom Book is free, open source, and runs on your own server. + +[GitHub Repository](https://github.com/groombook/groombook) + +[Getting Started Guide](getting-started/index.html) \ No newline at end of file From 735c0f09fd728fdba606b9ae2f6679508901c0d7 Mon Sep 17 00:00:00 2001 From: Groom Book CTO Date: Tue, 24 Mar 2026 21:56:16 +0000 Subject: [PATCH 2/6] fix(docs): address CTO review feedback on marketing site MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Convert mobile-groomers.html from Markdown to proper HTML - Fix "Client/p pet profiles" typo → "Client/pet profiles" - Add missing trailing newlines to all files - Remove duplicate "Back to Home" link in getting-started/index.html - Fix link paths: use relative URLs instead of /groombook/docs/ absolute paths - Remove placeholder testimonials with fake names Co-Authored-By: Paperclip --- docs/_config.yml | 2 +- docs/blog/launch.html | 4 +- docs/blog/why-we-built.html | 4 +- docs/getting-started/index.html | 8 +- docs/index.html | 16 +-- docs/mobile-groomers.html | 220 +++++++++++++++++++------------- 6 files changed, 148 insertions(+), 106 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index c6e4cca..0fe513f 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -16,4 +16,4 @@ footer: - label: Issues url: https://github.com/groombook/groombook/issues - label: Discord - url: https://discord.gg/groombook \ No newline at end of file + url: https://discord.gg/groombook diff --git a/docs/blog/launch.html b/docs/blog/launch.html index 49c8fc9..baa281f 100644 --- a/docs/blog/launch.html +++ b/docs/blog/launch.html @@ -32,7 +32,7 @@

March 2026

- ← Back to Home + ← Back to Home

We built the CRM you've been waiting for if you're tired of paper files, spreadsheets, and overpriced salon software that spies on you.

@@ -127,4 +127,4 @@

Standing on the shoulders of: Hono, React, Drizzle ORM, CNPG, Authentik, and the open source community.

- \ No newline at end of file + diff --git a/docs/blog/why-we-built.html b/docs/blog/why-we-built.html index 286e152..c96c7a8 100644 --- a/docs/blog/why-we-built.html +++ b/docs/blog/why-we-built.html @@ -41,7 +41,7 @@

March 2026

- ← Back to Home + ← Back to Home

My groomer's name is Maria. She's been grooming for 22 years. She has a small salon with two chairs, a bathtub for the big dogs, and a wall of laminated breed standard cards that her mentor gave her in 2002.

@@ -151,4 +151,4 @@

Groom Book — Open Source Pet Grooming Software

- \ No newline at end of file + diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html index 1ade91f..83c9be9 100644 --- a/docs/getting-started/index.html +++ b/docs/getting-started/index.html @@ -30,11 +30,9 @@

Getting Started with Groom Book

- ← Back to Home + ← Back to Home
- ← Back to Home -

Groom Book can be run on a single server with Docker Compose or in a production Kubernetes cluster. Choose the path that fits your needs.

Docker Compose (Recommended for Single Server)

@@ -114,7 +112,7 @@
  • GitHub Repository
  • Report an Issue
  • Join Our Discord
  • -
  • Launch Announcement
  • +
  • Launch Announcement
  • - \ No newline at end of file + diff --git a/docs/index.html b/docs/index.html index 29c98c6..2f5e92d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -157,7 +157,7 @@ Web UI: http://localhost:8080  |  API: http://localhost:3000

    - Full Getting Started Guide → + Full Getting Started Guide →

    @@ -167,16 +167,16 @@

    From the Blog

    -

    Introducing Groom Book

    +

    Introducing Groom Book

    March 2026

    The CRM you've been waiting for if you're tired of paper files, spreadsheets, and overpriced salon software.

    - Read more → + Read more →
    -

    Why We Built Groom Book

    +

    Why We Built Groom Book

    March 2026

    An honest look at the pet grooming software landscape — and why we decided to do something about it.

    - Read more → + Read more →
    @@ -190,10 +190,10 @@ GitHub Issues Discord - Launch Announcement - Why We Built + Launch Announcement + Why We Built - \ No newline at end of file + diff --git a/docs/mobile-groomers.html b/docs/mobile-groomers.html index b2f61b7..e7fbfcd 100644 --- a/docs/mobile-groomers.html +++ b/docs/mobile-groomers.html @@ -1,114 +1,158 @@ -# Groom Book — Mobile Groomer Landing Page + + + + + + Groom Book for Mobile Groomers + + + + +
    +

    Groom Book Goes Mobile

    +

    The same powerful grooming CRM — appointment scheduling, client records, POS, reminders — on your phone, in your van, in backyards and driveways across town.

    +
    -## Tagline -**"The grooming salon that comes to you — now with software that keeps up."** + ← Back to Home -## Hero Section +
    +

    Works offline. Syncs when you're back in range.

    +
    -### Headline -Groom Book goes mobile. +

    The Mobile Groomer Problem

    -### Subheadline -The same powerful grooming CRM — appointment scheduling, client records, POS, reminders — on your phone, in your van, in backyards and driveways across town. +

    You're not just a groomer. You're a receptionist, scheduler, record-keeper, and accountant — all while working out of a van.

    -Works offline. Syncs when you're back in range. +

    Most grooming software assumes you have:

    +
      +
    • Reliable WiFi
    • +
    • A fixed location
    • +
    • Time to sit at a desk between appointments
    • +
    -### CTA -[Get Started Free](https://github.com/groombook/groombook) · [See How It Works](#how-it-works) +

    You have none of those things.

    ---- +

    What you're actually dealing with:

    +
      +
    • Appointment info on scraps of paper
    • +
    • Client calls mid-route you can't reference
    • +
    • Credit card processing that takes 10% of your tips
    • +
    • No-show reminders you can't send from the road
    • +
    • End-of-day paperwork that takes longer than the grooming
    • +
    -## The Mobile Groomer Problem +

    How Groom Book Works for Mobile Groomers

    -You're not just a groomer. You're a receptionist, scheduler, record-keeper, and accountant — all while working out of a van. +

    1. Install the PWA

    +

    Groom Book is a Progressive Web App. Open it in your phone's browser, tap "Add to Home Screen." It looks and feels like a native app — no app store required.

    -Most grooming software assumes you have: -- Reliable WiFi -- A fixed location -- Time to sit at a desk between appointments +

    2. Take appointments offline

    +

    The full appointment calendar, client profiles, and pet records are cached on your device. Pull up Mrs. Johnson's doodle's last grooming notes while you're three miles from the nearest cell tower.

    -You have none of those things. +

    3. Check in clients on-site

    +

    Record services performed, add notes, process payment — all while the dog is still on the table.

    -### What you're actually dealing with: -- Appointment info on scraps of paper -- Client calls mid-route you can't reference -- Credit card processing that takes 10% of your tips -- No-show reminders you can't send from the road -- End-of-day paperwork that takes longer than the grooming +

    4. Sync when you're back in range

    +

    When you hit WiFi or cell service again, everything syncs to your server automatically. No manual uploads. No "export and import" workflows.

    ---- +

    Features Mobile Groomers Actually Need

    -## How Groom Book Works for Mobile Groomers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FeatureWhy It Matters
    Offline calendarCheck tomorrow's route without cell service
    Client/pet profilesKnow the dog before you arrive — allergies, behavioral notes, preferred cuts
    Route notes"Gate code is 4721" lives in the appointment notes, not your head
    On-site POSProcess credit cards while you're there, not an hour later
    SMS remindersReduce no-shows even for clients without app installed
    Service loggingTrack what you did, what products used, for future reference
    -### 1. Install the PWA -Groom Book is a Progressive Web App. Open it in your phone's browser, tap "Add to Home Screen." It looks and feels like a native app — no app store required. +

    Pricing

    -### 2. Take appointments offline -The full appointment calendar, client profiles, and pet records are cached on your device. Pull up Mrs. Johnson's doodle's last grooming notes while you're three miles from the nearest cell tower. +

    Groom Book: Free. No monthly fee. No per-groomer fee. No cut of your bookings.

    -### 3. Check in clients on-site -Record services performed, add notes, process payment — all while the dog is still on the table. +

    Host it on a $10/month VPS, an old laptop in your van, or a Raspberry Pi. Your server, your rules.

    -### 4. Sync when you're back in range -When you hit WiFi or cell service again, everything syncs to your server automatically. No manual uploads. No "export and import" workflows. +

    Compare that to mobile-friendly SaaS alternatives at $150–300/month — and they still don't work offline.

    ---- +

    FAQ

    -## Features Mobile Groomers Actually Need +
    +
    Does it work without internet?
    +
    Yes. The PWA caches your data locally. You can view appointments, client records, and take notes offline. Changes sync when you reconnect.
    -| Feature | Why It Matters | -|---|---| -| **Offline calendar** | Check tomorrow's route without cell service | -| **Client/p pet profiles** | Know the dog before you arrive — allergies, behavioral notes, preferred cuts | -| **Route notes** | "Gate code is 4721" lives in the appointment notes, not your head | -| **On-site POS** | Process credit cards while you're there, not an hour later | -| **SMS reminders** | Reduce no-shows even for clients without app installed | -| **Service logging** | Track what you did, what products used, for future reference | +
    What if I lose my phone?
    +
    Your data is on your server, not your phone. Install Groom Book on a new device, log in, and everything is there.
    ---- +
    How do I accept credit cards?
    +
    Groom Book includes a built-in POS. Connect a card reader (Stripe Terminal or similar) or record cash/check payments manually.
    -## Pricing Context +
    Can I use this alongside my existing software?
    +
    Yes — many groomers start with Groom Book for new client intake while keeping existing systems for historical data during a transition period.
    -**Groom Book: Free** -No monthly fee. No per-groomer fee. No cut of your bookings. +
    Do I need technical skills to set it up?
    +
    Basic Docker knowledge is enough. docker compose up gets you running in 5 minutes. Full Kubernetes setup for advanced users.
    +
    -Host it on a $10/month VPS, a old laptop in your van, or a Raspberry Pi. Your server, your rules. +
    +

    Ready to cut your software costs?

    +

    Groom Book is free, open source, and runs on your own server.

    +

    + View on GitHub + Getting Started Guide +

    +
    -Compare that to mobile-friendly SaaS alternatives at $150-300/month — and they still don't work offline. - ---- - -## Testimonials (placeholder for real quotes when available) - -> "I was using a paper planner and Venmo for payments. Groom Book replaced both and I can actually see my schedule without digging through my van." -> — [Mobile Groomer Name], [City] - ---- - -## FAQ - -**Q: Does it work without internet?** -A: Yes. The PWA caches your data locally. You can view appointments, client records, and take notes offline. Changes sync when you reconnect. - -**Q: What if I lose my phone?** -A: Your data is on your server, not your phone. Install Groom Book on a new device, log in, and everything is there. - -**Q: How do I accept credit cards?** -A: Groom Book includes a built-in POS. Connect a card reader (Stripe Terminal or similar) or record cash/check payments manually. - -**Q: Can I use this alongside my existing software?** -A: Yes — many groomers start with Groom Book for new client intake while keeping existing systems for historical data during a transition period. - -**Q: Do I need technical skills to set it up?** -A: Basic Docker knowledge is enough. `docker compose up` gets you running in 5 minutes. Full Kubernetes setup for advanced users. - ---- - -## CTA Section - -### Ready to cut your software costs? -Groom Book is free, open source, and runs on your own server. - -[GitHub Repository](https://github.com/groombook/groombook) - -[Getting Started Guide](getting-started/index.html) \ No newline at end of file + + + From ad87183259c3dd3b5ba26a7aebbf76163422b9c3 Mon Sep 17 00:00:00 2001 From: Groom Book CTO Date: Tue, 24 Mar 2026 22:05:09 +0000 Subject: [PATCH 3/6] fix: correct double verb grammar in why-we-built.html MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "you've basically have" → "you basically have" — QA item #5. Co-Authored-By: Paperclip --- docs/blog/why-we-built.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/why-we-built.html b/docs/blog/why-we-built.html index c96c7a8..42cc37e 100644 --- a/docs/blog/why-we-built.html +++ b/docs/blog/why-we-built.html @@ -52,7 +52,7 @@

    The State of Pet Grooming Software

    -

    If you run a salon, you've basically have three options:

    +

    If you run a salon, you basically have three options:

    1. The legacy desktop software

    $150-250/month. Runs on Windows. Looks like it was designed in 2003 (because it was). Requires a dedicated computer that can't do anything else. No mobile access. No online booking. But it "works" so you stick with it.

    From 4fc84ae8919c36d1f8eabc8513af42e21b847632 Mon Sep 17 00:00:00 2001 From: "groombook-engineer[bot]" <269742240+groombook-engineer[bot]@users.noreply.github.com> Date: Wed, 25 Mar 2026 06:39:51 +0000 Subject: [PATCH 4/6] chore: remove docs/ folder (migrated to groombook.github.io) (#112) Refs GRO-195 Co-authored-by: Scrubs McBarkley Co-authored-by: Paperclip --- docs/_config.yml | 19 --- docs/blog/launch.html | 130 --------------------- docs/blog/why-we-built.html | 154 ------------------------ docs/getting-started/index.html | 118 ------------------- docs/index.html | 199 -------------------------------- docs/mobile-groomers.html | 158 ------------------------- 6 files changed, 778 deletions(-) delete mode 100644 docs/_config.yml delete mode 100644 docs/blog/launch.html delete mode 100644 docs/blog/why-we-built.html delete mode 100644 docs/getting-started/index.html delete mode 100644 docs/index.html delete mode 100644 docs/mobile-groomers.html diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 0fe513f..0000000 --- a/docs/_config.yml +++ /dev/null @@ -1,19 +0,0 @@ -title: Groom Book -description: Open source, self-hostable pet grooming business management and CRM. -theme: minima -plugins: - - jekyll-seo-tag - - jekyll-feed -defaults: - - scope: - path: "" - values: - layout: default -footer: - links: - - label: GitHub - url: https://github.com/groombook/groombook - - label: Issues - url: https://github.com/groombook/groombook/issues - - label: Discord - url: https://discord.gg/groombook diff --git a/docs/blog/launch.html b/docs/blog/launch.html deleted file mode 100644 index baa281f..0000000 --- a/docs/blog/launch.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Introducing Groom Book — Launch Announcement - - - - -
    -

    Introducing Groom Book

    -

    March 2026

    -
    - - ← Back to Home - -

    We built the CRM you've been waiting for if you're tired of paper files, spreadsheets, and overpriced salon software that spies on you.

    - -

    Pet grooming is a $7B+ industry in the US alone. Independent groomers and small salons make up the majority of that market — yet the software options for them are genuinely terrible:

    - -
      -
    • Legacy desktop software that costs $200/month and runs on Windows 98
    • -
    • SaaS platforms that take 30% of your booking revenue and lock you into their ecosystem
    • -
    • Generic scheduling tools never designed for the realities of grooming (breed-specific timing, coat types, anxious pets, no-show deposits)
    • -
    - -

    We built Groom Book because we got tired of watching groomers pay through the nose for software that doesn't understand their business.

    - -

    What Groom Book Does

    - -

    Groom Book is a complete pet grooming business management and customer relationship platform — fully open source and self-hostable.

    - -

    For daily operations:

    -
      -
    • Appointment scheduling with calendar management for single or multi-groomer salons
    • -
    • Client and pet profiles with grooming history, coat type, behavior notes, and preferences
    • -
    • Service catalog with pricing, duration, and breed-specific templates
    • -
    • Online booking portal your clients can use 24/7
    • -
    • POS, invoicing, and receipt generation including tips
    • -
    • Automated SMS and email reminders so you stop chasing no-shows
    • -
    • Reporting dashboard: revenue, utilization, trends — no spreadsheets required
    • -
    - -

    For transparency and control:

    -
      -
    • Staff impersonation: managers can view the customer portal as any client, with full audit logs
    • -
    • You own your data. Full stop.
    • -
    • PWA — install it on your phone, works offline for the mobile groomer on the road
    • -
    - -

    Why Open Source?

    - -

    First, trust. Groomers have been burned by SaaS companies that raise prices overnight, get acquired, or simply shut down. With Groom Book, your data lives on your server. There's no vendor lock-in, no surprise pricing changes, and no company that can pivot away from your use case.

    - -

    Second, customization. Every grooming business is different. Mobile groomers have different needs than salon chains. Breed specialists have different workflows than general-purpose groomers. Open source means you — or any developer you hire — can adapt Groom Book to fit your business, not the other way around.

    - -

    Tech Stack

    - -

    Groom Book is built for developers who want to self-host or contribute:

    -
      -
    • Backend: Hono (TypeScript, Node.js) — fast, lightweight, edge-ready
    • -
    • Frontend: React 19 + Vite + PWA
    • -
    • Database: PostgreSQL via CNPG + Drizzle ORM
    • -
    • Auth: OIDC via Authentik (or disable auth for local dev)
    • -
    • Infra: Kubernetes + Flux GitOps, or single-server Docker Compose
    • -
    - -

    Getting Started

    - -

    Self-host in 5 minutes:

    - -
    - $ git clone https://github.com/groombook/groombook.git
    - $ cd groombook
    - $ docker compose up --build -
    - - - -

    For production with Kubernetes, see the groombook/infra repository.

    - -

    Contributing

    - -

    We're building this for the community. PRs welcome.

    -
      -
    • Report bugs and request features via GitHub Issues
    • -
    • Read the README for dev setup instructions
    • -
    • Fork, branch, and open a PR — CI must pass before merge
    • -
    - -

    The Ask

    - -

    If you know a groomer who's been complaining about their software, send them this link.

    - -

    If you're a developer who wants to contribute to a project that actually helps small businesses, we're here.

    - -

    If you're a pet owner who's watched your groomer's salon use a whiteboard and a paper folder system, you now have something better to suggest.

    - - - - diff --git a/docs/blog/why-we-built.html b/docs/blog/why-we-built.html deleted file mode 100644 index 42cc37e..0000000 --- a/docs/blog/why-we-built.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Why We Built Groom Book — And Why Groomers Deserve Better Software - - - - -
    -

    Why We Built Groom Book

    -

    March 2026

    -
    - - ← Back to Home - -
    -

    My groomer's name is Maria. She's been grooming for 22 years. She has a small salon with two chairs, a bathtub for the big dogs, and a wall of laminated breed standard cards that her mentor gave her in 2002.

    -

    Maria's software? A binder with client contact info, a paper calendar on the wall, and a calculator.

    -

    When I asked her why she didn't use salon software, she said: "I looked into it. It's $180 a month, it's complicated, and the one I tried locked me out of my own data when they changed pricing."

    -

    She represents thousands of independent groomers. This is for her.

    -
    - -

    The State of Pet Grooming Software

    - -

    If you run a salon, you basically have three options:

    - -

    1. The legacy desktop software

    -

    $150-250/month. Runs on Windows. Looks like it was designed in 2003 (because it was). Requires a dedicated computer that can't do anything else. No mobile access. No online booking. But it "works" so you stick with it.

    - -

    2. The SaaS platform

    -

    These are the Vagaro/Jill-of-All types. Monthly fees, sometimes percentage-based on bookings. They're web-based which is better. But they own your data. If you stop paying, you lose everything. Some take 15-30% of your booking revenue. They often cater to salons AND stylists AND wellness businesses — grooming is just one checkbox.

    - -

    3. Generic scheduling tools

    -

    Think Calendly, Acuity, Square Appointments. They're fine for appointments but know nothing about grooming: no breed-specific timing (a poodle trim takes different time than a Doodle shave-down), no coat type notes, no deposit handling for no-shows, no pet profile history. You're constantly working around the tool.

    - -
    -

    Here's the thing: grooming has unique operational needs that generic software will never address well.

    -
    - -

    What Groomers Actually Need

    - -

    After talking to dozens of groomers, a few themes come up constantly:

    - -
      -
    • Time by breed and coat type. A 15-pound Doodle with a shave-down takes 3x longer than a 15-pound Bichon Frise with a bath-and-brush. Generic scheduling tools don't understand this. Groomers end up double-booking or rushing.
    • -
    • Client and pet history in one place. "Oh, this dog got matted last time, I need to use a different brush" — that context needs to live in the profile. Paper files work. A whiteboard works. But when you have 200 clients and 3 groomers, you need something better.
    • -
    • Deposit handling. No-shows hurt. Charging a deposit at booking and automatically retaining it for cancellations is table stakes for any modern booking system — but most grooming software doesn't do it well.
    • -
    • Working offline. Mobile groomers — the ones who show up at your house with a van and all their tools — often work in areas with no cell signal. A PWA that works offline isn't a nice-to-have, it's essential.
    • -
    • Your data, your server. This is the big one. Groomers have watched platforms get acquired, change pricing, or shut down. Nobody wants to build their business on rented software.
    • -
    - -

    What We Built

    - -

    Groom Book is open source, self-hostable pet grooming business management software. It runs on your server (or your laptop, or a $20/month VPS). It does everything a small salon needs:

    - -
      -
    • Appointment scheduling with groomer calendars
    • -
    • Client and pet profiles with history, coat type, behavior notes
    • -
    • Service catalog with breed-specific timing and pricing
    • -
    • Online booking portal (24/7 client self-service)
    • -
    • POS, invoicing, tips, receipts
    • -
    • Automated SMS and email reminders
    • -
    • Revenue and utilization analytics
    • -
    • PWA — install on your phone, works offline
    • -
    • Staff impersonation with full audit logs (for managers)
    • -
    - -

    And because it's open source, you can hire any developer to customize it, or run it on your own infrastructure. Your data stays yours.

    - -

    The Price

    - -

    Groom Book is free. MIT license. We built it because the problem is solvable and the existing solutions are exploitative.

    - -

    If you want to run it yourself, you can have it running in 5 minutes:

    - -
    - $ git clone https://github.com/groombook/groombook
    - $ cd groombook
    - $ docker compose up --build -
    - -

    If you want someone else to host it for you — managed hosting, backups, updates — that model can work too. We might build that someday. But you'll always have the option to self-host.

    - -

    Who This Is For

    - -

    Groom Book is for:

    -
      -
    • Independent groomers running a one-person shop who are tired of paper and whiteboards
    • -
    • Small salons with 2-5 groomers who can't justify $200/month for legacy desktop software
    • -
    • Mobile groomers who need offline-capable, PWA-based scheduling
    • -
    • Developers who want to contribute to software that helps small businesses
    • -
    - -

    It's not for:

    -
      -
    • Enterprise salon chains (yet — maybe never)
    • -
    • Businesses that want a fully managed SaaS with 24/7 support contracts (look at Vagaro or Phorest)
    • -
    - -

    The Future

    - -

    We're just getting started. Groom Book v1 covers the essentials. Here's what's on the roadmap:

    - -
      -
    • Multi-language support for international groomers
    • -
    • SMS via Twilio (not just email reminders)
    • -
    • Waitlist and cancellation queue
    • -
    • Groomer commission tracking
    • -
    • Integration with QuickBooks and other accounting tools
    • -
    - -

    If you want to follow along: GitHub.

    - -
    -

    Maria — if you're reading this: I hope this helps. You deserve software that respects your time and your business.

    -

    To everyone else: if you know a groomer who's been making do with a whiteboard and a binder, show them this. They have options now.

    -
    - -
    -

    View on GitHub

    -

    Groom Book — Open Source Pet Grooming Software

    -
    - - diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html deleted file mode 100644 index 83c9be9..0000000 --- a/docs/getting-started/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Getting Started — Groom Book - - - - -
    -

    Getting Started with Groom Book

    - ← Back to Home -
    - -

    Groom Book can be run on a single server with Docker Compose or in a production Kubernetes cluster. Choose the path that fits your needs.

    - -

    Docker Compose (Recommended for Single Server)

    - -

    The fastest way to get Groom Book running. This starts PostgreSQL, runs migrations, and serves both the API and web UI.

    - -
    - $ git clone https://github.com/groombook/groombook.git
    - $ cd groombook
    - $ docker compose up --build -
    - - - - - - - - - - - - - - -
    ServiceURL
    Web UIhttp://localhost:8080
    APIhttp://localhost:3000
    - -
    - ⚠️ Security Note: The default docker-compose.yml sets AUTH_DISABLED=true so you can explore without configuring OIDC. Disable this in any internet-facing deployment. -
    - -

    Production Configuration

    - -

    Copy .env.example to .env and configure:

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    VariableDescription
    DATABASE_URLPostgreSQL connection string
    AUTH_DISABLEDSet to false in production
    OIDC_ISSUERAuthentik issuer URL
    OIDC_CLIENT_IDOIDC client ID
    CORSI_ORIGINPublic URL of the web frontend
    - -

    Kubernetes (Production-Grade)

    - -

    For production deployments with high availability, see the groombook/infra repository for Kubernetes manifests and Flux GitOps configuration.

    - -

    Groom Book is deployed using:

    -
      -
    • CNPG for PostgreSQL
    • -
    • Authentik for OIDC authentication
    • -
    • Flux for GitOps-managed deployments
    • -
    - -

    Quick Links

    - - - - diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 2f5e92d..0000000 --- a/docs/index.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - Groom Book — Open Source Pet Grooming Business Management - - - - - - - - -
    -
    - 100% Open Source — MIT License -

    Groom Book

    -

    Open source, self-hostable pet grooming business management and CRM. No vendor lock-in. No monthly fees.

    - -
    -
    - -
    -
    -

    Everything You Need to Run Your Grooming Business

    -
    -
    -

    📅 Appointment Scheduling

    -

    Calendar management for single or multiple groomers. Drag-and-drop scheduling with automatic conflict detection.

    -
    -
    -

    🐾 Client & Pet Records

    -

    Detailed profiles with grooming history, coat types, behavior notes, and preferences. Never lose a pet's information again.

    -
    -
    -

    💳 Online Booking Portal

    -

    Let clients book appointments 24/7 through your own self-service portal. No more phone tag.

    -
    -
    -

    💰 POS & Invoicing

    -

    Process payments, record tips, and generate receipts. Full financial tracking without spreadsheets.

    -
    -
    -

    📱 PWA — Works Offline

    -

    Install on mobile devices. Perfect for mobile groomers who need access in basements, garages, and rural areas.

    -
    -
    -

    📊 Reporting Dashboard

    -

    Revenue analytics, utilization trends, and business insights. Know exactly how your salon is performing.

    -
    -
    -
    -
    - -
    -
    -

    Why Groom Book?

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FeatureGroom BookLegacy SoftwareSaaS Platforms
    Self-host on your own server
    No monthly fees✗ ($150-250/mo)
    You own your data
    No booking revenue cut✗ (up to 30%)
    PWA with offline support
    Open source & customizable
    -
    -
    - -
    -
    -

    Get Started in 5 Minutes

    -
    - $ git clone https://github.com/groombook/groombook.git
    - $ cd groombook
    - $ docker compose up --build -
    -

    - Web UI: http://localhost:8080  |  API: http://localhost:3000 -

    -

    - Full Getting Started Guide → -

    -
    -
    - -
    -
    -

    From the Blog

    -
    -
    -

    Introducing Groom Book

    -

    March 2026

    -

    The CRM you've been waiting for if you're tired of paper files, spreadsheets, and overpriced salon software.

    - Read more → -
    -
    -

    Why We Built Groom Book

    -

    March 2026

    -

    An honest look at the pet grooming software landscape — and why we decided to do something about it.

    - Read more → -
    -
    -
    -
    - - - - diff --git a/docs/mobile-groomers.html b/docs/mobile-groomers.html deleted file mode 100644 index e7fbfcd..0000000 --- a/docs/mobile-groomers.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - Groom Book for Mobile Groomers - - - - -
    -

    Groom Book Goes Mobile

    -

    The same powerful grooming CRM — appointment scheduling, client records, POS, reminders — on your phone, in your van, in backyards and driveways across town.

    -
    - - ← Back to Home - -
    -

    Works offline. Syncs when you're back in range.

    -
    - -

    The Mobile Groomer Problem

    - -

    You're not just a groomer. You're a receptionist, scheduler, record-keeper, and accountant — all while working out of a van.

    - -

    Most grooming software assumes you have:

    -
      -
    • Reliable WiFi
    • -
    • A fixed location
    • -
    • Time to sit at a desk between appointments
    • -
    - -

    You have none of those things.

    - -

    What you're actually dealing with:

    -
      -
    • Appointment info on scraps of paper
    • -
    • Client calls mid-route you can't reference
    • -
    • Credit card processing that takes 10% of your tips
    • -
    • No-show reminders you can't send from the road
    • -
    • End-of-day paperwork that takes longer than the grooming
    • -
    - -

    How Groom Book Works for Mobile Groomers

    - -

    1. Install the PWA

    -

    Groom Book is a Progressive Web App. Open it in your phone's browser, tap "Add to Home Screen." It looks and feels like a native app — no app store required.

    - -

    2. Take appointments offline

    -

    The full appointment calendar, client profiles, and pet records are cached on your device. Pull up Mrs. Johnson's doodle's last grooming notes while you're three miles from the nearest cell tower.

    - -

    3. Check in clients on-site

    -

    Record services performed, add notes, process payment — all while the dog is still on the table.

    - -

    4. Sync when you're back in range

    -

    When you hit WiFi or cell service again, everything syncs to your server automatically. No manual uploads. No "export and import" workflows.

    - -

    Features Mobile Groomers Actually Need

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FeatureWhy It Matters
    Offline calendarCheck tomorrow's route without cell service
    Client/pet profilesKnow the dog before you arrive — allergies, behavioral notes, preferred cuts
    Route notes"Gate code is 4721" lives in the appointment notes, not your head
    On-site POSProcess credit cards while you're there, not an hour later
    SMS remindersReduce no-shows even for clients without app installed
    Service loggingTrack what you did, what products used, for future reference
    - -

    Pricing

    - -

    Groom Book: Free. No monthly fee. No per-groomer fee. No cut of your bookings.

    - -

    Host it on a $10/month VPS, an old laptop in your van, or a Raspberry Pi. Your server, your rules.

    - -

    Compare that to mobile-friendly SaaS alternatives at $150–300/month — and they still don't work offline.

    - -

    FAQ

    - -
    -
    Does it work without internet?
    -
    Yes. The PWA caches your data locally. You can view appointments, client records, and take notes offline. Changes sync when you reconnect.
    - -
    What if I lose my phone?
    -
    Your data is on your server, not your phone. Install Groom Book on a new device, log in, and everything is there.
    - -
    How do I accept credit cards?
    -
    Groom Book includes a built-in POS. Connect a card reader (Stripe Terminal or similar) or record cash/check payments manually.
    - -
    Can I use this alongside my existing software?
    -
    Yes — many groomers start with Groom Book for new client intake while keeping existing systems for historical data during a transition period.
    - -
    Do I need technical skills to set it up?
    -
    Basic Docker knowledge is enough. docker compose up gets you running in 5 minutes. Full Kubernetes setup for advanced users.
    -
    - -
    -

    Ready to cut your software costs?

    -

    Groom Book is free, open source, and runs on your own server.

    -

    - View on GitHub - Getting Started Guide -

    -
    - - - - From 2b6c437446b2764ea5936cd7b272db67307b93be Mon Sep 17 00:00:00 2001 From: Groom Book CTO Date: Wed, 25 Mar 2026 02:29:31 +0000 Subject: [PATCH 5/6] feat: add PR preview deployment to groombook-dev Extend CI to build PR-tagged Docker images and auto-deploy them to groombook-dev when all checks pass. This unblocks Flea Flicker UAT validation for open PRs. Changes: - Docker build job now runs on PRs (tagged as pr-{number}) and main - New deploy-dev job uses self-hosted runners with kubectl access - Runs migration, updates api/web deployments, comments on PR Co-Authored-By: Paperclip --- .github/workflows/ci.yml | 94 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d43acf5..7e7b125 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,20 +110,23 @@ jobs: docker: name: Build & Push Docker Images runs-on: ubuntu-latest - needs: [build] - if: github.ref == 'refs/heads/main' + needs: [build, e2e] permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - - name: Generate version tag + - name: Generate image tag id: version run: | - TAG="$(date -u +%Y.%m.%d)-${GITHUB_SHA::7}" + if [ "${{ github.event_name }}" = "pull_request" ]; then + TAG="pr-${{ github.event.pull_request.number }}" + else + TAG="$(date -u +%Y.%m.%d)-${GITHUB_SHA::7}" + fi echo "tag=$TAG" >> "$GITHUB_OUTPUT" - echo "Image version: $TAG" + echo "Image tag: $TAG" - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -144,7 +147,7 @@ jobs: push: true tags: | ghcr.io/groombook/api:${{ steps.version.outputs.tag }} - ghcr.io/groombook/api:latest + ${{ github.ref == 'refs/heads/main' && 'ghcr.io/groombook/api:latest' || '' }} cache-from: type=gha cache-to: type=gha,mode=max @@ -157,7 +160,7 @@ jobs: push: true tags: | ghcr.io/groombook/migrate:${{ steps.version.outputs.tag }} - ghcr.io/groombook/migrate:latest + ${{ github.ref == 'refs/heads/main' && 'ghcr.io/groombook/migrate:latest' || '' }} cache-from: type=gha cache-to: type=gha,mode=max @@ -170,7 +173,7 @@ jobs: push: true tags: | ghcr.io/groombook/seed:${{ steps.version.outputs.tag }} - ghcr.io/groombook/seed:latest + ${{ github.ref == 'refs/heads/main' && 'ghcr.io/groombook/seed:latest' || '' }} cache-from: type=gha cache-to: type=gha,mode=max @@ -182,6 +185,79 @@ jobs: push: true tags: | ghcr.io/groombook/web:${{ steps.version.outputs.tag }} - ghcr.io/groombook/web:latest + ${{ github.ref == 'refs/heads/main' && 'ghcr.io/groombook/web:latest' || '' }} cache-from: type=gha cache-to: type=gha,mode=max + + deploy-dev: + name: Deploy PR to groombook-dev + runs-on: runners-groombook + needs: [docker] + if: github.event_name == 'pull_request' + permissions: + contents: read + pull-requests: write + steps: + - name: Deploy to groombook-dev + env: + TAG: pr-${{ github.event.pull_request.number }} + PR_NUM: ${{ github.event.pull_request.number }} + run: | + echo "Deploying images tagged $TAG to groombook-dev..." + + # Run migration with PR image + kubectl delete job migrate-schema -n groombook-dev --ignore-not-found + kubectl delete job "migrate-pr-$PR_NUM" -n groombook-dev --ignore-not-found + cat < Date: Wed, 25 Mar 2026 06:34:30 +0000 Subject: [PATCH 6/6] fix: install kubectl on ARC runner for deploy-dev job ARC self-hosted runners don't include kubectl. Download it before running the deployment commands. Co-Authored-By: Paperclip --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7e7b125..5fd9f1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -198,6 +198,13 @@ jobs: contents: read pull-requests: write steps: + - name: Install kubectl + run: | + curl -sLO "https://dl.k8s.io/release/$(curl -sL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + chmod +x kubectl + sudo mv kubectl /usr/local/bin/ + kubectl version --client + - name: Deploy to groombook-dev env: TAG: pr-${{ github.event.pull_request.number }}