How it works
The shape of the MyPortal system — API-first, modular, with permissions and auditing handled centrally.
MyPortal is modular and API-first. The backend is an ASP.NET Core Web API, the frontend is a separate Angular application that talks to it over HTTP, and every schema change is applied through versioned, repeatable migrations.
None of this is exotic, deliberately. A school IT team, or the partner who supports them, should be able to read the stack, host it, back it up and restore it without learning a new ecosystem first.
The stack
| Layer | What it is |
|---|---|
| Backend | ASP.NET Core 8 Web API — C#, long-term support release |
| Frontend | Angular 20 single-page application |
| Database | SQL Server 2019 or newer |
| Identity | OAuth 2.0 / OpenID Connect |
API-first
Every module is exposed through the same documented REST API that the web interface uses. The interface is the first consumer of that API rather than a privileged one, which keeps it honest: anything the product can do, an integration can do too.
That matters most at the point where you want your own reporting, a data warehouse feed, or a link to another system, and do not want to pay for an export.
Permissions and auditing
Permissions, auditing and safeguarding controls are handled centrally rather than per-module. A module gets access control and an audit trail by being part of the system, not by reimplementing them.
Two consequences worth knowing:
- Enforcement is server-side. Hiding a control in the interface is a courtesy to the user; the decision about whether someone may see a record is made on the request.
- Reads are recorded, not just writes. If the school is ever asked who saw a safeguarding record and when, the answer exists.
One application, three audiences
The single-page application serves staff, students and parents, with role-based routing deciding what each of them sees. There is no separate parent product to buy, and no overnight synchronisation between two databases that can drift apart.
Authentication
Authentication uses OAuth 2.0 and OpenID Connect, so identity is delegated to a provider the school already runs rather than being managed inside MyPortal. Multi-factor authentication, conditional access and account lifecycle stay where your IT team already manages them.
Database support
SQL Server 2019 or newer is the supported database today. Additional providers are planned; the query layer is currently written against SQL Server.