My Projects

AT Route Performance

Measures how far Auckland Transport runs from its own published schedule. Polls AT's GTFS-RT feed every couple of minutes and stores each stop arrival with its deviation. Rolls completed service days into per-route summaries behind daily boards, rankings, and per-route and per-stop pages. Counts cancellations separately and filters out ghost readings so a cancelled service cannot flatter a route.

Skills Used:

  • Auckland Transport API
  • Leaflet
  • MongoDB
  • Next.js
  • Prisma
  • TypeScript

Discord Events-to-iCal Bot

Slash command exports upcoming Discord events to a universal .ics feed. Handles timezone conversion and auto-fills missing end times. Attaches the .ics file directly in Discord. Roadmap includes more calendar features.

Skills Used:

  • Cloudflare
  • discord.py
  • ICS Calendar library
  • Nginx
  • Python
ChatGPT Discord Bot

ChatGPT Discord Bot

Discord bot using the OpenAI API to generate replies with configurable personality, tailored to each user. Thread-aware memory, emoji replacement, LaTeX-to-image conversion, and image/file inputs enhance chats. Slash commands for controlling cooldown between messages, encrypted memory storage, and rotating logs make debugging easy.

Skills Used:

  • Discord.js
  • Giphy API
  • LaTeX Rendering
  • OpenAI API
  • Tenor API
  • TypeScript
Triangle Location Dashboard

Triangle Location Dashboard

Website to select addresses and candidate meeting places on Google Maps. Computes geographic midpoint and picks the most central option. Drag-and-drop lists and auto-fit map bounds for better UX. Ranks by real driving times via the Routes API, falling back to straight-line distance.

Skills Used:

  • Google Maps JavaScript API
  • Next.js
  • Tailwind CSS
  • TypeScript

ReactionBot

Combines multiple bot ideas into one. Reacts with emojis using regex-based phrase triggers. Rewrites social links into embeddable forms with poster confirmation. Slash commands to add or update keywords. Originally Python. Migrating to TypeScript.

Skills Used:

  • Discord.js
  • discord.py
  • Python
  • TypeScript