SMED Education Portal โ Savelugu Municipal Education Directorate
The SMED Education Portal is a single Google Apps Script application backed by the fixed Google Sheet 1rV9agVWikqnMgzG1p2BHSqIDvAa7ejuf6C3E58SD-mg. Administrators manage users, roles, configuration, backups, integrations and Registry setup through the application itself; direct editing of the sheet is not required and is discouraged.
https://portal.smedges.org with api.php and the private gateway configuration described in the deployment guide.Code.gs, Signup.gs and Enhancements.gs in the Apps Script project and set SMED_PROXY_KEY in Script Properties.initialiseSignupRequests() once. Run setupSMEDEnhancements() for the office/file extension./exec URL in the private Hostinger gateway configuration.Use Users to create accounts, deactivate or reactivate them, assign roles and inspect login history and audit history. Only a Super Administrator may assign the Super Administrator role.
Use Configuration to run validateSystemConfiguration() and the safe connection write-test. Both are non-destructive. Registry configuration is managed in Registry โ Settings.
Backups run daily and weekly on triggers installed during setup. Manual runs are available from Backups. Retention keeps the last 14 daily and 8 weekly copies. Failure notifications go to every active Super Administrator and Municipal Administrator by email and in-app.
Integrations are disabled by default. Enabling a flag does not configure it: credentials must be placed in Script Properties by a Super Administrator. Connection tests use integrations.test.
The capacity check runs every 12 hours. Warnings appear in-app and by notification. Archive high-volume records through Archival using the approved policies.
Use Assurance โ Test data to seed fictional records tagged __SMED_TEST__ and to archive them when done. Cleanup is soft-archive only; no record is destroyed.
Enter your username or email and password. On first sign-in you will be asked to change your password. Passwords must be at least 10 characters.
Use the sidebar to reach modules. On small screens the sidebar slides in from the left. The top bar shows the connectivity state, sync status, notification bell and your profile menu.
When the device loses connectivity, writes to selected modules are stored locally and queued. The top-bar indicator shows the pending count. When the connection returns, the queue flushes automatically.
Reports and tables have a print stylesheet. Use your browser's Print function; the sidebar and toolbars are hidden and the brand header appears. CSV export is available on every report and on the Export page.
Errors include a reference ID. Report this ID to the System Support Officer or an administrator; it matches an entry in the Error Log.
Do not share your credentials. Sensitive records are restricted by role and scope. All sensitive actions are audited.
Use the Registry section of the sidebar. The dashboard shows incoming and outgoing volumes, files in circulation, overdue items, dispatch and failed deliveries, digitisation and retention workloads.
Use File plan to view or extend the classification scheme. Use File register to open new files. Each file has a generated reference and movement history. Use File requests to authorise issues; a physical file can only be issued to one user at a time.
Physical storage is modelled from room through box. Digitisation jobs record page counts, quality control and a link to the Drive file. Each verified scan is registered as a new document version; earlier versions are never overwritten.
Access requires the RegistryConfidentialAccess capability. Provide a justification for every access; the access is logged. Downloads require an additional capability and are only permitted when the record allows downloads.
Use Registry โ Reports for the daily register, overdue actions and file register. Each section can be exported to CSV or printed.
The Hostinger page calls its same-origin api.php gateway. Confirm PHP cURL is enabled, its private configuration contains the current Apps Script /exec URL, and SMED_PROXY_KEY matches the Script Property. Deploy a new Apps Script version after backend edits.
Redeploy the Web App after any change to Code.gs. A deployment serves a fixed version until you create a new version.
The server tolerates missing e, e.parameter, e.parameters and e.postData. If a client sends a body without an action, the router returns a MISSING_ACTION JSON envelope.
Production never uses getActiveSpreadsheet(). If the fixed ID does not open, the configured spreadsheet has been moved, deleted, or the running account does not have access.
Re-run initialiseEducationManagementSystem() and initialiseRegistry(). Both are idempotent.
Open Deploy โ Manage deployments, edit the current deployment and create a new version. The public URL is preserved.
The sync driver only flushes while the tab is visible and the connectivity badge is Connected. Use Sync queue โ Flush now.
Each queued operation carries a unique idempotency key. The server refuses to apply the same key twice and returns duplicate.
A stale update is rejected with VERSION_CONFLICT and includes the current server version. Reload the record and re-apply the change.
Passwords must be at least 10 characters. If a user is locked out, an administrator can clear the lockout and request a password change on next sign-in.
CSV exports neutralise formula-triggering characters by prefixing them with an apostrophe.
Warnings appear in-app and by notification. Run Archival for the approved high-volume sheets. Capacity limits cannot be raised; the safe workaround is partitioning or archiving.