Skip to content

Ela689/Smart_Schedule_App_New

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📘 Smart Schedule App

📖 Description

Smart Schedule App is a complete solution for the automatic generation and management of school timetables.
The project is built with a robust Java Spring Boot backend and a modern React/TypeScript frontend, ensuring a seamless user experience.

The application provides an efficient way to manage teachers, classes, subjects, and schedules, while respecting both hard constraints (e.g., availability, classroom conflicts) and soft preferences (e.g., teaching hours).

Key features include:

  • Password-based authentication
  • Teacher, class, and subject management
  • Automatic timetable generation based on input data
  • Export to Excel and PDF
  • Change history, undo functionality, and conflict detection

🛠️ Technologies

  • Backend: Java 17, Spring Boot, Maven
  • Containerization: Docker
    • Oracle 23AI container (runtime)
    • MySQL container (database)
  • Frontend: React + TypeScript
  • Persistence: MySQL (Docker container)
  • Optimization: OptaPlanner (constraint solver)

🖥️ Screenshots

🔑 Login Page

Login Page
The login interface, where users must enter a password to access the application.


🏠 Introduction Page

Introduction Page
The introduction dashboard, offering quick navigation to Teachers, Classes, and Subjects management.


👨‍🏫 Teacher Management

Teacher Management 1
Teacher management view with filters, search bar, and add teacher functionality.

Teacher Management 2
Detailed teacher information, including assigned classes, subjects, and homeroom responsibilities.


🏫 Class Management

Class Management 1
Overview of all classes, with options to filter, add, and export data to Excel or PDF.

Class Management 2
Detailed class information, including associated teachers and profiles.


📚 Subject Management

Subject Management 1
Subject management view with filters, add subject functionality, and export options.

Subject Management 2
Detailed subject allocation per class, with weekly teaching hours.


📅 Schedule Generation

Primary School

Primary School Schedule
Generated timetable for primary school classes, with 7 fixed daily periods.

Middle & High School

Middle and High School Schedule
Generated timetable for middle and high school classes, ensuring no conflicts between teachers and classrooms.


⚙️ Algorithm Requirements

1. Daily Schedule Structure

  • 7 fixed periods per day:
    1. 08:30 – 09:15
    2. 09:25 – 10:10
    3. 10:25 – 11:10
    4. 11:25 – 12:10
    5. 12:20 – 13:05
    6. 13:15 – 14:00
    7. 14:05 – 14:50
  • Workdays: Monday – Friday

2. School Structure

  • Primary School: Grades 1A – 4D
  • Lower Secondary School: Grades 5A – 9F
  • Upper Secondary School: Grades 10A – 12D (Real/Humanities)
  • Empty classes are excluded from generation

3. Teachers & Subjects

  • Up to 10 teachers per subject
  • Teachers may teach multiple subjects
  • Subjects with subgroup sessions (e.g., CS, English, French, Technology)
    • Class is split into subgroups, taught in parallel

4. General Constraints

  • Primary School: 4–5 periods/day (max 7)
  • Secondary: 5–6 periods/day (max 7)
  • Balanced subject distribution
  • Teacher rules:
    • Hard: unavailability, no double-booking
    • Soft: preferred times

🧩 Timetable Generation Process

The timetable is automatically generated using the data introduced by the user into the system.

🔹 Input Data

The generation algorithm relies on:

  • Classes defined in the system (grade, profile, level)
  • Teachers and their weekly teaching hours
  • Subjects associated with classes and teachers
  • Classrooms and availability
  • Teacher restrictions (hard) and preferences (soft)

🔹 Generation Logic

  1. Data Collection:
    The system collects all input (teachers, classes, subjects, availability).

  2. Constraint Solving (OptaPlanner):

    • Hard constraints (cannot be violated):
      • No teacher in two places at once
      • Class must not have overlapping lessons
      • Classroom cannot be double-booked
    • Soft constraints (preferences to optimize):
      • Teachers prefer certain hours/days
      • Balanced subject distribution
      • Primary classes prefer morning hours
  3. Automatic Assignment:
    Each subject-hour is placed into the timetable considering all constraints.

  4. Conflict Detection & Resolution:

    • If conflicts arise, the solver retries with adjustments
    • Final timetable ensures feasibility and fair distribution
  5. Result:

    • A valid timetable with all periods filled
    • Teacher and classroom availability respected
    • Students and teachers have balanced schedules

🔹 Post-Generation Features

  • Manual Adjustments: Admin can move lessons
  • Undo / Version History: Keep track of changes
  • Export: Timetable downloadable as Excel or PDF

🚀 How to Run the Project

# Clone repo
git clone https://github.com/Ela689/Smart_Schedule_App_New.git
cd Smart_Schedule_App_New

# Backend
cd orar/backend
mvn spring-boot:run

# Frontend
cd orar/frontend
npm install
npm start

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors