Skip to content
ع
All projects

Aoun

A free academic platform for Jordanian university students.

Aoun: A free academic platform for Jordanian university students.
Role
Solo: product, design and engineering
Year
2026
Status
Live
Category
Web

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.

Overview

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.

Built with

  • Next.js
  • TypeScript
  • React
  • Convex
  • TanStack Form
  • TanStack Table
  • Tiptap
  • Recharts
  • PostHog
  • Tailwind CSS
  • PWA
  • Web Push

Where to find it

Challenges

One content model for many universities

Problem

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.

Solution

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.

Arabic search that tolerates how people actually type

Problem

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.

Solution

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.

Offline for a student on campus Wi-Fi

Problem

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.

Solution

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.

Moderating an open upload pipe

Problem

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.

Solution

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.

Results

  • Past 7,500 visitors, tracked live on the home page.
  • Browsing needs no account; sign-in is only for saving and contributing.
  • Installable and usable offline for material already opened.