GENIE
Platform Architecture ยท Polymorphic UI

One Database.
A Thousand Realities.

GENIE runs on a single, unified data layer. But no two users ever see the same interface. The platform generates a completely different reality for every role โ€” derived from context, not configuration.

ParentStudentLecturerHead of DeptDeanRegistrar

The Problem With Most EdTech

Everyone Sees
Everything.
Nobody Sees Clearly.

Most academic platforms suffer from what designers call "dashboard sprawl" โ€” a single, monolithic interface that tries to serve every user type simultaneously. The result is a screen that overwhelms a parent looking for one number, buries a lecturer's gradebook under institutional reports they cannot action, and hands a Dean raw student records they should never be reading.

The academic community's response to this is usually more training, longer onboarding documentation, and reluctant adoption. The platform gets blamed for poor UX. The real problem is that the interface was never designed with a specific user in mind.

The role-blind approach โ€” everything, for everyone

Student CWA SpreadsheetRegistrar only
Parent Alert SettingsParent only
Lecturer Grade Input GridLecturer only
Institutional Billing HistoryAdmin only
Government Oversight ReportNUC / NBTE only
Student Personal AttendanceStudent only
Department FEM ScoresDean / HoD only

โ†‘ All of the above rendered in a single sidebar to every user type.

genie.ui.engine โ€” polymorphic_render(user.context)

The Interface Is Derived,
Not Configured.

GENIE does not maintain six separate portals. It maintains one, and derives the interface at render time from the authenticated user's role, institutional context, and permission scope. The same database query returns different field subsets depending on who is asking.

01

Single Source of Truth

One PostgreSQL database. One schema. Every student record, attendance event, grade entry, and institutional metric lives in the same, unified data layer with full referential integrity.

PostgreSQL ยท Single DB

02

Role-Scoped JWT Claims

At login, the backend mints a JWT that encodes the user's role(s), institutional ID, and permission scope. Every subsequent API request carries this context. The backend filters query results at the ORM level โ€” not in the UI.

JWT ยท Django REST ยท ORM filtering

03

Context-Derived Render

The frontend reads the decoded role from the token and renders a completely different component tree. A Parent's render tree has seven data points. A Registrar's has the full system. Same codebase. Different reality.

React ยท Role-conditional render

Every user sees exactly what they need. Nothing they don't.

This is not a UX preference โ€” it is a data minimization principle. Rendering fewer fields means fewer vectors for data exposure, fewer cognitive decisions for the user, and faster comprehension of the signal that actually matters to them. The interface is not stripped down. It is precision-built.

Role Showcase

Switch the Role.
Watch the Interface Change.

Select a role below to see the interface GENIE generates for that user. Same underlying data โ€” entirely different context.

Parent View

Visibility without surveillance.

A parent's interface is deliberately minimal. No lecture notes. No grade sheets. Just the three signals that answer the only question that matters: is my child showing up and staying on track?

Interface Profile

Data fields visible7

out of 140+ system fields

Interface complexityLow

curated for non-technical users

Alert sensitivityHigh

misses trigger WhatsApp within 6h

app.genie.ng/parent/home

Tunde Adeyemi โ€” HND Computer Science

Moshood Abiola Polytechnic ยท Year 2

Attendance This Semester
81%

Above 75% threshold

Missed Classes (30 days)
3

STAT302, ENG201, PHY211

Exam Eligibility
On Track

6 of 8 courses confirmed

Next CA Deadline
14 Apr

STAT302 โ€” Test 2

Grade sheets, course materials, dispute logs, and staff data are not rendered for this role.

genie.architecture โ€” data layer

PostgreSQL

Single unified database ยท All roles ยท All institutions

โ†“ JWT role claim โ†’ ORM field-level filter

Parent

7 fields

Student

28 fields

Lecturer

64 fields

HoD

91 fields

Dean

78 fields

Admin

140+ fields

The Unified Data Layer

One Query Engine.
Context-Filtered Results.

There is no separate "Parent Database" and "Lecturer Database." When a parent queries their ward's attendance, they are hitting the same attendance table as the Registrar running an institutional audit. The difference is entirely in the query filter applied by Django's ORM when it reads the JWT claim.

This approach eliminates the synchronization overhead of multi-database architectures and guarantees that what a parent sees and what a Registrar sees are always derived from the same underlying record โ€” with zero risk of data divergence.

  • No data duplication across role-specific stores
  • Referential integrity guaranteed at the DB level
  • Role permission changes take effect immediately โ€” no cache flush
  • Full audit trail on every field access, per user, per role
Coming Soon โ€” Dual-Role Identity

What If Your Lecturer
Is Also a Parent?

Dr. Adeyemi teaches Statistics at Moshood Abiola Polytechnic. His son Tunde is a second-year student at UNILAG. Today, GENIE handles both realities with two separate accounts.
Not for much longer.

A

Dr. Babatunde Adeyemi

genie.ng ยท Logged in ยท 2 active roles

Lecturer Context โ€” MAPOLY

STAT302 ยท Statistics for Engineers

Present Today
71/87

Session 14 of 18

At-Risk Students
12

Below 75% threshold

CA Grades Pending
87

Deadline: 16 Apr

Active Disputes
2

System evidence attached

Lecturer interface โ€” institutional data scoped to own courses

One Login

A single set of credentials. No second account. No separate institutional email for the parent role.

Context Switch in One Tap

A single tap toggles between the Lecturer interface and the Parent interface. The JWT is re-scoped client-side; no re-authentication.

Zero Role Bleed

The Parent context has no access to STAT302 student records. The Lecturer context has no visibility into ward data from a different institution.

Dual-Role Identity is currently in internal development.

Design Philosophy

The Four Principles Behind Polymorphic UI

Contextual Visibility

You only see what is actionable for your role. Noise is not minimized โ€” it is eliminated at the data layer before it ever reaches the interface.

Field-Level Privacy

Data minimization is enforced server-side. A Parent role cannot request a grade field via the API even with a crafted query โ€” the ORM rejects the field before it leaves the DB.

Zero Configuration

No administrator sets up which fields a role sees. The interface is derived automatically from the role definition. New roles ship with their interface intact.

Interface Parity

Every role gets an interface that feels complete and intentional โ€” not like a stripped-down admin panel. A Parent's seven fields feel as comprehensive as a Registrar's 140+.

Ready to See It Live?

Every Role, Rendered
in 30 Minutes or Less.

A live deployment walkthrough will show you exactly what a Parent, a Lecturer, a Dean, and a Registrar at your institution will see from day one โ€” using your own sample data.

Ask via WhatsApp