Back to Portfolio
personal project · 2025–2026

ukus_

A full-stack restaurant discovery and review platform — a personal culinary journal for tracking dining experiences, discovering hidden gems, and connecting with food lovers.

ukus.app
Ukus Screenshot
Astro SSR React TSX MongoDB Atlas TypeScript Capacitor (Android) MapLibre GL Cloudinary Brevo / Email Render Node.js / Python
20k+
Restaurants
Full
Stack
iOS+
Android App

Project Overview

Ukus is a production-grade restaurant discovery and review platform built entirely solo from concept to deployment. Users can track dining experiences, explore a database of over 20,000 Canadian restaurants, follow other food enthusiasts, and generate shareable analytics summaries of their culinary history — all wrapped in a custom editorial design system.

The project spans a web application, an Android mobile app, a content blog, an influencer discovery system, and a custom database enrichment pipeline — demonstrating full product development from infrastructure to UI.

Key Features

Restaurant Discovery & Filtering Search by city, cuisine, dietary requirements, and community badges. View results on an interactive MapLibre map.
Personal Culinary Profile Restaurant log, cuisine passport, personal food map, curated lists, achievements, and a social following system.
Ukus Data — Wrapped-style Analytics Seven-slide personal analytics summary with computed food personality type, shareable via native device share sheet or downloadable as images.
Influencer Directory Two-tier system with curated legacy profiles (Anthony Bourdain, John Catucci) and verified community influencers, all in a consistent editorial profile style.
Android Mobile App Native Android wrapper built with Capacitor, pointing to the live Render deployment. Changes to the web app reflect immediately.
Database Enrichment Pipeline Custom Node.js and Python scripts to geocode 20k+ restaurants, enrich dietary data from OpenStreetMap, and normalise city names across the entire database.

Engineering Highlights

01
Stale Closure Bug Resolution
Diagnosed and fixed a complex React stale closure bug in the filter system using useRef-based loading guards and explicit filter state objects passed at call time rather than captured by closure.
02
OKLCH-Aware Image Export
Implemented slide-by-slide image download for the Wrapped feature using modern-screenshot, one of the few libraries capable of rendering OKLCH colour values to canvas correctly.
03
Geocoding Pipeline with Checkpoint/Resume
Built a robust geocoding script with three-tier address strategy, Nominatim rate limiting, and checkpoint/resume logic — capable of processing thousands of records without data loss on interruption.
04
Custom Design System
Designed and implemented a complete branded design system using OKLCH colour tokens, DM Serif Display + Geist Mono typography, 0.5px border-based layouts, and a full Canva brand guide for marketing assets.

What I Learned

Full-stack SSR architecture with Astro and React
MongoDB aggregation pipelines and data modelling at scale
Native mobile deployment with Capacitor
Building and shipping production data pipelines in Node.js and Python
Designing and maintaining a cohesive product design system from scratch