I write enterprise Java web applications during the day, the kind with long-lived business rules, workflow engines and a QA process behind every release. After hours I build the other half of the stack: Spring Boot APIs and Angular/React front ends.
That split is deliberate. Work taught me how software survives in production. My own projects are where I go deep on the modern stack, stateless JWT auth, Angular Signals, WebGL and then write down why I chose what I chose.
- ๐ BSc Information Technology, North-West University (2023)
- ๐ IBM AI Fundamentals ยท Anthropic Claude 101 & Claude Code 101 ยท Scrimba JavaScript & HTML/CSS
- ๐น๏ธ Side quests: producing music, soccer, reading, and far too much anime ๐ก๏ธ
- ๐ The snake at the bottom of this page eats my commit history. Stick around for it.
Backend & Database
โ Spring Security ยท JWT
| Project | What it is | Links |
|---|---|---|
| ๐ฎ GameStore | Game storefront + admin portal on a secured Spring Boot API | Backend ยท Frontend |
| ๐ Employee Management System | Stateless JWT auth done properly across an API and an Angular client | Backend ยท Frontend |
| ๐ Code Pairs | Memory game rebuilt on Angular standalone components + Signals | Repo ยท Live |
| ๐ Personal Portfolio | One looping scroll over a WebGL aurora โ no router, ADR-documented | Repo ยท Live |
Started as a React UI exercise. I kept asking what an actual store needs behind the pretty grid, and it turned into a full-stack MVP.
- Two audiences, one API. Customers register, search the catalogue live, open game detail pages and build a personal library. Admins get a separate portal with full CRUD over games and users.
- Security is the backbone, not a bolt-on. Spring Security with JWT bearer tokens, USER/ADMIN role separation, and fully stateless sessions โ no server-side session state to scale around.
- Documented like a system, not a demo. The request flow, auth handshake and data model are drawn out as Mermaid diagrams in the repo, so a reviewer can understand the architecture without reading every class.
Plenty of tutorials stop at "login works". I built this one to find out where token-based auth actually leaks: the seam between an API that trusts nothing and a client that has to remember everything.
- Java 17 / Spring Boot REST API over employee records โ CRUD, validation, and a Spring Security 6 filter chain that issues and verifies JWTs on every request.
- The Angular side holds up its end. An HTTP interceptor attaches the token to outbound calls; route guards keep protected routes protected instead of just hiding the nav link.
- Ships with an architecture and MVP roadmap doc โ scope, data model, and what deliberately got left for v2.
A code-themed card matching game that I tore down and rebuilt on Angular's standalone components and Signals โ the rewrite was the point.
- Game state as derived state. Score, remaining attempts and win conditions fall out of signals instead of manual change-detection wrangling, which killed a whole class of stale-UI bugs.
- Difficulty tiers change the grid size and the attempt budget, so the rules live in one place rather than scattered across components.
- Brutalist visual language with 3D CSS flip animations โ no animation library, just transforms and
backface-visibility.
๐ Repository ยท Live Demo
I didn't want a rรฉsumรฉ with a nav bar, that's boring. This one is a single continuous scroll: five destinations that wrap into a seamless loop, floating over a WebGL aurora.
- No router. The whole site is one scroll loop with a cloned first section at the end, so reaching the bottom wraps back to the top without a jump or a route change.
- WebGL aurora shader rendered with OGL, plus a constellation that morphs between the four route shapes as you travel โ driven by a shared viewport-observer service rather than a dozen loose IntersectionObservers.
- Every real decision is an ADR. Eight of them so far, covering the loop wrap, nav muting and surface treatment. The repo also ships an interactive onboarding guide for anyone reading the code cold.
๐ Repository ยท Live Demo


