Chapter Three

Portal de Paz


Fig. III - Bilingual events and operations platform for a healing space I co-founded in Ecuador

Built withPython · FastAPI · Firestore · Cloud Run · Google OAuth · Google Calendar API · Gemini · Brevo · Tailwind CSS

The Problem

Portal de Paz is a healing and community space in Mindo, Ecuador that I started with two friends. I am one of the three owners and I built the entire digital side of it: the platform, the site, the Google Business listing, the email, the Instagram, the WhatsApp community. The hard part of running a space like this is keeping track of the moving pieces. Who has the room and when, which classes are running, which facilitator is teaching them, who has signed an agreement, who still needs a profile put up. Done by hand that is a constant drip of coordination for three people. I built the platform to absorb all of it, so facilitators onboard themselves, publish their own profiles, sign their own agreements, and book their own time in the space with no manual setup from us.

What I Built

  • Bilingual English/Spanish public site at full parity across 777 translated strings, covering classes, events, therapies, and room and space rentals. Facilitator-submitted content is auto-translated through Gemini so the second language never rots.
  • Self-serve facilitator onboarding through Google OAuth, with an owner approval gate before anyone goes live.
  • Facilitator dashboard: publish and schedule recurring classes with per-date exceptions, request rentals against live space occupancy, and manage services plus a public profile with photo upload and WhatsApp contact.
  • Owner admin: bookings and registrants in one view, approval queues for facilitators, bookings, and proposed categories, and a shared inbox for contact and newsletter submissions.
  • Finance ledger tracking income, expenses, and facilitator payouts, exportable to CSV by period.
  • Calendar layer with subscribable ICS feeds (public, per-facilitator, per-event, and an authenticated admin feed that includes private rentals) plus Google Calendar write-back with recurrence rules, so a single cancelled class disappears from every subscriber's calendar.
  • Programmatic SEO: therapy and class landing pages generated from a facilitator-proposed, owner-moderated catalog, plus local guide pages, JSON-LD for Service, Event, Person, FAQ, and LocalBusiness, and a dynamic sitemap.
  • Installable as a PWA, so facilitators and regulars can add it to their phone home screen like an app instead of hunting for a browser tab.
  • Production hardening: Turnstile and honeypot anti-spam, versioned e-signed rental agreements that gate feature access, a service worker, a pytest suite, and keyless GitHub Actions deploys to Cloud Run through Workload Identity Federation.

How It Works

A facilitator signs in with Google and publishes a class or event from their own dashboard. It lands in the owners' approval queue rather than going live unreviewed, and Gemini translates the submission so both languages stay in parity. Once approved it publishes to the bilingual public site, generates its SEO page, and propagates through the ICS feeds and Google Calendar write-back, where recurrence rules keep repeating sessions and their cancelled dates correct on everyone's calendar. Attendees register and get a confirmation with a calendar invite attached, facilitators get a scheduled digest of new registrations, and payments recorded against the booking roll up into the admin ledger for export.

Results

The three of us run the space from one dashboard. Facilitators onboard and publish themselves behind an approval gate, bookings and registrants sit in a single view, and every payment lands in a ledger we export by period. Attendees get a real bilingual schedule with confirmations and calendars they can subscribe to. The programmatic therapy, class, and local guide pages launched recently and are starting to surface in Google, though ranking data is still early. It is also the first local business I have had of my own in a while, so it doubled as a proper local SEO build from scratch in a small tourist town: Google Business Profile, guide pages, and structured data all pointing at the same place.

Portal de Paz bilingual homepage with schedule, therapies, and facilitator navigation

At a Glance

  • LanguagesEN / ES at parity
  • Translated strings777
  • Owner seats3
  • Ledger exportCSV by period

View it live →