Skip to content
AR
All projects
Web PlatformBackend Architecture

WISLA

A modular athlete management platform built with Java 17 and Spring Boot 3, serving 20K+ daily users across multiple sports organisations.

Java 17Spring Boot 3Spring Security 6MySQLJPA/HibernateREST APIs

The brief, unpacked

WISLA is a comprehensive athlete and team management platform designed for sports organisations to manage registrations, scheduling, performance tracking, and communication. The platform handles complex domain logic including multi-tenant organisation hierarchies, role-based access control with Spring Security 6, and real-time synchronisation across distributed services. I architected the backend from the ground up, designing a domain-driven service layer with JPA/Hibernate for MySQL, RESTful APIs with comprehensive OpenAPI documentation, and a modular monolith structure that supports future microservice extraction.

Daily Active Users
20K+
API Response Time (p95)
<120ms
Tenants
15+
Test Coverage
92%

The work

Challenges, and how they fell

  1. 01

    Multi-tenant data isolation

    Serving multiple independent organisations with strict data isolation requirements and varying custom field schemas.

    Solution

    Implemented a discriminator-based multi-tenant strategy with Spring Security filters injecting tenant context at the request level. Custom field schemas are stored as JSONB with Hibernate custom types, enabling flexible per-organisation attributes without sacrificing query performance.

  2. 02

    Complex role hierarchies

    Organisations required granular permission models — from league administrators to team coaches to athletes — with overlapping and inheritable permissions.

    Solution

    Designed a role-based access control layer using Spring Security 6 method-level annotations, with a custom permission evaluator that resolves transitive role hierarchies. The permission matrix is cached in Redis with tenant-scoped invalidation.

  3. 03

    High-throughput competition scheduling

    The scheduling engine needed to handle concurrent booking requests for venues, officials, and team slots without conflicts, across multiple timezones.

    Solution

    Built a pessimistic locking scheduler with MySQL row-level locks and a compensation transaction pattern for conflict resolution. The scheduler processes bookings in batch with configurable window sizes, achieving sub-100ms response times at peak load.

Gallery

WISLA platform — light mode dashboard
Platform — light mode
WISLA platform — dark mode dashboard
Platform — dark mode
WISLA — student dashboard
Student dashboard
WISLA — faculty dashboard
Faculty dashboard
WISLA — company dashboard
Company dashboard
WISLA — company student applications
Company — student applications
WISLA — faculty students view
Faculty — students
WISLA — available offers for students
Students — available offers

Next project

Interactive Portfolio

Continue

← All projectsPrivate project — no live link