Home

Projects

Tracksy

Track anything. Nothing preset, nothing wasted.

A habit and goal tracker for Android and iOS where you define what gets measured. Custom units, three tracking modes (cumulative, best-value, completion), and weekly, monthly and yearly views built on the same data. Log by voice in plain language, link goals to habits so progress updates itself, and keep a daily streak going. Data is local-first via AsyncStorage, so it works offline with no account. Now in closed testing with a RevenueCat-backed subscription gating the premium tier, PostHog for behavioural analytics and Sentry for crash reporting.

React Native · Expo SDK 54 · TypeScript · RevenueCat · PostHog · Sentry · AsyncStorage · EAS

I couldn't find a habit tracker that didn't feel like a to-do list dressed up. Tracksy is what I actually wanted to use, and now it's the first thing I've taken all the way to a store listing and a paywall.

Voice logging: say "I drank 3 glasses of water" and it parses value, unit, date and time
Per-habit reminders with custom times, weekday selection and individual toggles
Home with a 194-day streak, pinned habits and live goal progress
Goals filtered by category, each showing progress against its target period
Goal detail: month-by-month history with on-target count, best, average and streak

Home with a 194-day streak, pinned habits and live goal progress

01 / 08

PitchPlease

A full-stack Android shop for sports kits.

An e-commerce Android app for browsing and buying sports kits across Rugby, NBA, Football, and Cricket. Features Firebase authentication, a real-time Firestore product catalogue, cart and wishlist management, a full review system with star ratings, and purchase history tracking.

Java · Android · Firebase · Firestore · Material Design 3 · Glide

A COMPSYS 302 team project that ended up being a proper full-stack build. Real auth, a live database, and enough features that it actually feels like a usable app.

Cart with quantity controls, GST breakdown and checkout
Profile with purchase history and order tracking
Home screen with category browsing, fan favourites and special offers
Product detail with image carousel, star rating and size selector
Customer reviews with star breakdown and user-submitted ratings

Home screen with category browsing, fan favourites and special offers

01 / 06

Celestial Shift

Composite image generation for photographers.

A desktop tool that automates composite image creation: night sky replacements, astrophotography blends, vortex and starburst effects. What used to take hours in Lightroom now takes minutes. Built with a Flutter frontend and a Python image processing server running locally.

Flutter · Python · Flask · OpenCV · Pillow

This came directly out of my photography practice. I was spending hours doing sky composites manually in Lightroom. So I built a tool to automate it. Then kept going.

Home screen showing four generators: Vortex, Slices, Starburst and Circles

Home screen showing four generators: Vortex, Slices, Starburst and Circles

01 / 06

Stock Portfolio Tracker

A real-time investment dashboard built on a reverse-engineered API.

A full-stack investment dashboard for Sharesies, a platform with no public API. The Next.js frontend is deployed on Vercel; a Node.js backend on Railway handles auth, session management, and data proxying. The Sharesies integration was built by reverse-engineering their private API through browser DevTools, tracing XHR requests and reconstructing the full auth flow. Tracks portfolio value, per-holding returns, allocation, fees, and transaction history.

Next.js · TypeScript · Node.js · Express · Vercel · Railway

Sharesies doesn't expose a public API, but their web app does. I opened DevTools, traced every network request the frontend was making, and built a backend that replicates the same calls. Took some work to get the auth flow right.

Dashboard showing portfolio return, allocation breakdown, and holdings

Dashboard showing portfolio return, allocation breakdown, and holdings

01 / 02

SOL Trading Bot

ML-driven crypto trading, live on AWS.

An algorithmic trading bot for SOL/USDT built on an XGBoost classifier trained on live Binance data. Uses RSI, MACD, Bollinger Bands, and Z-score as features to predict short-term price movements. Deployed as a systemd service on AWS EC2 with automatic restarts and a running trade log.

Python · XGBoost · CCXT · Binance API · AWS EC2 · Pandas

Started as a curiosity about whether ML could actually predict short-term price movements. Turned into a live trading system running around the clock.

Top 15 features by XGBoost importance score

Top 15 features by XGBoost importance score

01 / 02

Guess the Thief

A timed mystery investigation game with AI characters.

A JavaFX detective game where you investigate a museum theft under a countdown timer. Navigate between rooms, interrogate AI-powered suspects via live chat, gather clues, and identify the culprit before time runs out. Built as a team project for SOFTENG 206 using university proxy APIs for Chat Completions and multi-voice TTS.

Java · JavaFX · Maven · OpenAI API · Text-to-Speech

A university team project with a real constraint: no direct API access, only a credit-limited proxy. It pushed us to be deliberate about every call we made.

Main menu

Main menu

01 / 06

Sign Language Classifier

Deep learning for sign language recognition.

A VGG-based convolutional neural network trained on the Sign MNIST dataset in PyTorch. Built for COMPSYS 302 at the University of Auckland, with optimised training pipelines, ablation studies across architecture variants, and a detailed final report covering methodology and results.

PyTorch · Python · VGG · Deep Learning · NumPy

A COMPSYS 302 assignment that turned into a proper deep dive on CNN architecture decisions: how depth, kernel size, and batch normalisation interact in practice.

Dataset loading screen with 36-class breakdown and progress tracking

Dataset loading screen with 36-class breakdown and progress tracking

01 / 04