← Work

Community Platform

PetWatch

A community platform for reporting missing pets, submitting sightings, and visualising reports on an interactive map, so owners and neighbours can coordinate the search.

Live Demo
PythonFlaskSQLiteLeaflet.js
PetWatch — interactive map showing missing pet reports and sightings

Interactive map view — missing reports and sightings visualised with location pins.

Overview

PetWatch lets users report a missing pet, submit sightings of other people's animals, and see everything plotted on an interactive map instead of relying on social media posts and flyers. Reports can be marked resolved once a pet is found.

  • Report missing pets with location and description.
  • Submit sightings of other users' reported animals.
  • Visualise all reports on an interactive Leaflet map.
  • Mark pets as found to close active reports.
PetWatch — map view with report pins

Map view — missing reports and sightings plotted with location pins.

PetWatch — all sightings feed

All sightings — community-submitted sightings browsable in a list.

Build

Reports and sightings are plotted as map pins, colour-coded by type (active missing report, confirmed sighting, resolved case) so the search area is legible at a glance. Markers cluster when zoomed out to avoid a wall of overlapping pins.

Flask handles CRUD for reports, sightings, and accounts, with Flask-Login for session auth, since reports need to be tied to a real user to stay reliable. SQLite is the store, which is enough for the scale this runs at.

Frontend

Jinja2 · Leaflet.js

Server-rendered templates with an interactive map for report visualisation.

Backend

Python · Flask

Full CRUD for reports and sightings, session auth, and geolocation storage.

Database

SQLite

Users, pet reports, sighting records, and status transitions.

Mapping

Leaflet.js

Interactive map with clustered markers differentiated by report type.

PetWatch — report a sighting form

Report sighting — form for submitting a community sighting.

PetWatch — manage my sightings

Manage sightings — user's submitted sightings with edit and delete actions.

The map was the easy part. Getting marker clustering and type differentiation right so the view stayed legible once reports piled up took more iteration than the backend did.