A high-concurrency desktop Enterprise Resource Planning (ERP) system built in Java, designed for university academic administration with a dual-database architecture and multi-tier role access control.
Overview
University administrative systems tend to be clunky, monolithic, or completely proprietary. This project was an exercise in building something robust, well-architected, and actually pleasant to use — in pure Java + Swing, without frameworks.
Architecture
The system uses a dual-database design:
- Auth DB — stores user credentials (hashed with SHA-256 + salt), session tokens, and role assignments. Completely isolated from academic data.
- Academic DB — stores courses, enrollments, grades, and transcripts. Only accessible after successful authentication.
This separation ensures that a compromise of the academic database does not expose user credentials, and vice versa.
Features
- Role-Based Access Control (RBAC) with three administrative levels: Admin > Faculty > Student
- SHA-256 password hashing with per-user salt — no plaintext passwords stored anywhere
- Concurrent course enrollment support for 100+ simultaneous entries using connection pooling
- Automated grade management — GPA calculation, grade sheet generation, transcript export
- PDF transcript generation using iText — formatted, printable academic transcripts on demand
Technical Highlights
| Aspect | Implementation |
|---|---|
| UI | Java Swing with custom components |
| Database | MySQL via JDBC |
| Auth | SHA-256 + salt, session tokens |
| Concurrency | JDBC connection pool |
| Export | iText PDF library |
Lessons Learned
Building this without an ORM or web framework forced a deep understanding of JDBC transaction management, Swing’s event dispatch thread model, and the practical tradeoffs of connection pooling under load.