01
Student dashboard
Today’s score, progress across the bank, daily bars, review calendar and knowledge level. The backend builds the chart configuration from aggregate tables; the frontend just renders it.
Case study · 05 / 09
E-learning platform for law students
Practice tests built on the actual statutes, spaced repetition, real-time multiplayer quizzes — and Ustawoteka, a reader that plays the law aloud, line by line, on the web and in a mobile app.
IUSVitae
EdTech · Law
Web app + Flutter mobile app
Product engineering, end to end
The product
Law students and bar candidates build tests from a question bank mapped to every part of a statute, repeat what they keep getting wrong, race friends in live games and follow their progress. Ustawoteka reads legal codes aloud with the current provision highlighted — handy on a commute through the mobile app. Access is sold as subscriptions.
Our part
A Vue 3 + TypeScript frontend on a Laravel 12 backend in hexagonal/DDD architecture with CQRS, real-time games on Laravel Reverb WebSockets and recurring payments across three gateways.
Under the hood
Races, exams and homework on Laravel Reverb: private and presence channels, chat on client whispers and a leaderboard driven by events.
A recursive tree of book, title, division and chapter with cascading selection and the question count at every level.
Joined audio files with fragment offsets keep the reading in step with the provision on screen, at adjustable speed, with a bridge to native audio in Flutter and v-memo for ~700 provisions.
Knowledge levels 1–5 and “+”, user-defined intervals with a review calendar — and subscriptions through Stripe Checkout and Billing Portal, Przelewy24 and Espago card tokenisation.
The outcome
Inside the product
Demo data · click any screen to enlarge
01
Today’s score, progress across the bank, daily bars, review calendar and knowledge level. The backend builds the chart configuration from aggregate tables; the frontend just renders it.
02
Timer, progress, shuffled answers, player ranking and chat — messages and scores arrive over WebSockets on private and presence channels.
03
A recursive tree of the statute with cascading parent/child selection and the number of questions on every unit.
04
The Civil Code read aloud: the current provision highlighted and auto-scrolled, table of contents, jump to article, 1.25× speed and listening history.
05
The same reader at 390 px, running inside the Flutter app, where a JS bridge plays audio natively in the background.
06
Questions due today, the calendar for the days ahead and knowledge levels in each area of law — questions come back at the intervals each student sets.
Stack
Next case