Nothing is held hostage
Your data sits in your own SQL Server, in a documented schema, on hardware you control. Migrating in or out is a database job, not a negotiation that starts ninety days before renewal.
MyPortal is an information management system for UK schools — attendance, behaviour, exams, timetabling and reporting. It runs on your infrastructure, keeps data in your database, and is licensed so it cannot be withdrawn.

Why open
That is a good reason to be able to see how it works.
Your data sits in your own SQL Server, in a documented schema, on hardware you control. Migrating in or out is a database job, not a negotiation that starts ninety days before renewal.
An MIS holds safeguarding notes, SEND plans and behaviour records. Every line of code that touches them is public — readable by your DPO, your governors, or an independent reviewer, without an NDA.
AGPL v3. Anyone who builds on MyPortal and offers it as a service has to publish their changes under the same terms. The openness is structural, not a phase before an acquisition.
Modules
Each module stands on its own, and every one of them shares a single permission model, a single audit trail, and a single source of truth.
Statutory session and lesson marks, registers, and absence follow-up.
Incidents, sanctions, achievements, and the reporting behind them.
Entries, seating, access arrangements, and results.
Marksheets, grade sets, and progress tracking across a cohort.
Subjects, classes, teaching groups, and the school timetable.
Registrations, contacts, addresses, and the full pupil record.
Employment records, roles, and the permissions that follow them.
Provisions, plans, and the review cycle around them.
Report cycles, comment banks, and published reports.
Applications, offers, and the route from applicant to on-roll.
Attachments and file storage bound to the records they belong to.
School configuration, academic years, terms, and system settings.
Architecture
None of this is exotic. A school IT team should be able to read the stack, host it, back it up, and restore it without learning a new ecosystem first.
How it fits togetherProject status
Core services and the foundational modules are in place, and the rest is being built out iteratively. MyPortal should not be running a real school yet. If you want to evaluate it, stand it up against test data — and tell us what breaks.
Get it running
You need the .NET 8 SDK, Node 20 or newer, and a SQL Server instance you can create databases on.
git clone https://github.com/MyPortalEdu/MyPortal.git
cd MyPortal dotnet user-secrets set "Database:ConnectionString" \
"Server=.;Database=MyPortal;Trusted_Connection=True;TrustServerCertificate=True" \
--project MyPortal.Migrations dotnet run --project MyPortal.Migrations dotnet run --project MyPortal.WebApi
npm start --prefix MyPortal.Frontend/myportal-spa The full walkthrough, including HTTPS and dev certificates, is in the getting started guide.
The useful contributions here aren't only code. UK education domain modelling, deployment tooling, documentation and UI work all move this forward. Open an issue or a discussion before starting anything substantial, so we can agree the direction first.