Sistema Escolar Integral
Desktop application for a school’s full academic management: students, grades, attendance, payments and reports in a single system.
- Java
- Swing
- MySQL
- Maven
The case study
- Problem
- Academic data usually lives scattered across separate spreadsheets, with no validation, no access control and no aggregated view.
- Solution
- Java 21 and Swing on a strict layered architecture (UI → Services → DAO → JDBC → MySQL), with a hand-built connection pool and data layer, role-based security with BCrypt and a 3NF-normalized database.
- Outcome
- Every module offers CRUD, server-side filtering and pagination, PDF and CSV export and an indicators dashboard; thoroughly documented and with screenshots.
Process
Development process
The reasoning behind the technical decisions: why each technology was chosen, what challenges came up and how they were solved.
- 01
A strict layered architecture
I organized the system in layers with inward-pointing dependencies: UI → Services → DAO → JDBC → MySQL. Each layer only knows the one below it, so the business logic knows nothing about Swing or SQL. The benefit is concrete: I can change the interface or the database without rewriting the rules, and each layer is tested in isolation.
- 02
Security and trustworthy data
Passwords are stored with BCrypt and access is role-based, because a school system handles sensitive data. The database is normalized to 3NF to prevent inconsistencies, and I wrote a hand-built connection pool so it does not open a connection per query —a detail that keeps the app responsive under real use.
- 03
Performance with many records
The challenge of a management app shows up when tables grow. Instead of pulling everything into memory and filtering on the client, I moved filtering and pagination to the server (SQL), so the interface always works with small pages. I added PDF and CSV export and an indicators dashboard to turn the data into decisions.
Repositories
Commits
- Cambios
c89b130Eduardo2 weeks ago