← Back home
My Projects

Everything I've built

Websites, robots, hardware. The full list.

NUS Formula SAE R26e Race Car

NUS Formula SAE R26e Race Car

LV systems for our electric FSAE car — custom STM32 dashboard, harnesses, and ECU firmware so the car can race and we can see the data.

STM32
C/C++
PCB Design
CAN Communications
Wiring Harness
Embedded Firmware
Telemetry
Electric Vehicle

Jet Coffee

Coffee cart app for Jayapura. Find a cart on a map, order ahead; sellers run the fleet from a web dashboard. iOS and Android.

React Native
iOS
Android
Next.js

Obsidian Plugin: SupaBase Jump

Obsidian plugin that syncs your vault to your own Supabase. Two people can edit the same note at once (Yjs), and attachments come along.

Typescript
Obsidian
Supabase
PostgreSQL
Yjs
CRDT
Plugin

Obsidian Plugin: Vault LLM Assistant

Ask questions about your Obsidian notes and get answers with citations, or generate a new note. Works with OpenAI, Gemini, Claude, or a local model.

Typescript
Obsidian
OpenAI
Gemini
Claude
Plugin

Raycast Extension: Dev Tools

A Raycast extension with the small tools I kept opening extra tabs for — time conversion, base64, networking, mock data.

Typescript
Raycast
Extension

KEVII Gym Booking

Gym booking for KEVII Hall. Book a slot, check in/out, and you get points if you no-show. Still used by the hall.

React
Typescript
MongoDB
Express
TailwindCSS
Shadcn UI
Vercel

Python Code Tracer

Write a Python function in the browser and step through it. Built so I could see what the code was actually doing.

React
Typescript
Python
Pyodide
TailwindCSS
Shadcn UI
Vercel

JimBro

I built this to log workouts, weight, and food. Gemini helps with recommendations and guessing calories from text or a photo.

React
Typescript
MongoDB
Express
TailwindCSS
Gemini
Shadcn UI
Vercel
botXplorer AMR

botXplorer AMR

AMRs at SICK — LiDAR + ROS for nav, plus a Flask app to drive and watch the robot.

ROS
rospy
roscpp
SLAM
AMCL
LiDAR
Flask
Raspberry Pi
Sensors
XML
Python

Millennio Company Page

Company site for Millennio. React, TypeScript, Tailwind — a clean landing page.

React
Typescript
TailwindCSS

Kiasu Hawker Company Page

Landing page for Kiasu Hawker, the hawker platform we built for Samsung Solve For Tomorrow (1st runner-up).

Next
TailwindCSS
Vercel

Kiasu Hawker POS

Hawker POS from the Samsung Solve For Tomorrow project — live orders, sales, menus. React and Laravel.

React
Laravel
SQL
Bootstrap
Vercel
Heroku
DigitalOcean
Kiasu Hawker Smart Hawker System

Kiasu Hawker Smart Hawker System

Seat sensors in a hawker centre. ESP32s talk through Node-RED so the app can show which seats are free.

Node-RED
DigitalOcean
SQL
Microcontrollers
C
Sensors