← Visi darbai

Kalbų mokymosi platforma

web platforma · klientinis projektas · 2026

Kas tai
Internetinė kalbų mokymosi sistema iš trijų dalių: vieša mokymų svetainė, mokinio mokymosi platforma ir turinio valdymo sistema. Kursus administratorius kuria pats, be programuotojo: sistema iš įvesto žodyno sudaro interaktyvias užduotis, valdo prieigą prie kursų per aktyvavimo kodus, seka mokinių progresą ir baigus lygį išduoda sertifikatą.
Būsena
Aktyviai vystoma.

Užduotys iš žodyno automatiškai

Administratorius žodį įveda vieną kartą, o sistema iš jo pati sudaro iki aštuonių tipų užduočių.

  • Užduočių tipai: kortelė, žodis su sakiniu, klausyk ir pasirink, porų sujungimas, praleistas žodis, sakinio dėliojimas, vertimas abiem kryptimis, paveikslėlio parinkimas ir rankinis klausimas.
  • Prieš kuriant matosi, kiek užduočių atsiras ir kurioms trūksta duomenų (pvz. garso).
  • Klaidingi atsakymų variantai parenkami iš tos pačios temos žodžių.
  • Pakartotinai sudėliojus užduotys nesidubliuoja, o rankinės išlieka.
  • „Išmaišyti“ sumaišo užduotis taip, kad žodžio kortelė visada eitų prieš to žodžio tikrinimą.
Turinio valdymas: kairėje turinio medis, dešinėje pamokos užduočių sąrašas

Mokymosi kelias mokiniui

Mokinys eina aiškiu keliu: pamokos, testai, kartojimas ir sertifikatas. Progresas saugomas serveryje ir nedingsta pakeitus įrenginį.

  • Atsakymas patikrinamas iš karto; raidžių dydis ir skyryba nesvarbūs, o praleistos lietuviškos raidės ar viena rašybos klaida įskaitomos su pastaba.
  • Temos ir testai atsirakina nuosekliai, pagal progresą.
  • Testai vertinami serveryje pagal praėjimo ribą.
  • Žodžiai kartojami intervalais 1 → 3 → 7 → 21 diena.
  • Baigus lygį išduodamas PDF sertifikatas su unikaliu numeriu.
Vykstanti pamoka: progreso juosta ir sakinio dėliojimo užduotis

Visas kursas iš vieno Excel failo

Visą kursą galima įkelti vienu Excel failu, o sistema prieš įrašydama parodo, kas bus sukurta.

  • Tuščias ir pavyzdinis šablonas atsisiunčiami iš sistemos.
  • Prieš importą tikrinami stulpeliai, ieškoma dublikatų ir parodoma, kur turinys bus įdėtas.
  • Trūkstamas garsas ar paveikslėlis susiejamas automatiškai, kai vėliau įkeliamas tokiu pačiu pavadinimu.
  • Importuotos pamokos gali būti iškart paskelbtos.
Turinio valdymas: turinio medis ir mygtukas „Importuoti iš Excel“

Techninė dalis

Rolė
Viena kūriau visą sistemą: duomenų bazę, serverio logiką, mokinio platformą, turinio valdymą ir testus.
Sprendimai
  • Užduočių variklis iš grynų funkcijų: kiekvienas užduoties tipas yra viena taisyklė registre, todėl naujas tipas nereikalauja keisti variklio. Atsitiktinumas perduodamas kaip parametras, todėl logika testuojama deterministiškai. Tas pats variklis veikia pamokose, testuose ir kartojime.
  • Saugumas trijuose sluoksniuose: sąsajoje, serverio veiksmuose ir duomenų bazėje (Row Level Security kiekvienai lentelei). RLS taisyklės patikrintos atskirais integraciniais testais, nes sąsajos apsaugą galima apeiti kreipiantis tiesiai į API.
  • Atomiški veiksmai duomenų bazėje: kodo aktyvavimas ir kitos kelių žingsnių operacijos vyksta vienoje transakcijoje su eilutės užraktu, todėl tą patį kodą aktyvuoti gali tik vienas žmogus.
  • Griežtas duomenų sluoksnis: komponentas → hook'as → servisas → duomenų bazė. Kai du administratoriai redaguoja tą patį įrašą, konfliktas aptinkamas ir svetimi pakeitimai tyliai neperrašomi.
  • Kokybės automatika: patikros prieš kiekvieną commit'ą, ESLint taisyklė, saugojanti dizaino sistemą, kontaktų formos apsauga nuo šlamšto, o IP saugomas tik kaip maiša ir ištrinamas po paros.
Mastas
33 ekranai · 25 DB lentelės ir 64 RLS taisyklės · 9 užduočių tipai · 433 testai (iš jų 110 RLS ir 16 E2E) · 2105 vertimo raktai
Stackas
Next.js, React, TypeScript, Tailwind CSS, shadcn/ui, TanStack Query, React Hook Form + Zod, next-intl · Supabase (PostgreSQL, RLS, Auth, Storage), pg_cron · @react-pdf/renderer, xlsx · Vitest, Playwright