01 / Work

LiveIvents

Event discovery platform · Sweden

LiveIvents — homepage after the redesign
LiveIvents — homepage before the redesign

Problem

LiveIvents helps people in Sweden find concerts, theatre, art and markets near them, and helps artists and venues get found. The app worked, but it was slow, it had no tests, and the design was plain. Every change was a gamble. The owner wanted to keep improving the product, so it needed a codebase that could take new work without breaking old work.

Approach

We tested first and changed things second. Before touching any code, we wrote characterization tests that pinned down what the API actually did. Then we moved the React client and the Express API from JavaScript to strict TypeScript, one pull request at a time, so nothing had to go dark for a big-bang rewrite.

Speed came from fixing what made the app wait. Pages now load only when someone opens them instead of all at once, the app no longer holds every route until the login check finishes, and the map moved to vector tiles.

The security work closed real gaps. API responses stopped leaking password hashes and sensitive fields, and requests are now checked against the account’s current state, so suspended or deleted accounts lose access straight away. We also added CSRF protection, safe refresh-token rotation, upload limits and rate limiting, and cleared every known high or critical dependency vulnerability. Privacy became something the product actually does: people can manage marketing consent, export their data and delete their account for good.

Then came the redesign: a warmer visual language, new search and map pages, and redesigned event, profile and account screens. It also has Blobo, a mascot who keeps people company through sign-in and their account pages, and looks properly sad on the 404 page and when someone deletes their account.

Technology

React 19, Vite, Tailwind and HeroUI on the client, and an Express and MongoDB API, all in strict TypeScript. MapLibre draws the map. Vitest, Supertest, React Testing Library and Playwright cover the server, the client and the main user journeys, and every pull request goes through a CI pipeline before it reaches staging and then production.

Visit LiveIvents.