Skip to content

SchoolersEngineering documentation

How the alumni directory is built, deployed, and changed safely.

What this documentation is

Schoolers is an alumni directory and digital yearbook for the School of Mathematical Sciences and Informatics at the University of Khartoum. Alumni find each other by batch year, specialization, and country, and follow announcements from the community.

These pages describe the system as it exists today. They are written for someone who will change the code: what the pieces are, how they fit together, where the rules that protect member data actually live, and what to be careful about.

Where to start

If you are setting up to work on the project, read Getting started first, then Running it locally.

If you are trying to understand an existing part of the system, the System overview explains the shape of it in one page, and the sections below it go deeper.

If you are about to change anything that touches the database, read Reviewing database changes before you write the migration. That page exists because two separate bugs in this project were caused by not knowing what it says.

The one thing to understand early

Access control in this application is enforced by PostgreSQL, not by the frontend.

Every check you see in a React component, every admin-only tab, every hidden button, is there to make the interface make sense. None of it is a security boundary. The real boundary is a set of row-level security policies defined in SQL, and a request that bypasses the frontend entirely is still subject to them.

This means a change that looks purely visual can still be a security change, and a new query will silently return nothing unless a policy allows it. How access control works covers this properly.

What is deliberately not here

  • Anything secret. No keys, no passwords, no connection strings. If a page needs to reference a credential, it names the variable, never the value.
  • Tutorials on general technology. These pages assume you can look up how Docker or PostgreSQL works. They explain how this system uses them.
  • Product plans and roadmap. Those live in the issue tracker, which changes far more often than this documentation does.

Internal engineering documentation.