Misas Mendoza
Personal project
Mass times across Mendoza in one place: nearby search plus a volunteer-run admin panel.
Technologies
- Next.js
- TypeScript
- PostgreSQL + PostGIS
- Supabase
- Leaflet

The problem
In Mendoza, Argentina, Mass times for parishes and chapels were scattered across noticeboards, social media and word of mouth. Someone who had just moved, a visiting family or a tourist had no single place to find out when there was a Mass nearby.
Local reality is also messy: each parish decides when to switch between winter and summer schedules, and some monthly Masses replace that day's regular ones.
The solution
A free web app that brings together Mass times, addresses and contact details for churches across Greater Mendoza, sorted by distance. It works on any phone, with no sign-up, no download and no ads.
Behind it, volunteers from each area keep the data current through an admin panel with role-based permissions and an approval workflow.
My role
An end-to-end personal project: concept and needs assessment, interface design with light and dark modes, development of the site and the panel, database, security, production rollout, search engine optimization and data curation. I also wrote the step-by-step guide for volunteers. I used AI coding assistants along the way, always reviewing the result myself.
Key features
- The nearest Mass, in seconds: with location sharing on, the closest churches show up first, with the next Mass time already worked out.
- Filters built for real use: accent-insensitive search, plus filters by district, day and time of day.
- A page for every church: winter and summer schedules with the current one highlighted, special Masses, confession times, contact details, directions and WhatsApp sharing.
- Favorites and a map, no account needed: users pin their usual chapels and browse every church on an interactive map.
- Safe, collaborative editing: each volunteer edits only their own area, and an editor's changes wait for an administrator's approval.
- Installable like an app: it can be added to the home screen without an app store, and visited pages keep working offline.
Challenges and decisions
Schedules with no fixed rule. Instead of forcing a single calendar, the volunteer flips the current season with one button, and the system works out the next Mass while respecting the exceptions. That logic is covered by automated tests, because a mistake there sends someone to a Mass that doesn't exist.
Trusting volunteers without putting the data at risk. With several people editing from their phones, security is layered: three roles limited to their district, permissions rechecked on the server for every action, sessions that expire after inactivity, and a second approval for sensitive actions.
Getting found on Google, fast on mobile. An audit showed that search engines saw an almost empty home page. I unified the site address, added Mass-time pages per district and moved key content to server rendering. In mobile lab tests, the performance score went from 73 to 94.
Results
- Live in production on its own domain.
- 88 active churches with 565 Mass times across 6 districts of Greater Mendoza.
- Contact details updated for 22 parishes, with permission from the institution that publishes them.
- 50 automated tests, and every change goes through code review, tests and a build before going live.
More screenshots

Admin panel listing churches and the next Mass at each one

Panel overview: active churches, events, requests and volunteers