All work

Project

Gacha Makan

Food app. I built the weighted random selection endpoint, PostGIS proximity queries and a rate-limited reporting API.

Context
Team of five
Role
Backend Developer
Stack
Next.js, Supabase, PostgreSQL, PostGIS
Year
2026

Problem

Students in Jatinangor (ITB and Unpad) lose time every day deciding where to eat, and map ratings say nothing about whether a kitchen is clean today. Interviews with students showed both decision fatigue and cases of falling ill after a bad meal.

Solution

Spin The Food gives one instant recommendation, picked by weighted random selection from the user's budget, distance and eating history. Hygiene Flag lets students report a dirty place in real time, and a place with no red flags for three months gets a Verified Safe badge. A hygiene map shows risky, safe and unrated places around campus.

How it works

A Next.js web app calls server actions, which filter restaurants and run the gacha algorithm. Restaurant data lives in Supabase PostgreSQL, and PostGIS radius queries find places within the chosen distance. The result links straight to navigation or a Gojek/Grab order.

My role

Course project in a team of five; I was the backend developer. I built the weighted random selection endpoint, the PostGIS proximity queries and a rate-limited reporting API for hygiene reports.

Architecture diagram: Next.js client, server actions with the gacha and filter algorithm, Supabase auth, PostgreSQL and PostGIS, plus map and ride-hailing servicesHygiene map prototype with red, green and grey restaurant pins and a report panel for a red-flagged stall