Junior School
Junior School is a custom Frappe application that extends the core Frappe Education. It provides comprehensive tools for scheduling, attendance tracking, assessment management, and automated student lifecycle processes, specifically designed for multi-school environments.
- Author: navariltd
- Repository: https://github.com/navariltd/Junior-School
- GitHub stars: 20
- Forks: 38
- License: AGPL-3.0
- Category: Education
- Maintenance: Actively Maintained
- Frappe versions: develop, v15, v16
Install Junior School
bench get-app https://github.com/navariltd/Junior-School
Add the Frappe Gems badge to your README
Maintain Junior School? Paste this into your README:
[](https://frappegems.com/gems/apps/navariltd/Junior-School)
About Junior School
📚 Frappe Education Extension
Junior School is a custom Frappe application that extends the core Frappe Education. It provides comprehensive tools for scheduling, attendance tracking, assessment management, and automated student lifecycle processes, specifically designed for multi-school environments.
Table of Contents
- 📚 Frappe Education Extension Customization
- 🚀 Project Overview
- Key Features
- 1. 🗓️ School Timetable Page
- 2. ⚙️ Auto-Generation of Timetable
- 3. 🧑🏽🎓 Enhanced Student Attendance
- 4. 🗂️ Subject Scheduling Tool
- 5. 🧾 Student Report Generation Tool
- 6. 👨🏽💻 Student ID-Based Email and User Auto-Creation
- 7. 🏫 School as Company
- 8. 📊 Assessment Plan Status
- 9. 🎓 Academic Year Setup & Automated Student Promotion System
- 10. 🚪 Student Auto-Deactivation
- 11. 📅 Academic Term Update
- 🛠️ Installation
- Key DocTypes
- Reports
- Dashboards
🚀 Project Overview
This extension was built to address the unique needs of junior school management, providing sophisticated tools for educational institutions that require multi-campus support, flexible scheduling, and automated administrative processes. The system maintains compatibility with standard Frappe Education while adding specialized functionality for enhanced school operations.
🔄 System Workflows
Core Process Flows
graph TD
A[Student Registration] --> B[Auto ID/Email Creation]
B --> C[Class Enrollment]
C --> D[Attendance Tracking]
D --> E[Assessments]
E --> F[Report Generation]
F --> G[Year-End Promotion]
G --> H[Auto-Deactivation if Leaving]
I[Timetable Setup] --> J[Define Subjects/Rules]
J --> K[Assign Teachers/Rooms]
K --> L[Generate Timetable]
L --> M[Calendar View/Edits]
N[Academic Year] --> O[Auto-Create Year]
O --> P[Update Terms]
P --> Q[Close Assessments]
Key Features
1. 🗓️ School Timetable Page
A new School Timetable View has been implemented using a calendar interface. Type Timetable in search bar and click on first suggestion Open Timetable.
The key features include:
Calendar Display: Weekly timetable view (Sun–Sat) showing subjects, teachers, and streams.
Filtering Options:
Levels: e.g., Pre-primary, Primary
Teachers: Filter to view specific teacher schedules
- Streams: Allows filtering based on class streams
Print Functionality: Filter as required and print the timetable (e.g., per teacher or per stream).
Assumption: The timetable repeats weekly, so only a one-week view is necessary.
Interactive Editing:
Users can click any scheduled session to view details in a modal pop-up.
The modal allows editing and submitting updates, which reflect on the backend immediately.
- The user can also click in a space and schedule a class.
2. ⚙️ Auto-Generation of Timetable
To streamline scheduling, an automated timetable generator has been introduced using a Single Doctype: Timetable Generator.
Structure:
Main Fields:
Academic YearAcademic TermDefault Time SlotsLesson StartsLesson Ends
Child Tables:
a) Subject Rules
Defines subject-level constraints:
Subject
Max Time per Session
Frequency Per Week
Allow Double Lessons?
Max Double Lessons Per Week
b) Slot & Breaks Tab
Time Slots Table: Define periods (e.g., period 1, 2...) with start/end times and durations.
Breaks Table: Define breaks like breakfast, lunch, etc.. The user must have created this in the
Breaksdoctypes, because it auto-populates the start and end time from the chosen break.
c) Teachers Tab
Contains a child table Teacher Preference with:
Teacher Name
Assigned Subjects and Streams
Max Periods per Day/Week
This helps define teaching limits and areas of specialization.
d) Teaching Rooms
In the Teaching Rooms child table:
Assign specific rooms to each subject-stream combination.
Junior school rooms default to classes, with extras like labs or libraries.
Generation Flow:
User fills in all the above data and
save.Clicks
Generate Timetable.The process is queued for backend scheduling due to time complexity.
The system manages duplicate and failed schedules with internal retry/rescheduling mechanisms.
🛠️ Status:
Work in progress.
Some logic misbehaviors.
Double lessons are yet to be fully implemented.
3. 🧑🏽🎓 Enhanced Student Attendance
To support multi-shift attendance (e.g., morning & evening), the following has been introduced:
New Doctype:
Enhanced Student Attendance ToolBased on
Student Attendance Toolwith additional fields:Shift(Linked to HR shift types)Start Time,End Time
Student AttendanceDoctype Changes:New field:
ShiftOverride on the default duplicate attendance validation logic:
Allows multiple attendance entries per day based on shift.
Ensures no overlapping shifts.
4. 🗂️ Subject Scheduling Tool
Creating course schedules with consistent time across days was limiting. To address this:
Created a new Doctype:
Subject Scheduling ToolReplicates the
Course Scheduling Toolwith improvements.Child Table:
Subject TimeAllows scheduling different times for different days.
Example:
Monday: 8:00–9:00 AM
Wednesday: 10:00–11:00 AM
Checkbox
Reschedulefor when you are rescheduling an already scheduled subject.
This tool improves flexibility and real-world scheduling accuracy.
5. 🧾 Student Report Generation Tool
A new feature has been added to the Student Report Generation Tool to support customizable report card printing.
Field Added:
Custom Print Report Card(Checkbox)When checked, the system prints a report card using a custom template, designed to align with the institution's branding and reporting preferences.
This template reflects the layout and styling shown in the sample below:
Group Filter Removed:
To enhance flexibility during events like half-term breaks, the group filter was removed. This enables users to:Generate report cards for any assessment group.
Allow students to take their report cards home during half-term or early departures without restriction.
6. 👨🏽💻 Student ID-Based Email and User Auto-Creation
🛠️ Key Features:
Custom Student ID Format:
Student ID is auto-generated based on the selected School.
The ID format follows a prefix derived from the school abbreviation, followed by a numeric sequence.
Example: For a school with abbreviation
JNS, the Student ID might beJNS-0001.⚠️ This logic is customizable depending on the use case or naming convention required.
Auto-Generated Student Email:
Since younger students may not have emails, the system synthesizes one using the format:
@gmail.comExample:
JNS0001@gmail.com
Username = Cleaned Student ID:
The username is set to the
Student IDwith all non-alphanumeric characters removed (e.g., no slashes or symbols).safe_username = re.sub(r"\W+", "", self.custom_student_id)
Password = Student ID:
- The password for the student account is set as their
Student ID(including special characters, if any).
- The password for the student account is set as their
Login Behavior:
Students log in using their username, which is their cleaned-up Student ID.
They use their Student ID (original) as the password.
This approach is enabled by adjusting System Settings to allow username-based login.
Backend Override
The default Frappe logic for user creation has been overridden via a custom controller, ModifiedStudent, where the user account is generated upon saving a new Student document.
7. 🏫 School as Company
To support multi-school or multi-campus setups within one ERPNext instance, we introduced a structural change: each School is now treated as a Company. This lets users leverage native ERPNext features like permissions, chart of accounts, assets, and HR, scoped to a school.
✅ Key Benefits
Enables multi-school management under a single ERPNext instance.
Uses ERPNext's built-in
Companylogic to segment data per school.Allows clear scoping for:
Financials
Student data
Assessments
Attendance
Reporting
Instructor and program tracking
Filters are applied across key doctypes (e.g., Course Schedule) to restrict selection to records relevant to the selected school:
You can only select streams, student groups, or instructors that belong to the specified school.
Ensures clean data separation and avoids cross-school data mixing.
Once this is implemented:
You can apply User Permissions for
Companyto restrict access to specific school data.Customize dashboards, reports, and **quer
Related Education apps for Frappe & ERPNext
- Lms — Easy to Use, 100% Open Source Learning Management System
- Education — Open source education / school management system
- Mon School — Frappe App for Mon School based on Frappe LMS
- Ifitwala Ed — A School Managment System
- School Automations —
- Academy — Website for academy.erpnext.com
- Psa — Sana'a University Postgraduate Studies Administration (PSA)
- Lms —