Skip to main content

SKOLE-ADMN — Admission Form Module

Module ID: SKOLE-ADMN | Version: 1.0 | Status: Active
Products: Web App (admin) · Public-facing form (no auth required)

1. Overview

FieldValue
Module NameAdmission Form
Module CodeADMN
Business ValueReplaces paper admission forms. Parents fill a multi-section digital form to enroll their child. Data flows directly into the student registry, parent details, guardian, and address tables. Triggers parent app PIN setup on completion.

Scope In

  • Multi-step admission: student info → parent/guardian info → address info
  • Public endpoints (no JWT) so prospective parents can submit
  • Edit each section individually after initial submission
  • Grade lookup and student info lookup by roll_no

Scope Out

  • Payment collection during admission
  • Document upload (birth certificate, ID proof)

2. Requirements

Functional Requirements (FR)

What the module must DO — actions, behaviors, and outcomes.
  • SKOLE-ADMN-FR001: The module shall allow any user with a school link to submit an admission form without requiring authentication.
  • SKOLE-ADMN-FR002: The module shall capture comprehensive student, parent, guardian, and address information through a multi-step flow.
  • SKOLE-ADMN-FR003: The module shall automatically create synchronized records in students, parent_details, student_guardian, and student_address tables upon submission.
  • SKOLE-ADMN-FR004: The module shall allow admins to query submitted records by skole_id and roll number.
  • SKOLE-ADMN-FR005: The module shall provide available grades for the school in a dynamic dropdown.
  • SKOLE-ADMN-FR006: The module shall enable section-level updates for student, parent, guardian, and address info post-submission.

Non-Functional Requirements (NFR)

How well the module must do it — performance, security, and reliability.
  • SKOLE-ADMN-NFR001: The module shall perform as a public-facing gateway by marking all admission endpoints as @Public().
  • SKOLE-ADMN-NFR002: The module shall behave reliably by identifying the target school via the skole_id provided in the query or form body.

Constraints

Rules and boundaries — tech choices and platform restrictions.
  • C001: We must utilize database transactions during admission creation to ensure all related records (student, parent, guardian, etc.) are created atomically.
  • C002: We must ensure the public form is stateless as it cannot rely on JWT-based sessions.

3. Sub-modules / Backlog

IDSub-modulePriorityStatusEstimateLinked FR
SKOLE-ADMN-SM001Multi-step admission form (create)P0Done3dFR001–FR003
SKOLE-ADMN-SM002Section-level update formsP1Done2dFR005
SKOLE-ADMN-SM003Grade lookup APIP1Done0.5dFR006
SKOLE-ADMN-SM004Student info lookupP1Done0.5dFR004

4. Logical Implementation

Admission Create Flow

POST /web-app/admission-form
  ├─ Input: { student: StudentDto, parent: ParentDetailsDto,
  │           guardian: StudentGuardianDto, address: StudentAddressDto }
  ├─ BEGIN TRANSACTION
  │    ├─ INSERT students (or find existing by roll_no)
  │    ├─ INSERT parent_details
  │    ├─ INSERT student_guardian
  │    └─ INSERT student_address
  └─ COMMIT → return { success, student_id, roll_no }

Grade Lookup

GET /web-app/grades?skole_id=
  --> SELECT DISTINCT grade FROM students WHERE skole_id = ?

5. UI Requirements

Web App — Admission Form

IDScreenRouteDescription
SKOLE-ADMN-UI001Admission Form/public/:skoleId/registrationMulti-step form: Student → Parent → Guardian → Address
SKOLE-ADMN-UI002Student Edit/:skoleId/students/:id/editAdmin section edit
Components:
IDComponentProps
SKOLE-ADMN-UC001MultiStepFormsteps[], currentStep, onNext, onBack
SKOLE-ADMN-UC002StudentInfoForminitialValues, onSubmit
SKOLE-ADMN-UC003ParentDetailsForminitialValues, onSubmit
SKOLE-ADMN-UC004GuardianForminitialValues, onSubmit
SKOLE-ADMN-UC005AddressForminitialValues, onSubmit
SKOLE-ADMN-UC006GradeDropdownskole_id, selected, onChange

6. Conditional Expressions

IDExpressionTriggerTrue ActionFalse Action
SKOLE-ADMN-CE001currentStep === totalStepsMultiStepFormShow Submit buttonShow Next button
SKOLE-ADMN-CE002student found by roll_noStudent info lookupPre-fill formShow empty form
SKOLE-ADMN-CE003submission successCreate admissionShow success + PIN setup linkShow error message

7. Database Tables

IDTableRole
SKOLE-ADMN-TB001studentsStudent record created
SKOLE-ADMN-TB002parent_detailsParent info created
SKOLE-ADMN-TB003student_guardianGuardian info
SKOLE-ADMN-TB004student_addressAddress info
SKOLE-ADMN-TB005registrationsLead tracking (school signups)

8. API Endpoints

IDMethodRouteAuthDescription
SKOLE-ADMN-EP001POST/web-app/admission-formPublicSubmit admission form
SKOLE-ADMN-EP002GET/web-app/student-infoPublicLookup student by roll_no
SKOLE-ADMN-EP003GET/web-app/gradesPublicGet available grades for school
SKOLE-ADMN-EP004PATCH/web-app/update-studentPublicUpdate student section
SKOLE-ADMN-EP005PATCH/web-app/update-parentPublicUpdate parent section
SKOLE-ADMN-EP006PATCH/web-app/update-guardianPublicUpdate guardian section
SKOLE-ADMN-EP007PATCH/web-app/update-addressPublicUpdate address section