Mischa Barmettler

Software Developer. Zürich, Switzerland.

Selected Projects

BitMarket

AngularSpring BootPostgreSQL

A marketplace where people buy and sell new or used goods through auctions or fixed-price listings.

I started with direct HTTP calls between services, so when the notification service went down, orders failed with it. Moving to RabbitMQ decoupled them, so the marketplace keeps running even when notifications are down. My first time using message queues, and the payoff made the pattern click.

Amtli

AngularSpring BootPostgreSQL

A family chore app where parents post tasks and rewards, and kids accept tasks, submit proof, earn points, and spend them in the shop.

Short-lived JWT tokens meant a session started failing with 401s the moment one expired. I added an interceptor that catches a 401, silently refreshes the token, and retries the request. The trap was that the refresh call returns 401s too, so it looped on itself until I excluded the /auth endpoints.

Töggele

AngularIonicSpring BootPostgreSQL

An app for running foosball tournaments. Players form teams, play timed group phases into a knockout bracket, enter results, and track their stats.

The codebase I inherited had every controller manually cutting the JWT from the header to find the user, often twice per request. I built a @CurrentUser annotation backed by a custom HandlerMethodArgumentResolver that injects the user straight into controller methods. It cut around seven redundant lookups and put auth logic in one place instead of copy-pasted everywhere.

RoomPlanner

AngularSpring BootPostgreSQL

A 2D room planner where users draw walls, drag and rotate furniture onto the canvas, add doors, and save floor-plan layouts to their account.

My first collision check was a simple bounding-box overlap. That worked until users could rotate pieces, when a rotated chair would block spots it didn't touch or slip into ones it shouldn't. I rewrote it with the Separating Axis Theorem to handle rotated shapes, keeping the cheap box test as a fast path for the common case.