Meow Max is a custom-built, mobile-first appointment scheduling platform created for Cat Solutions 305, a nonprofit dedicated to TNR (Trap-Neuter-Return) and foster care for stray cats. Designed for ease of use by over 80 active trappers and administrative staff, the app brings structure, clarity, and scalability to a chaotic scheduling process.
- Frontend: React (with Vite)
- Styling: Tailwind CSS with a custom purple theme
- Backend: Firebase (Authentication, Firestore, Functions, Hosting)
- Scheduling Logic: Firestore transactions, slot validation, and capacity mapping
- Cloud Functions: For secure user management and automated appointment status updates
The Home and Appointments pages provide quick, easy-to-digest summaries of a trapper’s clinic activity:
- Upcoming Appointments are front and center ont the homepage and Appointments page, clearly labeled by date and service type.
- Trappers can see individual details and notes for each appointment, as well as release them individually or all at once.
- Completed Appointments are set to "Completed" automatically after the its set date with a cloud function chron job and sent to the History tab to let users keep track of past visits and notes.
- Users select a date from a calendar, then specify how many TNR or Foster service slots they need.
- Dynamic progress bars visualize how full each category is, helping users understand remaining capacity at a glance.
- Supports real-time availability, slot type differentiation (TNR vs Foster), and admin overrides.
- Powerful calendar interface for managing daily appointments
- Grouped views by trapper, type (TNR or Foster), and notes
- Editable capacities, bulk booking and cancellations for trappers, and performance metrics
- Trappers: can view availability, book, and cancel their own appointments
- Admins: can add, edit, and delete any user or appointment
- Admin-only Firestore Cloud Functions for secure account creation, deletion, and password updates
- Capacity-First Booking Model: Appointments can't be booked unless an admin explicitly sets capacity for that day — preventing accidental overbooking.
- Transactional Safety: All bookings occur inside Firestore transactions to ensure atomic updates across capacity documents and appointment records.
- Performance Metrics: Trapper-level data like appointments completed, over/underbooked rates, and strike counts tracked per user.
- Scalable Schema: Daily slot capacities are stored by date ID (
YYYY-MM-DD), minimizing Firestore reads for monthly and daily queries.
This project reflects the challenges and craftsmanship of building a real-world operational tool from scratch:
- Custom UX that anticipates user behavior on mobile
- Admin-grade tools for batch editing and performance insight
- Robust error handling, permission control, and backend logic
- Designed for long-term maintainability and data integrity











