Docufy is a full-stack web platform designed to streamline the management of corporate documentation, employee records, and compliance training. It features an automated expiration tracking system that notifies companies of impending deadlines via email.
The platform relies on a Role-Based Access Control (RBAC) architecture, dividing functionality between two distinct actors:
- Consultant: Manages partner companies and organizes training courses.
- Company: Manages internal documents, employees, and course enrollments.
This project was built with a strong focus on Software Design Patterns and MVC Architecture.
- Java (Servlets & Spring): Core logic implementation.
- Thymeleaf: Server-side template rendering for specific views.
- PostgreSQL: Relational database management.
- REST APIs: JSON-based communication for file transfers and frontend integration.
- Angular: Dynamic single-page application framework.
- Bootstrap: Responsive design and UI components.
- ChartJS: Visualization of expiring documents on the dashboard.
- MVC (Model-View-Controller): Strict separation of concerns.
- DAO (Data Access Object): Abstracted interface for all database operations.
- Proxy Pattern (Security): Implemented a Security Proxy to handle authentication and authorization, ensuring strict data isolation between "Company" and "Consultant" roles.
- Expiration Dashboard: Visual analytics and tables showing documents "Expiring Soon" or "Expired".
- Global Search: Instant access to companies, documents, and employees via the header.
- Document Management: Upload, sort, and download corporate and employee-specific files.
- Bulk Operations: Support for importing employee lists via CSV/XLSX.
- Notification Engine: Automated emails via JavaMail for deadline alerts and account creation.
| Role | Capabilities |
|---|---|
| Consultant | • Create Company Accounts (Auto-email credentials) • Manage Training Courses • View aggregate data of partner companies |
| Company | • Manage Employees & Documents • Enroll employees in courses (Cap-limited) • Receive expiration alerts |
Ensure your PostgreSQL instance is running and configure the connection in:
src/main/resources/application.properties
The database dump includes 3 test accounts:
| Role | Password | |
|---|---|---|
| Company A | alpha@azienda.com |
Web2324. |
| Company B | beta@azienda.com |
Web2324. |
| Consultant | gamma@consulente.com |
Web2324. |
- Campanella Gianluca
- Curcio Daniel
- Falvo Caterina
- Gattuso Pietro
*Disclaimer: Icons provided by Freepik & BootstrapIcons.