Skip to main content

Story 1: Student Registration & Profile Management

Overview

FieldValue
Story IDNGE-13-1
Story Points13
SprintSprint 7

User Story

As a School Admin
I want to register new students with complete profile information
So that I can maintain accurate student records

Acceptance Criteria

Feature: Student Registration

Scenario: Register new student
Given I am logged in as School Admin
When I fill in student details and submit
Then student should be created with unique admission number
And section strength should increase by 1
And welcome SMS should be sent to parents

Scenario: Search students
Given I am on the student list page
When I search for a student name
Then I should see matching students with filters

Technical Implementation

API Endpoints

POST   /students           - Register new student
GET /students - List with filters
GET /students/:id - Get details
PATCH /students/:id - Update student
POST /students/:id/documents - Upload document

Service Implementation

@Injectable()
export class StudentsService {
async create(dto: CreateStudentDto): Promise<Student> {
// Generate admission number
const admissionNo = await this.generateAdmissionNo();

// Encrypt Aadhaar (DPDPA compliance)
const aadhaarEncrypted = await this.encryptionService.encrypt(dto.aadhaar);

// Create student with transaction
return this.prisma.$transaction(async (tx) => {
const student = await tx.student.create({ ... });
await tx.section.update({ currentStrength: { increment: 1 } });
return student;
});
}
}

Tasks

TaskTitleEstimate
T1Create student database tables4h
T2Implement StudentService8h
T3Build student list UI8h
T4Build registration form8h
T5Write tests6h