James Blair

Kia ora! I'm a first-year Computer Science student at The University of Auckland.

Projects

WaiMUN

Website and registration for Interschool MUN (~80 delegates in 2024, over 120 in 2025). Sanity CMS, Airtable, and Stripe, plus tooling for event badges and personalised allocation emails.

  • Astro
  • Sanity CMS
  • Airtable
  • Stripe
  • TypeScript
  • React Email

Lectern

Event management platform for organisations, bringing publishing, registration, ticketing, check-in, participant imports, branded public pages, and printable materials into one place.

  • TypeScript
  • TanStack Start
  • Convex
  • WorkOS
  • Stripe
  • Resend
  • React PDF

TimeTree

Lead developer on a UOACS × DEVS hackathon project. Maps decisions as pathways so you can see how outcomes branch.

  • Next.js
  • TypeScript
  • Convex
  • Clerk
  • AI SDK
  • React Flow

Saku

Discord-hosted coding agent and harness in Rust with threaded conversations, file and shell tools, web search, and memory system for working on codebases away from the terminal.

  • Rust
  • Serenity
  • Codex
  • Exa

Alien Helpdesk

Helpdesk simulator game where players answer tickets from aliens, with AI-graded user responses.

  • Next.js
  • TypeScript
  • Zustand
  • AI SDK
  • Base UI

AnkAI

Built a study app that turns messy notes into Anki-style decks, with a collaborative, realtime editor and an AI microservice which generates structured flashcards.

  • Next.js
  • TypeScript
  • Convex
  • Clerk
  • Tiptap
  • OpenRouter

Homelab

Maintain self-hosted infrastructure for learning production-style operations, including Linux servers, Docker services, reverse proxies, backups, and home networking.

  • Linux
  • Docker
  • Caddy
  • Cloudflare
  • Networking
  • UniFi

Bridging Plugin

Developed a multiplayer game server plugin in Kotlin, implementing a session replay system, packet-level NMS hooks, and a persistent MariaDB database layer using Exposed and coroutines for async handling.

  • Kotlin
  • Spigot
  • Exposed
  • MariaDB

PaperSpigot Patch

Identified and patched a state desync bug in PaperSpigot – out-of-range block placements were rejected without a corrective client update, causing ghost blocks. Fixed by forking the project and issuing the missing update packets.

  • Java
  • PaperSpigot
  • Minecraft
  • NMS