Projects

GoFetch

A two sided pet minding marketplace.

2025University Group Project, Team Leadprototype
Browse Page Screenshot

Overview

A two sided platform connecting pet owners with local pet minders. Minders list the services they offer and their prices. Owners add their pets, browse minders near them, then book and pay for a service.

Most of the work sits around the booking itself. The minder accepts or declines the request, it moves through its stages automatically as the time passes, and both sides have to confirm it took place before it closes. A completed booking is what unlocks a review, and those reviews feed the ratings the next owner browses on. Payments are simulated, so no money moves.

Owners and minders each get their own dashboard, with messaging between them. There is also an admin role, since a marketplace that puts strangers in each other's homes needs a way to handle people. Users report each other, and an admin resolves the report with a warning, a suspension or a ban.

I led a team of seven, designed the interface and built most of the front end. My first product build.

Stack

  • React
  • Vite
  • TypeScript
  • CSS
  • Node.js
  • Express
  • Socket.IO
  • Multer
  • node-cron
  • JSON store
  • Google Maps Platform

Decisions

Running the team

Seven people on one codebase, four weeks of build time. I took the lead on how we operated. I set up the repo and the branching and review standards, ran a Notion board for the schedule and task assignment, split the work into pairs, held calls twice a week, and reviewed every merge. I checked in constantly, and where someone had fallen behind I sat with them and filled them in properly.

One account, two roles

Owners and minders could have been separate account types, but plenty of people are both, and that would have meant two logins and two profiles for the same person. A user holds either role or both and switches between them, with the dashboard changing to match.

No database, no real auth

Data sits in JSON files that the server reads and writes directly, loaded into memory on start. Logins live in those same files, passwords in plain text, and a session is a user id kept in local storage. It meant anyone on the team could run the project with nothing to install or configure, which mattered more than durability for a prototype with a fixed deadline. None of it would survive real use, and that was the accepted trade.