Story 1: Student Registration & Profile Management
Overview
| Field | Value |
|---|---|
| Story ID | NGE-13-1 |
| Story Points | 13 |
| Sprint | Sprint 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
| Task | Title | Estimate |
|---|---|---|
| T1 | Create student database tables | 4h |
| T2 | Implement StudentService | 8h |
| T3 | Build student list UI | 8h |
| T4 | Build registration form | 8h |
| T5 | Write tests | 6h |