My Projects
Auckland Transport Tracker
Gets real-time data for Auckland buses, trains, and ferries. Compares actual arrivals against scheduled stop times. Work in progress. Backend currently operational.
Skills Used:
- Auckland Transport API
- Next.js
- PostgreSQL
- 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
Large personal project focused on high-quality chat in Discord. Persona replies with thread-aware memory and cooldown controls. Emoji replacement, LaTeX-to-image, and image/file inputs. Supports edge cases, math rendering, and Tenor/Giphy media. Encrypted memory storage and rotating logs for clean debugging.
Skills Used:
- Discord.js
- LaTeX Rendering
- OpenAI API
- Shell Scripting
- Tenor API
- TypeScript
ReactionBot (StinkyBot - Working Title)
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

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. Planned: use routes and travel times instead of straight lines.
Skills Used:
- Google Maps JavaScript API
- Next.js
- Tailwind CSS
- TypeScript