Overview
Aurora Trails is a booking platform for Arctic adventure tours in Northern Norway. Customers can browse tours, book a date and manage their bookings, while guides see the tours they are assigned to.
The challenge
Tours have a limited number of seats. When two customers try to book the last seats at the same time, a naive implementation can sell more seats than exist.
How I solved it
- Overbooking-safe bookings using row-level locking in PostgreSQL, so concurrent bookings for the same tour date are handled one at a time.
- JWT authentication with automatic token refresh in the Angular frontend.
- Role-based flows for customers and guides.
- Live weather and aurora forecasts for each tour date.
Quality
- 43 automated tests running in GitHub Actions on every push
- API documented with Swagger