Skip to content

Students and institution records

The student record

erp.student_profiles is the record of an enrolled student. It holds what a report card, a marksheet or a UDISE+ / AISHE return needs:

  • Admission number, name (with middle name), gender, date of birth, contact and address
  • Category, quota, nationality, blood group
  • APAAR ID, the NEP education ID that government returns key on
  • K-12 and UDISE fields: mother tongue, religion, CWSN status, disability type
  • Guardians as a sub-record. One guardian is the primary contact, and their mobile is the family's parent login, shared by every sibling in the organisation (see sibling parent logins)
  • A photo, stored as a storage key and served through short-lived signed URLs

We store APAAR, not raw Aadhaar. Raw Aadhaar would mean field encryption and verifiable parental consent for a minor's most sensitive ID, for little gain.

Each institution type sees only the particulars it has to file.

Enrolment history

Higher ed and PU colleges keep one student_levels row per student per year, so promotion adds a row and history stays. K-12 schools still use the older class model, where year-end promotion overwrites the student's class and section. Moving K-12 onto the same per-year model is Planned.

Institution records

An institution record carries statutory identity, split across the two levels Kwilo has:

Level Fields
Organisation (the legal entity, e.g. a trust) Legal name, registration number, PAN, GSTIN, website
Institution Establishment year, and by type: UDISE+ code and board affiliation number (K-12), AISHE code, university affiliation number and NAAC grade (higher ed), AICTE approval number (engineering)
Both Email, phone, website, address. An institution inherits blanks from its organisation.

A single-school customer types contact details once. A trust with three colleges overrides them per campus. The institution modal shows only the statutory fields that apply to its type.

These fields feed letterheads on receipts, registration forms and ID cards.

ID cards

Live behind the erp_id_cards flag.

A card template is a built-in layout (portrait or landscape, student or staff) plus a background image and a theme: accent colour, which optional fields show, validity and footer. The admin designs it with a live preview, then:

  1. Opens the template and picks Generate cards.
  2. Selects people from the roster, or all of them.
  3. Reviews a preview grid of every card.
  4. Prints at true CR80 size, or saves as PDF.

The preview and the print use the same component, so what you see is what prints. The ID number is the student's USN or roll number, falling back to admission number. Staff cards use the employee code. Branding comes from the institution record.

Where it lives

  • Web: ErpStudentsPage, ErpStudentDetailPage, ErpIdCardsPage, SchoolModal, OrganizationModal
  • Backend: apps/backend/src/erp/students/, apps/backend/src/erp/identity/, models/org_unit.py, models/organization.py