Back to Work
Case StudyFull-Stack Engineering20261 min read

Lagoon Eats

A searchable directory of the food stalls around PUP Manila's Lagoon: menus, prices, hours, and student reviews in one place.

Consumer WebDirectory & ReviewsSupabase
1 / 3

The landing: browse every food stall around PUP Lagoon by cuisine, with top-rated stalls surfaced up front.

01Challenge

The food stalls around PUP Manila's Lagoon are a campus institution, but their menus, prices, and hours live nowhere. You find out by walking over and queuing. Students had no way to compare options or know what was open before making the trip.

02Solution

Lagoon Eats centralizes it. Every stall gets a profile with its menu, price range, hours, photos, and aggregated rating, and students search and filter by name, price, cuisine, and rating to decide before they walk. Postgres row-level security handles authorization entirely, so app code just builds features while the database decides who can do what.

  • Search plus multi-filter discovery by name, price, rating, and twelve cuisine categories
  • Community reviews and ratings, with stall scores auto-recalculated by a Postgres trigger on every change
  • Personal favorites and image-rich stall and menu profiles served from Supabase storage
  • Admin panel for stall and menu CRUD, gated by role-based access control
The database is the authorization layer. App code builds features; Postgres decides who's allowed, so a policy is the only place a permission bug can hide.
03Results

A full-stack directory seeded with real campus data (twelve stalls and their menus) where the entire authorization model lives in thirty row-level security policies rather than scattered app-code checks. Ratings stay in sync automatically through database triggers, with no cron jobs required.

04Tech Stack
Next.jsTypeScriptSupabasePostgreSQLTailwind CSSVercel