Fajr Danesh School Platform
The system a real school runs on — students, teachers, parents, grades and news in one place

Live at fajrdanesh1.ir. This is the system a school actually uses every day — and most of the work was not in the features.
What it is
A school has students, teachers, parents, grades, a timetable, a question bank, and news to publish. In practice that is four different sets of people who each need to see something different and nothing else. A parent does not need the staff administration screen. A teacher does not need the school’s phone numbers.
So the platform is built around roles: four separate dashboards, each showing only what that person is allowed to see, enforced on the server as well as hidden in the interface.
What it does
- Four role-based dashboards — admin, teacher, parent, student — with genuinely different layouts.
- Grades and progress, with per-term charts so a parent can see a trend rather than one number.
- A question bank, so questions can be reused across exams instead of being rewritten each term.
- Class timetables, editable by the school.
- News and a media gallery, so the school can publish things without asking a developer.
- Printable reports, because the paper form still exists and a PDF is how it gets filled.
- An Android app built from the same front end.
- Persian throughout — Jalali dates, Persian digits, right-to-left.
The numbers
| 12 | data models |
| 4 | roles, enforced server-side |
| 0 | shared screens between a parent and an admin |
Why it’s worth a look
The work is in the unglamorous middle. Building a system that four different kinds of user can rely on means permissions have to be right, and permissions have to be checked on the server, because a hidden button is a usability feature and not a security one. It also means the ugly requirements: the same grade entered by a teacher has to appear in the right place in a parent’s view and in the printed report, or the system is not trusted.
Running it in production for a real school was the most useful education I have had. Bugs that would be cosmetic in a demo become “the parent cannot see the first-term grade” — a phone call.
Current state
- Live and in daily use, which means the deployed database has real student data in it and the backup procedure matters more than any new feature.
- The question bank has no editor, only storage and reuse.
- Parent notifications are in-app, not push — a parent has to open the app to see them.

