Academy Manager

Mobile app · Web edition · en / ar / fa

Every learner, every session, every dirham, accounted for.

Academy Manager keeps students, classes, attendance and money in one place, with the rigour of a ledger and the simplicity of a phone app. Offline on Android, self-hosted on the web, and the two exchange the same encrypted backup file.

450
translation keys × 3 languages
57
automated checks passing
127
pages per second, 4 workers, one small server
Screenshot of Academy Manager
Works offline on Android Self-hosted web edition AES-256 encrypted backups Right-to-left, Jalali calendar Every money change audited

Everything an academy needs, nothing it does not

Built around the way small academies actually work: terms and classes, learners who come and go, tuition paid in parts, and parents who want a clear report.

Students

Profiles with photo, contacts, guardian phone, referrer and notes. Call or WhatsApp in one tap. Six live filters: active, inactive, debtors, ending soon, archived, all.

Read more

Terms & classes

Classes belong to a term or stand alone. Teacher, weekly schedule, capacity, default tuition in AED, USD or Toman, and the number of session credits sold.

Read more

Enrollment

One form opens the tuition invoice, applies a manual discount and any earned referral credit, checks capacity and warns about timetable clashes.

Read more

Attendance & session credits

Mark present, late, absent or excused. Present and late consume a credit; absent and excused do not. The remaining balance updates live on the sheet.

Read more

Double-entry ledger

Invoices, payments, discounts, adjustments. Edits need a reason, voids keep the row, every change lands in the audit log with before, after and delta.

Read more

Referral program

Reach the milestone, earn a percentage of tuition as credit. Credit is capped at what is still owed and never wasted on a free class.

Read more

Automatic alerts

Unpaid balances, enrollments ending, attendance not taken today, credits running out, backup overdue. Deduplicated, so you see each once.

Read more

Encrypted backups

One password, one .ambak file: database plus photos, AES-256-CBC with an integrity tag. Restore on the phone or on the web, the format is identical.

Read more

Three languages, two calendars

English, Arabic and Persian with full right-to-left layouts, Persian digits and the Jalali calendar. Light and dark themes on every screen.

Read more

From first run to first report in an afternoon

  1. 1

    Set up

    Create the admin account, pick language, learner label and currency, name your academy.

  2. 2

    Build the timetable

    Add a term, add classes with schedules, capacity and session credits.

  3. 3

    Enroll and collect

    Enroll learners; the invoice opens itself. Record payments as they arrive.

  4. 4

    Teach and track

    Take attendance in seconds, watch credits count down, share the parent report.

A ledger you can defend

Balance = invoices − discounts − referral credit − payments + adjustments. Every enrollment's final amount is recomputed from its live ledger rows, so the card and the books never disagree. Voided rows stay visible, struck through, with the reason.

Read more
Screenshot of Academy Manager

Session credits that reflect reality

Sell twelve sessions, watch them count down. A late learner still used the session; an excused one did not. Change a status later and the credit is returned or taken automatically.

Read more
Screenshot of Academy Manager

Your data, your file

Backups are ordinary files you keep wherever you like. PBKDF2 with 210,000 rounds derives the key; an HMAC tag detects a wrong password or a tampered byte before anything is decrypted.

Read more
Screenshot of Academy Manager

One product, two editions

Android app

Offline, single-user, Material 3. Ideal for the front desk tablet or a teacher's phone. Ships as an APK per language pair.

Web edition

The same logic on your own server: SvelteKit, SQLite, one Docker container, sign-in protected. Works on any browser, phone to desktop.

Both editions read and write the same backup file, so an academy can start on the phone and move to the web, or keep both.

Deploy in minutes on Coolify

A single container, a single volume. No external database, no queue, no cron service.

  1. 1

    Create an Application from the Git repository; build pack: Dockerfile; port 3000.

  2. 2

    Mount a persistent volume at /data.

  3. 3

    Set ORIGIN to your public URL and TZ to your time zone; optionally restrict APP_LOCALES and APP_CURRENCIES.

  4. 4

    Deploy, open the URL, create the admin account.

Questions academies ask

Does it need an internet connection?

The Android app never does. The web edition needs the browser to reach your server, which can be a machine on your own network.

Can I use it in Arabic or Persian?

Yes. Every one of the 450 interface strings exists in English, Arabic and Persian, layouts mirror for right-to-left, and Persian users get the Jalali calendar and Persian digits.

What happens if I delete something by mistake?

Nothing is deleted outright. Records are archived and can be restored. Permanent deletion is a separate, typed-confirmation step from Settings, and even then the audit log keeps the final balances.

Is my data locked in?

No. The database is a plain SQLite file with a documented schema, and backups are zip archives you can decrypt with your password.

How many learners can it handle?

The stress test ran 2,000 learners, 2,667 enrollments, 480 attendance sessions and 100 concurrent users on one small server without errors. See the audit page for the numbers.