Projects
Each project is labelled as a team, personal or home lab project, with my part stated plainly. Open one for the evidence: what I did, how I tested it and where it falls short.
Team project, Monash University (FIT5120)
BeyondReAim
A web platform showing young Australian workers how AI may change their industry. My part: ICT support, testing and security. I found and helped fix a CORS misconfiguration, moved the app off admin database access to least privilege, added rate limiting and wrote the security report.
Read the case studyPersonal home lab project
Pi-hole over Tailscale
Network-wide ad blocking in Docker, reached over Tailscale with no router port forwarded. I scanned it with nmap from three vantage points: the ports were filtered from outside and open only on the tailnet.
Read the case study
Personal project, built with an AI coding assistant
DomainCheck
My part: requirements, scope and review, with Claude Code writing the code. It checks SPF, DMARC, DKIM, TLS and security headers using passive checks only. Every outbound request goes through one safe fetcher that blocks private addresses, and tests and CI (ruff, Bandit, pip-audit) enforce it.
Read the case study
Personal project, built with an AI coding assistant
secnews
My part: requirements, scope and review, with Claude Code writing the code. It reads security news feeds, pulls out the CVE numbers and looks up each official NVD score. A local dashboard shows what needs a decision today, merges the same CVE across sources and never guesses a missing score. It checks robots.txt and binds to localhost only.
Read the case study
Personal project, built with an AI coding assistant
Interview Gym
My part: requirements, design spec and review, with Claude Code writing the code. You practise interviews out loud with an AI recruiter or hiring manager, then get a coach report that quotes your own words and never invents any. The model, voices and speech recognition all run locally, so nothing leaves the computer.
Read the case study