Academic Capstone Project

Professional Diploma in Software/Web Development

Developer Avatar

Nur Azhar

Candidate, Lithan Academy (July 2026)

Core Deliverable: Final Graduation Project

About TasteLocal

TasteLocal is a modern hyper-local culinary exploration and directory application designed to bridge the gap between travelers, local foodies, and Singapore's heritage dining scene. Built as a self-contained, high-performance web platform, it includes comprehensive search/filter capabilities, a live table booking engine, customized user itineraries, and multi-tier role dashboards.

Advanced System Architecture

Clojure Backend

Engineered with Babashka (Clojure-JVM) leveraging Ring specifications and HTTP Kit for lightweight, fast HTTP request processing with functional programming elegance.

HTMX Interactivity

Utilizes hypermedia-driven interfaces. Accomplishes modern dynamic SPA reloads and real-time state changes with zero-JavaScript client-side compile bundles.

Dual-Mode DB

Features a dual-mode engine. Automatically seeds an embedded SQLite engine on boot, with seamless support for switching to a production PostgreSQL database via system environment URLs.

Security & RBAC

Enforces custom-built session management with OpenSSL-compatible cryptography and secure hashing, safeguarding role-based workflows for different user tiers.

🔑 Hiring Manager Sandbox Credentials

Skip standard sign-up steps! Log in instantly with any of the pre-seeded role credentials below to explore custom workflows:

System RoleUsernamePasswordCore Capability
Tourist / FoodietouristpasswordPlan itinerary, book dining, add reviews
Vendor / BusinessvendorpasswordManage reservations, update status
System AdminadminpasswordModerate and delete listings & reviews

🛠️ Production Post-Mortem: Overcoming the Clojure Parenthesis Odyssey

Software development in a production containerized environment is rarely an effortless, straight line. As part of deploying this capstone portfolio, the live server encountered an HTTP 503 'Upstream Connection Failure' due to a subtle syntax mismatch in this very view file. Below is the operational sequence utilized to resolve the issue systematically:

1. Telemetry Isolation via Temporal Filters

By applying ISO-8601 temporal logs filtration to the Northflank deployment streams, we successfully isolated stale proxy cache records from active runtime diagnostics. This revealed a compile-time crash inside the Babashka SCI parsing engine: Unmatched delimiter: ], expected: ) to match ( at [9 5].

2. Deterministic Lisp Tracer Static Analysis

Rather than trial-and-error debugging, we wrote and executed a deterministic Clojure/Babashka tracer script that scanned the file character-by-character, mapping bracket depths. The parser proved that the Hiccup [:div.container] vector remained unclosed, leaving the trailing parentheses orphaned.

3. Mathematical Realignment & Immediate Recovery

Aligning the nesting blocks precisely to ]]]]))) instantly balanced the AST. The container compiled successfully, seeded the SQLite DB on boot, bound to internal port 8080, and served the page you are reading now. This demonstrates a deep competency in container instrumentation, telemetry routing, and system recovery.

Sign In to Test Sandbox