FIMS
Internal management platform for a school, built and run in-house
Context
FIMS (FIWA Integration Management System) is the internal system behind day-to-day operations at the school where I work: lesson rosters, student transfers, end-of-term report cards, and the account and device administration that supports them. Before it existed, each of those lived in a separate spreadsheet or a paper form, and “where is the latest version” was a daily question.
Because this is an internal system for a school, the details here stay general.
What I did
- Designed the data model in MySQL and built the application layer in AppSheet, so new screens and rules could be shipped quickly as requirements changed, without a separate frontend codebase to maintain.
- Built role-based access so each department sees and edits only its own data, and handled the full account lifecycle: provisioning, role changes and deactivation.
- Automated the follow-ups that used to be done by hand: scheduled notifications and reminders go out over WhatsApp through n8n and the Evolution API, triggered by changes in the data rather than by someone remembering.
- Connected the surrounding tools with Google Apps Script, so spreadsheets, forms and the admin console feed the same records instead of diverging copies.
- Run the IT side: Google Workspace Admin (users, roles, security settings) and Chromebook policies and licensing for staff and students.
Why low-code here
The platform had one developer (me) and a stream of small, frequent changes from non-technical stakeholders. A low-code app layer on top of a real database kept the iteration loop short while leaving the data model, access rules and automations under proper control. The parts that need to be rigorous (schema, permissions, integrations) are the parts that are not low-code.
What it taught me
Running a system that other people depend on every day is different from shipping one. Most of the work after launch is operational: access requests, edge cases in the data, and making sure a change for one department does not break another. That experience shaped how I build everything else on this site.