← All projects

In staging

Learning platform for students with dyslexia and visual impairments

Students aged 6 to 18 with dyslexia and other specific learning disorders, or with visual impairments, are supported by tutors and speech therapists and need accessible exercises. They often work on a tablet, and a connection isn’t guaranteed.

Role
Sole developer
Period
July → October 2026
Status
Complete in staging, waiting for the client’s QA on real devices.
Stack
Laravel 13
PHP 8.5
Livewire 4 + Volt
Flux
Tailwind 4
MySQL
Web Push
Service worker
IndexedDB
Web Speech
WebCrypto
Forge
Cloudflare

A web app with four roles (student, parent, tutor and administrator) that installs like an app and works offline.

Tutor area

  • Students, classes and parents in one place.
  • A guided wizard to create four types of exercise (fill in the blanks, matching, reading comprehension and multiple choice) and assign them to a class or a single student, with a deadline.
  • Corrections with comments and images.
  • Reports with charts on recurring mistakes, response times and completion.
  • A document archive and notes, visible to parents or not.

Student area

  • A diary and drag-and-drop exercises with instant feedback and a reward screen at the end.
  • A text reader with text-to-speech that highlights each word as it reads, voice dictation and notes.
  • A tachistoscope and a scientific calculator.
  • Dyslexia-friendly fonts chosen by the student, available offline too.

Parent area

  • Their children’s progress, read-only.
  • Push notifications for new assignments, deadlines, late work and tutor notes.

Tachistoscope, second version

  • I rebuilt it at a speech therapist’s request: lists of words, non-words and sentences, flashes of up to 2 seconds and a mode where the therapist marks mistakes with a tap.

Answers given offline

A tablet loses its connection halfway through an exercise. If the answer is lost, the student has to start over; if it arrives twice, the tutor’s report is wrong.

I made every answer go into a queue on the device first. When the network comes back, the queue empties itself, retrying at longer and longer intervals. The server always recalculates whether the answer is correct and discards the ones it has already received. It works on iPad too, where background sync doesn’t exist.

Several students on one tablet

The same tablet is used by several students. Each one has a separate queue, content is wiped on sign-out and, if the identity doesn’t match, the app goes back to the login screen. Offline sign-in is protected too.

A hand-written service worker

I wrote the part that handles offline mode by hand, in plain JavaScript, so it works together with Livewire. When there is a connection, it never serves stale pages.

Children’s data

Student files were moved from a public disk to a private one and are served only to people allowed to see them. Security patches were applied right away.

Real accessibility

OpenDyslexic, one of the fonts students can pick, is 60% wider than regular fonts. I made every layout flexible, so nothing breaks when a student switches it on.

What AI really costs

I mapped out what can be done for free in the browser, such as read-aloud, dictation and text recognition in images, and what is billed per use instead. Along with a proposal to release it in two phases.

547 automated tests, plus on-screen checks for every offline phase
50 commits, all mine
53 pages and 21 models
~230 Figma screens implemented
4 days to make it installable and offline
~3,600 lines of hand-written JavaScript