Skip to content

Projects

What I've built

  • Pokemon Team Builder

    Angular application for building competitive Pokémon teams, with live stat calculation, type-coverage analysis and a full Pokédex.

    • Angular 21
    • TypeScript
    • Signals
    • Tailwind CSS 4
    • PrimeNG
  • Pokemon Team Builder · API

    REST API in Java 21 and Spring Boot 4 with JWT authentication, persisted refresh tokens, per-IP rate limiting and PokéAPI synchronisation.

    • Java 21
    • Spring Boot 4
    • Spring Security
    • JWT
    • PostgreSQL 17
    • Docker
  • Necobot

    Discord bot in TypeScript with a points economy, minigames and in-character replies generated by a locally hosted language model.

    • SQLite
    • Ollama
    • Docker
    • Drizzle
    • Sapphire
    • TypeScript
    • Discord API
    • GitHub Actions
  • Homelab

    Linux server at home that hosts my projects with Docker Compose, exposed to the internet through Cloudflare Tunnel without opening ports.

    • Linux
    • Docker Compose
    • Cloudflare Tunnel
    • PostgreSQL
    • Ollama
  • This Portfolio

    The site you're looking at: Angular 21 without zone.js, prerendered at build time, with light and dark themes and internationalisation, served as static files from Cloudflare.

    • Angular 21
    • Tailwind CSS 4
    • Prerender
    • i18n
    • Cloudflare