October 18th, 2025
New
Improved
Fixed

Bulk Student Import via CSV Upload
Introduced a powerful CSV-based bulk student import feature for batches.
Supports importing:
Student personal details
Parent/guardian relationships
Enrollment data and status
Includes server-side CSV parsing with validation, transformation, and duplicate detection.
Added staging UI for data preview with progress tracking and real-time validation feedback.
Implemented transactional database operations with optimized parent lookups.
Supports text-based relationship mapping, automatic fee calculation, and status synchronization.
Modern modal flow with dynamic progress updates and concise, user-friendly design.
Restricted imports to active batches only to ensure data accuracy.
Configurable Import Limits & Guidance
Introduced configurable 50-student limit per import via STUDENT_BULK_IMPORT_CONFIG.
Added upload guidance, warning alerts, and clear validation messages to prevent oversized imports.
Server-side validation ensures oversized CSVs are gracefully rejected with actionable feedback.
Academic Metadata β School Name Field
Added conditional school name field for organizations of type Academic Tuition Centre.
Created new database table StudentAcademicMetadata linked to Student, Organization, and Branch.
Integrated school name field into:
Student add/edit forms
Student profile view (π GraduationCap icon)
Bulk import CSV template and review screen
Automatically hidden for other organization types.
Updated validation schemas, types, and data access functions accordingly.
Import Workflow Enhancements
Implemented per-student progressive import with real-time progress tracking.
Added IMPORT_SINGLE_STUDENT intent to support one-by-one import operations.
Reorganized modal and upload logic for better error handling and user feedback.
Enhanced staging flow to validate both data and relationships before final commit.
Added visual feedback for upload limits and import stages.
Data Access & Validation Improvements
Strengthened input validation in all loaders (invoices, student, batch, and workspace).
Added Number.isFinite() checks for query parameters to prevent NaN and invalid data errors.
Default fallbacks applied for invalid query strings:
Invoices β Pending (1)
Courses/Batches/Students β Active (2)
Nested Invoice Views β All (-1)
Prevented server errors from malformed URLs such as /workspace/invoices?statusFilter=foo.
Technical Architecture
Improved separation of validation and transformation for stronger type safety.
Server-side parsing avoids browser memory issues with large CSVs.
Simplified constants and naming across import and enrollment modules.
Cleaned up unused files (e.g., removed erroneous course-get-with placeholder).
UI & UX Enhancements
Added progress-driven UI elements for better clarity during imports.
Updated error messages and feedback flows for improved transparency.
Streamlined design consistency across modals, lists, and import review views.
Polished form and validation feedback visuals across academic and student modules.
CSV Gender Parsing
Fixed parsing of the gender field by switching from numeric to string-based handling.
Prevented validation errors for values like βMaleβ or βFemale.β
Import Error Handling
Corrected the sequence of error and data handling in the bulk upload process.
Ensured validation errors display before processing valid records.
Query Parameter Crashes
Fixed potential 500 errors from invalid URL parameters across multiple loaders.
Added safe guards and default fallbacks for all workspace query strings.
β
Overall Impact
This release introduces robust bulk student import, academic metadata support, and enhanced system resilience.
Users can now efficiently onboard multiple students, track progress in real time, and capture additional academic details β all with better stability, smarter validation, and cleaner UI workflows.