All case studies
Case study · Web Development

StreetSchool — Combat Sports Community SPA

Laravel + Vue single-page app for a combat-sports community — auth-gated member management with category and weight-class structure, served as an SPA shell off a catch-all Laravel route.

Industry
Web Development
Engagement
Discovery → Launch
Region
Global
Status
Live

StreetSchool — Combat Sports Community SPA · Cover image

01 · The challenge

What needed solving

The client ran a community of combat-sports practitioners and needed a member roster organised by community category and weight class — instead of WhatsApp groups and a spreadsheet. The UX had to feel like an app (fast tab switches, no reloads) so members would actually use it on their phones.

02 · Our approach

How we framed the work

We started with a discovery sprint to map the user journey, business goals and real constraints. From there we wrote a fixed-scope plan: clear milestones, weekly review gates on a staging URL, and a written exit criterion for every phase. The web development space rewards teams that ship — not teams that plan — so we biased the engagement towards working software from week two onward.

03 · The solution

What we built

We built a Laravel + Vue SPA hybrid: Laravel handles authentication and serves a Vue application off a single catch-all route ({path} → HomeController), letting Vue Router own all navigation client-side. The domain model is members organised by community category and weight class — the structure most combat-sports communities (boxing, MMA, kickboxing) already think in. Auth is Laravel's built-in stack with the SPA front-loading user state on boot. Half the codebase by line count is the Vue layer (49.7%) — the heavy frontend reflects that this is an app-first build, not a CMS.

04 · The results

What changed for the client.

Vue SPA (49.7%)
Frontend
Client-side via catch-all
Routing
Category + weight class
Member Structure
  • Single-page experience — phone users get instant tab switches with no reloads

  • Members structured by category + weight class — the way the community already thinks

  • Laravel handles auth and API; Vue owns the UX — clean separation, easy to iterate

Tech stack

LaravelVue.jsSPAAuthMembershipCatch-all routing

Want a similar outcome for your business? We'd love to hear about it.

Your case study, next

Let's build the next one together.

Fixed-scope quote in 24 working hours.