In Progress

Pet Portal

A boarding resort is two products wearing one name. Owners want to book a stay and settle a bill without calling the front desk. Staff want the day — who is arriving, which runs are free, what is still owed. Both sides read and write the same records.

A golden retriever running through a grassy field at golden hour
01
Role Product Design & Sole Developer
02
Client River Dogs Resort
03
Tech Stack React, TypeScript, Supabase
The Challenge

One system for two opposite users

The client came to this already frustrated with what the industry was selling them. The platforms on offer were clunky to move through, thin on the features a working resort actually depends on, and nearly silent on customer interaction — no straightforward way to reach an owner mid-stay, confirm a change, or handle a request without picking up the phone.

A resort that boards and daycares dogs is really two products wearing one name. Owners want to book a stay, prove their dog's shots are current, and settle a bill without ringing the front desk. Staff want the opposite of a website — they want the day: who is arriving, which runs are free, whose agreement is unsigned, what is still owed.

Most operators run that split across a point-of-sale system, a paper file per dog, and a phone. The records drift apart, and the front desk becomes the integration layer. Pet Portal is built so both audiences read and write the same records — a reservation, a pet, a kennel, an invoice — rather than keeping parallel copies that have to be reconciled.

The Platform

Both sides of the counter

Sixteen requirement documents scope the system, from authentication through to reporting. Each maps to a feature area built against the same Postgres schema.

Today Mon 27 Jul
14 Check-ins
9 Check-outs
31 Boarding
$4.2k Revenue
Arrivals
Cooper Boarding · 4 nights 7:30
Willow Daycare 8:00
Marlowe Boarding · 2 nights 9:15
Juniper Daycare 9:45
Kennels
Occupied Open
  • 01

    Owner portal

    Dashboard of upcoming stays, pet profiles with vaccination expiry tracking, booking requests, invoices, and digital agreement signing — so routine questions never become phone calls.

  • 02

    Staff dashboard

    The day at a glance: arrivals and departures, check-in and check-out, customer approval queue, and the resort's own services and pricing.

  • 03

    Reservations and kennels

    Booking requests flow into a reservation calendar backed by a kennel model, so occupancy and availability come from the same records the front desk works from.

  • 04

    Invoicing and payments

    Invoices generate off completed stays and are paid by card through Square’s Web Payments SDK, with payment status tracked against the reservation.

  • 05

    Records and agreements

    Vaccination records, emergency contacts, activity logs and signed waivers live against the pet and the customer rather than in a filing cabinet.

  • 06

    Messaging and email

    In-app messaging between resort and owner, plus transactional email delivered through Resend from Supabase Edge Functions.

Under the Hood

A small stack, chosen to stay small

Frontend
React 18 and TypeScript 5.7 in strict mode, built with Vite 6 on Bun. React Router v7 with lazy-loaded routes.
State and forms
TanStack Query v5 for server state via per-feature hooks; React Hook Form with Zod schemas for validation.
Interface
shadcn/ui on Radix primitives, styled with Tailwind CSS v4.
Backend
Supabase throughout — Postgres, Auth, Storage and Edge Functions — across 23 migrations.
Payments
Square Web Payments SDK, loaded directly rather than through a package, with separate sandbox and production locations.
Delivery
Netlify for the frontend, Supabase for the backend and functions.
Where It Stands

In progress

Fifteen of the sixteen requirement areas are specified and built — auth and onboarding, pets, customers, services, kennels, reservations, activity logs, agreements, invoicing, Square payments, email, messaging, staff management and admin settings. Reports and analytics is still in draft. The platform is being built for River Dogs Resort in Sacramento, California, and this entry will be updated as it goes live.