Haitham Assoli

← All projects

Aoun

A free academic platform for Jordanian university students.

0The facts

Role
Solo: product, design and engineering
Year
2026
Status
Live
Category
Web
Built with
Next.js · TypeScript · React · Convex · TanStack Form · TanStack Table · Tiptap · Recharts · PostHog · Tailwind CSS · PWA · Web Push
Where to find it
Aoun

1 · Overview

What it is, and why it exists.

Aoun brings summaries, past exams, course material, GPA tools, bookmarks, and study planning into one place for Jordanian university students. It is free to browse without an account and works offline as an installed PWA.

Jordanian students find course material in WhatsApp groups, one-off Google Drive folders, and Telegram channels that disappear. Students must collect the same material again for each intake because those sources lack indexing and versioning.

Aoun keeps one catalogue, organised by university → faculty → course, so students can find summaries and past exams again. It also includes a GPA calculator for local grading rules, bookmarks, a study planner, and a focus timer.

I built Aoun with Next.js and Convex. Students can read without an account and sign in only to save or contribute.

1a · Challenges

Each problem got a card. Each fix got filed behind it.

1a1One content model for many universities

Every university names things differently: faculties, credit hours, course codes, even what a 'year' means. Modelling one university and generalising later would have meant a migration for every new one added.

1a1aWhat I did

I modelled the hierarchy as generic nodes with per-university configuration held as data, not code. Grading scales, credit rules and naming all live in a config document. Adding a university became a content task instead of a schema change.

1a2Arabic search that tolerates how people actually type

Students type 'احصاء' for 'إحصاء', drop diacritics entirely, mix Arabic and English in one query, and use colloquial course nicknames. Naive matching returned nothing for most real queries.

1a2aWhat I did

I normalise both the index and the query: unify hamza forms, strip diacritics and tatweel, fold Arabic-Indic digits. I also store curated aliases per course so the nicknames resolve too.

1a3Offline for a student on campus Wi-Fi

The place students most need the material, inside a lecture hall, is exactly where connectivity is worst. A normal SPA showed a spinner over an empty page.

1a3aWhat I did

The app is an installable PWA that caches viewed courses and their files, so anything you opened once opens again offline. Writes queue and replay when the connection returns.

1a4Moderating an open upload pipe

Letting anyone upload is what makes the archive grow, and also what fills it with duplicates, mislabelled files and the occasional thing that should not be there.

1a4aWhat I did

Uploads land in a review queue rather than the catalogue. An admin view shows the file next to its metadata with approve/relabel/reject in one keystroke, and PostHog funnels tell me where contributors drop off.

2 · Results

Next project

→Kashaf Abi Ja'far

Search thousands of hours of lessons and land on the exact second.

Next design — SpoolerSee all 14