Gabriel Augustinho Torres

Pawsh

A website and staff dashboard for a dog-bathing shop, built as a study.

Year
2026
Role
Study project, built solo
Stack
Next.js, React, TypeScript, Tailwind CSS, Prisma, PostgreSQL, and Stripe
Status
Live
The home of the Pawsh staff dashboard on a laptop, with today’s baths, upcoming baths, orders to handle and stock to restock.
Booking on the Pawsh website on a phone, at the time step, with the baths-per-hour chart for Thursday, November 5.
On the laptop, the staff dashboard with upcoming baths, orders and stock to restock. On the phone, picking a time for a bath on the website.

Pawsh is the platform for a dog-bathing shop: a website for customers and a dashboard for the staff, on one shared database. I built it as a study, on my own, from the database to the screens.

On the website, customers subscribe to a plan of 1, 2 or 4 baths a month, book a bath in a few steps, buy products to pick up at the shop, and pay by card or Pix, Brazil’s instant payment system. It was designed for phones first and can be installed on the home screen. A picker switches the whole site between five color palettes.

In the dashboard, staff see the day’s schedule, mark baths as done or missed, prepare orders and adjust stock. Admins manage plans, prices, customers who pay at the counter, and statistics compared with the previous period.

The decision I like most is how credits work. Each bath in a plan is a credit, and no balance is stored: every grant, use, refund and expiry is an entry, and the balance is their sum. Credits only arrive when the payment provider confirms through a signed webhook, never on the redirect back from checkout. Booking spends the credit and saves the bath in one transaction, with a lock on that hour, so two people can’t both take the last slot.

The code has 28 test files, including tests that replay purchases, bookings and orders against a real database. The live website runs on sample data. The dashboard needs a staff login, so it only appears here in screenshots.

More screens

The bath plans on a phone, with the one-bath-a-month plan at R$ 69.90.
The store cart on a phone, with tennis balls and a conditioner, R$ 54.80 in total for pickup at the shop.
The palette picker open over the plans page, with Âmbar & Verde selected and the site already in orange and green.
The bath plans, the store cart and the picker with the site’s five palettes.
Stock in the dashboard, with each product’s units on the shelf, reserved and available, and low or sold-out items flagged.
Stock in the dashboard. Changes show up on the website at once.