Petsitter house notes

Open source · self-hosted · MIT

The printed instructions sheet, upgraded thoughtfully.

Petsitter is a calm, installable web app you set up once and hand to whoever is watching your animals — a friend, a neighbor, a pro. Today's checklist, every pet's quirks, the WiFi password, the emergency number, and a small house assistant they can ask anything. No accounts to set up but the one you invite.

React 19 PWA · web push Cloudflare Tunnel Claude Haiku chat

What it does

Today

Morning and evening checklists with a quiet progress bar. Tap to check off. Optimistic, syncs in the background.

Summary

One scrollable view: every pet's photo, quirks, care notes. WiFi, trash day, the 24-hour vet, the neighbor with the spare key.

Reminders

Real web-push notifications — fire even when the app is closed. Once, daily, or weekly. Powered by your own VAPID keys.

House chat

A small Claude Haiku assistant that knows the trip notes. "What do the cats eat at night?" — answered, not guessed.

Allowlist invites

Sign-up is gated by an email you add. No anonymous accounts. Pre-assign your sitter to their trip so they land in the right place.

Owner admin

One screen to edit the trip — pets, photos, care notes, tasks, house notes, allowlist. Markdown supported. No SQL required.

Deploy your own

Five steps. ~15 minutes. Self-hosted on any Docker host with a Cloudflare-fronted domain.

  1. 1 · Clone & configure

    git clone https://github.com/ben4mn/petsitter
    cd petsitter
    cp .env.example .env

    Fill in JWT_SECRET (openssl rand -base64 48), ANTHROPIC_API_KEY, and a VAPID keypair (npx web-push generate-vapid-keys).

  2. 2 · Seed the first trip

    cp seed.config.example.json seed.config.json
    # edit it: owner email/password, pets, tasks, house notes
    docker compose up -d db
    cd backend && npm install && npm run seed
  3. 3 · Bring up the stack

    docker compose up -d --build

    The web container listens on port 8084 and proxies /api internally to the backend.

  4. 4 · Point a subdomain at it via Cloudflare Tunnel

    cloudflared tunnel login
    cloudflared tunnel create petsitter
    cloudflared tunnel route dns petsitter sitter.your-domain.com
    sudo cp cloudflared/config.example.yml /etc/cloudflared/config.yml
    # edit: tunnel UUID, hostname → http://localhost:8084
    sudo cloudflared service install
    sudo systemctl enable --now cloudflared
  5. 5 · Invite your sitter

    Sign in as owner → Admin → Allowlist → add their email, pre-assign the trip. They register, get pushed straight into the right view.

Why we built it

The night before someone watches your animals, you end up writing the same sheet of paper you wrote last time. Where the wet food is, why the small dog hides at first, which neighbor has the spare key, when trash day is.

Petsitter is that sheet, but on a phone, with reminders, and an assistant who can answer the dumb questions at 11pm. It isn't trying to be a marketplace or a startup. It's a small, calm tool — yours to host, yours to hand over.