MA↗Mohamed
Abderrehmane
← All work
07 / PHP · SQLite · JavaScript · Arabic RTL

FH-SchoolAn Algerian school management portal with PHP and SQLite

FH-School is an Algerian school management platform connecting student dashboards, teacher grade entry, attendance and school administration. The demonstration uses synthetic records.

FH-School — actual application interface with demonstration data
Application interface · demo data
01

The problem & workflow

Student signs into an academic-year record → teacher opens a permitted subject/class → grades or attendance are saved → administrator publishes announcements and manages accounts.

Key features

  • Student dashboards and academic streams/classes
  • Teacher subject/class permissions
  • Grade entry, notes and absence records
  • Announcements and attachments
  • Teacher/student administration and charts
02

Architecture & decisions

FH-School — component relationships
  • Databases are distributed by year, branch and stream, with separate teachers and posts stores. The design simplifies small local datasets but complicates cross-stream reporting and migrations.
  • The historical username:password field is retained for synthetic local accounts and documented accurately. It must not be used for real student credentials.
  • Teacher AJAX endpoints now check authentication and the requested class/subject before execution. Public database downloads are blocked by the demo router and Apache configuration.
  • Original sample state is retained as a fixture snapshot; restoring it overwrites only demo databases through an explicit reset tool.

Inside the source

03

A working school workflow in a legacy PHP application

I built FH-School with PHP and SQLite for student, teacher and school administration workflows.

FH-School connects student viewing, teacher grade and absence entry, class and stream organization, announcements and administration. I use synthetic school records for the demo. Database snapshots make it easy to restore the sample state after editing.

The application uses distributed SQLite databases rather than a central database service. That keeps the local runtime compact, but creates operational responsibilities: required files must exist, directories must be writable, and a reset must restore the related databases together. The directory guide explains these responsibilities instead of treating the data layout as incidental.

Checking writes, not only dashboard rendering

I added CSRF protection and examined the teacher's permitted class, subject and student boundaries. A dashboard screenshot alone cannot establish that an edit was saved. The acceptance script verifies stored grade changes, rejects an out-of-range grade, checks absence increments and restores its modified fields.

The original synthetic password-storage behavior remains a documented legacy limitation for local demonstration. A real deployment would need a deliberate account/password migration and a wider administration review. Keeping the design and architecture makes the project's evolution explainable without disguising it as a newer framework application.

04

Project status

An earlier school portal I built with PHP and SQLite. The included school records are synthetic.

Enable SQLite3 and PDO SQLite. The included synthetic teacher is ahmed / teacher2025. Choose first secondary, scientific stream, class 2 and mathematics for populated fixtures. Set DEMO_ADMIN_PASSWORD in the PHP environment before using demo-admin administration. Stop the server before fixture reset. Passwords in the original synthetic teacher/student fixtures remain legacy plaintext.

Development checks & runtime notes

PHP syntax and fixture HTTP checks passed: synthetic teacher login, required CSRF token, permitted class loading, foreign class/subject rejection, blocked database downloads and accessible public artwork. Browser checks passed class loading and grade editing. HTTP checks verified persisted grades, invalid-grade rejection and attendance increments; modified records were restored. Original sample SQLite records are synthetic; reset snapshots are included.

Legacy synthetic passwords remain plaintext inside the sample database. Treat this release as a local legacy demonstration; real student records require a password-storage migration and broader authorization review. Teacher grade and attendance persistence passed; broader admin/student workflows and cross-role browser review remain.

Technical details ↗
NEXT PROJECTFlashdrop ↗
LET’S TALK

Have a project in mind?

Tell me about the app or website you want to build.

Contact on WhatsApp +213794873386 ↗