Skip to content
My Projects
Case study 2026

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.

  1. 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.

  2. 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.

  3. 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

  1. Cambios

    c89b130Eduardo2 weeks ago