2026 — Web

eBilim — ERP for a language school network

A management system for a network of language schools: groups, payments, cash desk, contracts, attendance and entry passes in one place, plus a mobile app where students and parents see the schedule, grades, balance due and chat.

The demo runs on made-up data, so feel free to click around.

Stack

  • Bun
  • Elysia
  • Nuxt
  • Nuxt UI
  • Expo
  • React Native
  • SQLite
  • PostgreSQL
  • PgBouncer
  • Redis
  • Drizzle ORM
  • Better Auth
  • ESP32

The school ran on paper: receipts on printed forms, contracts in Word, a waiting list at the front desk. eBilim replaces this with a single system while keeping the familiar forms: receipts and contracts are printed from the school's own templates.

Money is protected against abuse. A payment cannot be deleted, receipt numbers are issued by the database itself, refunds are recorded as separate entries, cashiers work in shifts, and every cash handover is confirmed by the recipient. Every action is written to an audit log.

The branch network runs on fine-grained permissions: roles are extended with per-branch checkboxes, so in a small branch one person can cover several duties. Management sees statistics on revenue, students, group capacity and teaching quality, compares branches and exports reports to Excel.

Teachers keep the lesson journal, attendance and exams with weighted grades. In the mobile app, students and parents see the schedule, grades, attendance and balance due, practise vocabulary in spaced-repetition games, offline too, and collect an in-school currency for prizes.

ESP32-based turnstiles read student wristbands and staff cards. Parents get a push notification when their child arrives at and leaves the school, and staff cards feed the timesheet. If the network or power drops, entries are stored on the device and reach the server with the correct time.

The school's public website is built from the same database: courses with real groups and an enrol button, teachers, news, a gallery and contests with voting. The website and the app work in four languages: Turkmen, Russian, English and German.

The backend is built with Bun and Elysia, the web app with Nuxt 4 and Nuxt UI, and the mobile app with Expo and React Native on a local SQLite database. Data is stored in PostgreSQL behind PgBouncer, caching and queues run on Redis, and chat is a separate service. A demo on test data is open: you can sign in as a teacher, accountant, student or parent.

Back to all projects