school-management-platform is a production-ready School Management System that keeps a school's core records — students, teachers, grades, subjects, and classes — in one honest, consistently maintained place, with an admin panel where administrators oversee and maintain those records. It is built with Python Flask for the backend, ReactJS for the frontend, PostgreSQL for the database, and Docker for deployment.
The product serves the people who care for others' records every day: School Administrators who maintain the school's directory and academic records and approve teacher-entered marks, Teachers who consult the student, class, and subject lists for the classes they teach, enter marks for their students, and mark attendance for their classes, and Parents who use a Parent Portal to view their child's attendance and approved grades. Teacher-entered marks are held as Pending Admin Approval and become visible to parents only after an administrator approves them. Alongside the core register, the platform includes an Attendance Management module (attendance marking and per-student attendance records tied to students and classes) and a Fee Management module (fee structures, invoices, and payment status tied to students and classes). A fee-pending business rule governs report cards: if a student's school fees are pending for more than 60 days, grade report card downloads are blocked. The register must be trustworthy and legible but feel humane — like a well-made school handbook rather than a corporate dashboard.
school-management-platform is a web application delivered as a ReactJS single-page frontend talking to a Python Flask backend API, persisting all school records in PostgreSQL, and deployed with Docker. It provides six source-named record destinations — student list, teacher list, grade list, subject list, and class list — plus an admin panel where administrators manage the school's records. Two additional modules extend the register: Attendance Management (a login-required, teacher-facing Attendance page for marking attendance for students in the classes a teacher teaches and reviewing per-student attendance records, plus administrator control of attendance through the admin panel) and Fee Management (administrator control of fee structures, invoices, and payment status through the admin panel). A Parent Portal gives signed-in Parents a read-only view of their child's attendance and approved grades, including grade report card downloads that are blocked while the child's school fees have been pending for more than 60 days. Grade records follow a two-step approval lifecycle: a mark entered by a Teacher is stored as Pending Admin Approval and is not visible to Parents until a School Administrator approves it. Anonymous visitors reach a Landing page, establish first use through Sign Up, and returning users verify through Login. All record destinations require login; the admin panel is additionally restricted to the administrator role; the Attendance page is restricted to signed-in Teachers; the Parent Portal is restricted to signed-in Parents.
Actors
Current delivery and ownership
Narrow exclusions
Removed from scope
The requester asked for a production-ready School Management System with a fixed technology shape (Flask, ReactJS, PostgreSQL, Docker) and a fixed set of record destinations plus an admin panel. That is the whole current product: a trustworthy register of students, teachers, grades, subjects, and classes, maintained by administrators and consulted by teachers.
Because the records are durable, actor-specific, and must remain bound to the correct participant, the application owns identity. Anonymous visitors can read the Landing page and can reach Sign Up and Login without being signed in; every record destination and the admin panel require an authenticated session, and the admin panel additionally requires the administrator role. A newly enrolled account is a teacher-level account; the administrator role is established before the admin panel is available (see Assumptions for the bootstrap boundary). No account-management capabilities beyond enrollment and login are in scope.
The Attendance Management module is one place where a Teacher writes to the register: teachers mark attendance for students in the classes they teach and review per-student attendance records, while administrators control attendance management through the admin panel. Teachers also enter marks for their students; those marks are written as Pending Admin Approval and are not visible to Parents until an administrator approves them. The Fee Management module is administrator-only: fee structures, invoices, and payment status are created and maintained through the admin panel, and teachers read no fee data. Both modules are current scope, not future horizon.
The Parent Portal is a read-only parent-facing surface: a signed-in Parent views their child's attendance records and approved grade records and downloads the child's grade report card. Parents never write to the register and never see other students' records. The report card download is governed by one business rule: if the child's school fees have been pending for more than 60 days, the download is blocked and the portal explains why; the rule blocks the download only and does not remove the parent's ability to view attendance and grades in the portal.
Everything described here is current. No future-horizon features are accepted.
FR-1 — Technology shape (explicit) As Hussain Bekhushi I should have the system built with a Python Flask backend, a ReactJS frontend, a PostgreSQL database, and Docker deployment, so that the platform is production-ready on the requested stack.
FR-2 — Student list (explicit) As a School Administrator or Teacher I should view the student list, so that I can see every student on record.
FR-3 — Teacher list (explicit) As a School Administrator or Teacher I should view the teacher list, so that I can see every teacher on record.
FR-4 — Grade list (explicit) As a School Administrator or Teacher I should view the grade list, so that I can review grades recorded for students.
FR-4a — Teacher mark entry (explicit) As a Teacher I should enter marks for my students, so that their grade records are recorded for approval.
FR-4b — Two-step grade approval (explicit) As a School Administrator I should approve teacher-entered marks, so that only verified grades become visible to students and parents.
FR-5 — Subject list (explicit) As a School Administrator or Teacher I should view the subject list, so that I can see every subject taught.
FR-6 — Class list (explicit) As a School Administrator or Teacher I should view the class list, so that I can see every class, its teacher, and its enrolled-student count.
FR-7 — Admin panel (explicit) As a School Administrator I should use the admin panel to manage the school's records — students, teachers, grades, subjects, and classes — so that the lists stay accurate and current.
FR-7a — Admin dashboard summary metrics (explicit) As a School Administrator I should see four summary metric cards at the top of the admin panel, so that I can read the school's current state at a glance before working on records.
FR-8 — Anonymous entry (required_inference) As an anonymous visitor I should reach the Landing page before any identity establishment, so that I understand what the platform is and how to begin.
FR-9 — Self-service enrollment (required_inference) As an anonymous visitor I should enroll through Sign Up, so that I establish first use of the platform.
FR-10 — Returning verification (required_inference) As a returning School Administrator or Teacher I should log in, so that I restore access to protected school records.
FR-11 — Administrator role establishment (required_inference) As the system I should establish the administrator role before the admin panel is available, so that only School Administrators can manage records.
FR-12 — Attendance Management module (explicit) As a Teacher I should mark and review attendance for the students in the classes I teach, so that per-student attendance records stay accurate and tied to the correct student and class.
FR-13 — Administrator attendance control (explicit) As a School Administrator I should control attendance management through the admin panel, so that attendance records remain correct and current across the school.
FR-14 — Fee Management module (explicit) As a School Administrator I should manage fee structures, invoices, and payment status through the admin panel, so that each student's fees are recorded against the correct student and class.
FR-15 — Attendance and fee data integrity (required_inference) As the system I should reject attendance and fee records that reference missing records, so that the register stays trustworthy.
FR-16 — Parent Portal (explicit) As a Parent I should use the Parent Portal to view my child's attendance and grades, so that I can follow my child's schooling without asking the school office.
FR-17 — Parent record scope (required_inference) As the system I should limit the Parent Portal to the signed-in parent's own child, so that no parent reads another family's records.
FR-18 — Grade report card download (explicit) As a Parent I should download my child's grade report card from the Parent Portal, so that I hold an official record of the child's grades.
FR-19 — Pending-fee report card block (explicit) As the system I should block grade report card downloads when school fees are pending for more than 60 days, so that the school's fee policy is enforced at the point of the report card.
Flow A — Anonymous visitor discovers the platform
Flow B — New user enrolls
Flow C — Returning user logs in
Flow D — Teacher reviews classes and grades
Flow D2 — Teacher enters marks (step 1 of the 2-step grade approval)
Flow F — Teacher marks attendance
Flow E — Administrator maintains the register
Flow G2 — Administrator approves teacher-entered marks (step 2 of the 2-step grade approval)
Flow G — Administrator manages attendance and fees
Flow H — Parent persona journey: Login → View Student → Attendance & Grades
Flow I — Parent downloads the grade report card (with the pending-fee rule)
Muse: Frank Chimero — warm editorial order; a well-made school handbook, not a corporate dashboard.
Admin dashboard theme (Deep Indigo / Dark Slate) The admin panel is the one surface that departs from the cream paper ground and adopts a Deep Indigo and Dark Slate scheme, while keeping the same Literata / Work Sans typography, hairline rules, tabular numerals, and handbook-spread layout.
#0F172A (Dark Slate)#1E293B with a 1px #334155 border#F8FAFC; secondary/muted text: #94A3B8#4F46E5 (Deep Indigo — primary action, active nav, metric emphasis)#C98A1E (mustard retained for status ticks, grade bands, and approval-status labels)#16A34A (positive/active), #FACC15 (warning), #EF4444 (critical, e.g. pending fee alerts)Palette (light mode)
#F4EDDF (cream paper ground)#FBF6EA (record panels)#D9CDB8 (1px hairline)#241F1A (ink)#9E3B22 (rust — primary action and active nav, at most one element per screen)#C98A1E (mustard — status ticks, grade bands, inline highlights)#6E6457#5B6E7A (dusty blue)Typography
clamp(44px, 7vw, 96px); h1 clamp(32px, 4.4vw, 56px); h2 32px; h3 24px; body 17px; small 14px; label 11px. Body measure capped at 68ch.Shape language: 8px radii on panels, 4px on inputs; hairline 1px rules as the main structural device; no hard shadows — depth from a 1px offset rule and a warm 3% ink wash. Spot illustrations are single-weight ink line drawings with flat rust or mustard fills, inline with copy. Exception — admin dashboard: every button and every metric card on the admin panel carries a smooth hover elevation effect (a soft shadow lift plus a 1–2px upward translate over ~160ms ease-out, returning on mouse-out), and the metric cards use the Dark Slate surface with a #334155 border. This hover elevation applies to the admin panel only; record-list rows and other surfaces keep the no-hover-lift rule.
Layout: Single editorial column max 1200px with a persistent 240px left rail on desktop; collapses to a top bar with a horizontal scrollable section strip at 768px and a bottom-sheet menu at 375px. Every list page opens with an essay-style rule and illustrated section opener, then a ruled table with 1px dividers, generous 16px row height, and tabular numerals. The admin panel is a two-column handbook spread with a four-card summary metric row above it (Total Students, Total Teachers, Today's Attendance %, Pending Fee Alerts), the metric row collapsing to a single stacked column at 768px and 375px.
Imagery: Warm flat spot illustrations in ink line with rust/mustard fills — books, bell, roll-call clipboard, compass — as section openers. One monochrome documentary-style image on Landing, warm duotone, cropped to bleed off the right edge. Hand-drawn rule flourishes connect headers to content.
Accessibility: Readable text and controls stay whole at 375px, 768px, and 1280px; imagery and decoration may bleed or crop, but never cover readable text or controls. On the Dark Slate admin dashboard, text and controls meet readable contrast against #0F172A / #1E293B, and the four metric cards wrap or stack rather than clip their labels and values.
The Landing page is an asymmetric editorial spread. On the left, a rust kicker label sits above a 9-column Literata headline set at clamp(44px, 7vw, 96px) reading "Every record, in one honest place", with a single rust rectangular CTA beneath. On the right, a full-height cream panel carries a large ink-line illustration of a school register and bell, bleeding off the right edge, with a thin mustard rule running behind it. Below the fold, a ruled three-column ledger of the six record types — students, teachers, grades, subjects, classes, admin — with tabular numerals, no cards, no icons in boxes. The persistent left rail of numbered sections (01 Students … 06 Admin) in Work Sans small caps with rust numerals frames the page as a table of contents.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
Admin Dashboard Motion
Landing Hero Motion Brief
prefers-reduced-motion drops all transitions to instant; body measure capped at 68ch.#4F46E5) and Dark Slate (#0F172A) theme defined in Visuals, and its four top summary metric cards (Total Students, Total Teachers, Today's Attendance %, Pending Fee Alerts) are computed by the shared Flask backend from persisted records — never hard-coded in the frontend — and are restricted to the administrator role. Every button and metric card on the admin panel carries a smooth hover elevation effect that is disabled under prefers-reduced-motion.#4F46E5) and Dark Slate (#0F172A) theme with four top summary metric cards (Total Students, Total Teachers, Today's Attendance %, Pending Fee Alerts) and smooth hover elevation on all buttons and metric cards, as explicitly requested. This is a scoped override of the cream/rust palette and the no-hover-lift rule for the admin panel only; all other surfaces keep the cream/rust/mustard palette and the no-hover-lift rule. (explicit)#4F46E5) and Dark Slate (#0F172A) color scheme applied to the admin panel only.
School Management Platform
school-management-platform keeps the student, teacher, grade, subject and class register — and the attendance and fee notes that go with it — in one honest place for the people who look after them.
The register · six record types
Beyond the register
Attendance ManagementTeachers mark attendance for the students in the classes they teach, then review per-student attendance records for those same classes. Administrators oversee attendance through the admin panel, so the roll call and the register stay one continuous record.
Fee ManagementAdministrators maintain fee structures, invoices, and payment status through the admin panel, tied to students and classes.
Grades, in two stepsA mark a teacher enters is held as Pending Admin Approval. Only once an administrator approves it does it join the approved grades parents read in the Parent Portal and on the report card.
One rule carries across them: while a child’s school fees have been pending for more than 60 days, grade report card downloads are blocked — parents can still view attendance and grades in the Parent Portal.

School Management Platform
school-management-platform keeps the student, teacher, grade, subject and class register — and the attendance and fee notes that go with it — in one honest place for the people who look after them.
The register · six record types
Beyond the register
Attendance ManagementTeachers mark attendance for the students in the classes they teach, then review per-student attendance records for those same classes. Administrators oversee attendance through the admin panel, so the roll call and the register stay one continuous record.
Fee ManagementAdministrators maintain fee structures, invoices, and payment status through the admin panel, tied to students and classes.
Grades, in two stepsA mark a teacher enters is held as Pending Admin Approval. Only once an administrator approves it does it join the approved grades parents read in the Parent Portal and on the report card.
One rule carries across them: while a child’s school fees have been pending for more than 60 days, grade report card downloads are blocked — parents can still view attendance and grades in the Parent Portal.
No comments yet. Be the first!