Timetable Front is a web-based application designed to solve the Curricula-based University Timetable Problem by generating and managing schedules for higher education courses. This project leverages modern backend technologies and design patterns to provide an efficient and scalable solution.
- Dynamic Timetable Management: Generate and optimize academic schedules based on predefined rules and constraints.
- Report Generation: Integrated tools for creating detailed reports for professors, courses, and disciplines.
- Modular Design: Implements a repository pattern for cleaner data access and management.
- Backend and Frontend Integration: Developed with Java, CSS, and a shell script for configuring the environment.
- User-Friendly Interface: Provides a responsive and intuitive web interface.
The project follows a modular structure with distinct components for data handling, reporting, and view-model management.
-
src/main/java/br/edu/ifma/csp/timetable/:model: Defines the core entities such asCurso,MatrizCurricular, andDetalheDisciplina.dao: Contains the Data Access Objects (DAOs) for managing database interactions, e.g.,DisciplinaDao,DetalheDisciplinaDao.repository: Implements interfaces for handling data operations, e.g.,DetalhesDisciplina,Cursos.viewmodel: Handles the business logic for views, includingMatrizCurricularViewModel,ReportViewModel.util: Provides utility classes likeReportfor rendering dynamic reports.
-
src/main/resources/scripts/:- Contains scripts such as
configure-wildfly.shfor setting up the development environment with WildFly.
- Contains scripts such as
MatrizCurricular.java:
@Entity
@Table(name="MATRIZ_CURRICULAR")
public class MatrizCurricular extends Entidade {
private Integer ano;
private List<Periodo> periodos;
// Getters and Setters
}DetalheDisciplinaDao.java:
@Stateless
public class DetalheDisciplinaDao extends RepositoryDao<DetalheDisciplina> {
public List<DetalheDisciplina> allByMatrizCurricular(MatrizCurricular matrizCurricular) {
// Implementation
}
}ReportViewModel.java:
@NotifyChange({"colTiposRelatorio", "colProfessores", "colDisciplinas", "colCursos"})
@Init
public void init() {
setColTiposRelatorio(tiposRelatorio.all());
setColProfessores(professores.all());
}-
Clone the repository:
git clone https://github.com/psinalberth/timetable-front.git cd timetable-front -
Configure the environment:
./src/main/resources/scripts/configure-wildfly.sh
-
Build the project:
mvn clean install
-
Deploy and run the application:
# Instructions for deployment
- Developers: Extend the repository and DAO classes to modify or add new functionalities.
- End Users: Access the web interface to generate timetables, manage courses, and create reports.
Contributions are welcome! Please fork the repository, make your changes, and submit a pull request. Ensure your code is well-documented and adheres to the coding guidelines.
This project is licensed under the MIT License. See the LICENSE file for details.