Schedule: 1 month (until 08/05/2025) Goal: Complete bookstore system with microkernel architecture and plugins
The project uses a weekly delivery-focused approach, prioritizing robust configuration in the first week to accelerate development in the following weeks. Using Hibernate as ORM significantly reduces the complexity of data access.
Goal: 100% functional environment and base project compiling
-
Environment Setup
- Install SDKMAN and Java 24
- Install Docker and start MariaDB with
docker-compose up -d - Test database connection (DBeaver or CLI client)
- Configure Java 24 in project (
sdk use ...)
-
Project Configuration
- Run
mvn installin root directory (microkernel/) - Create first empty plugin (
user-plugin) - Add plugin to main POM
- Verify that
mvn installstill works
- Run
-
Hibernate Configuration
⚠️ CRITICAL- Add dependencies (
hibernate-core,mariadb-java-client) to plugin POMs - Create
persistence.xmlfile with database configuration - Implement utility class
JPAUtilto manage EntityManagerFactory - Configure
hibernate.hbm2ddl.auto=update
- Add dependencies (
Goal: Complete user management functionality as model for other plugins
-
Data Model
- Create
User.javaclass with JPA annotations (@Entity,@Table,@Id,@Column) - Define attributes: name, email, registrationDate
- Create
-
Persistence Layer
- Implement
UserDAO.javausing EntityManager - Methods:
save(),update(),delete(),findById(),findAll() - Manage transactions properly
- Implement
-
Graphical Interface
- Create JavaFX screen for user listing
- Registration and editing forms
- Connect UI with DAO
-
Microkernel Integration
- Integrate plugin to main system
- Create menu/button to access user management
-
Functional Tests (Recommended)
- Create
UserDAOTest.java - Test each CRUD operation
- Validate business rules
- Create
Goal: Implement Books and Loans plugins
-
Base Structure
- Use
user-pluginas template forbook-plugin - Create
Book.javawith attributes: title, author, isbn, publicationYear, availableCopies - Implement
BookDAO.java(adapted copy of UserDAO)
- Use
-
Interface and Integration
- UI for book management
- Integration with microkernel
-
Complex Model
- Create
Loan.javawith JPA relationships (@ManyToOne) - Map relationships with User and Book
- Attributes: id, user, book, loanDate, returnDate
- Create
-
Business Logic
- Implement
LoanDAO.javawith transactions - Method
createLoan(): create loan + decrease stock - Method
registerReturn(): finalize loan + increase stock - Availability validations
- Implement
-
Advanced Interface
- Form with ComboBox for users and books
- Available copies validation
- Active loans listing
-
Functional Tests
-
BookDAOTest.java -
LoanDAOTest.java(especially important to validate business rules)
-
Goal: Reports, refinement and final delivery
- Implementation
- Create
report-plugin - Implement
ReportDAO.javawith JPQL queries - UI for report display
- Create
-
General Review
- Evaluate UI/UX - is the system easy to use?
- Test all main use cases
- Verify integration between plugins
-
Documentation
- Write final
README.mdwith:- Compilation instructions (
mvn install) - Execution instructions (
mvn exec:java -pl app) - System usage guide
- Compilation instructions (
- Write final
-
Delivery Preparation
- Run
mvn cleanto clean temporary files - Compress source code (
.zipor.tar.gz) - Test compilation and execution in clean environment
- Run
- Email with exact subject:
INF008 T2 Andrey Gomes da Silva Nascimento - Attach compressed project file
- Include execution instructions