Ứng dụng quản lý nhân viên/phòng ban mô phỏng stack SAP (OpenUI5/Fiori + Java Spring Boot + OData + PostgreSQL), dùng để showcase kỹ năng fullstack theo định hướng SAP BTP.
backend/– Spring Boot + JPA + Security (JWT), REST CRUD/api/employees,/api/departments, OData v4/odata/Employees,/odata/Departments(Apache Olingo).frontend/– OpenUI5 app Fiori-style: Employee List, Employee Detail (CRUD), Department List, Analytics Dashboard.docs/– tài liệu spec (spec.md), API (API.md), kiến trúc (architecture.md).TEST_CHECKLIST.md– checklist test tay cho toàn bộ luồng.PROJECT_STATUS.md– trạng thái tiến độ hiện tại.docker-compose.yml– chạy PostgreSQL local nhanh.
- Java 17 (JDK 17+)
- Maven 3.8+
- Node.js 18+ (cho tooling UI5)
- PostgreSQL 14+ (hoặc Docker để chạy PostgreSQL)
docker compose up -dcd backend
mvn spring-boot:runBackend chạy ở http://localhost:8080, có:
/ping– health check./auth/login– trả về JWT demo./api/employees– REST CRUD cho employees./api/departments– danh sách phòng ban./odata/Employees,/odata/Departments– OData v4 JSON (Apache Olingo).
cd frontend
npm install
npm startUI5 app chạy ở http://localhost:8081. Có các màn:
- Login – nhận JWT, lưu token + role.
- Employee List – danh sách nhân viên (hiện dùng
ODataModel v4đọc/odata/Employees). - Employee Detail – xem/sửa/thêm mới (REST).
- Department List – danh sách phòng ban.
- Analytics Dashboard – tổng hợp số lượng employees/departments.
Trong thư mục frontend/:
# frontend/.env
API_BASE_URL=http://localhost:8080Khi chạy npm start, script sẽ generate webapp/env-config.js và inject window.API_BASE_URL.
Tất cả REST/OData call trên frontend sẽ trỏ về http://localhost:8080.
Bạn có thể lưu screenshot vào docs/images/ và tham chiếu trong README:
- Login –
docs/images/login.png - Employee List –
docs/images/employee-list.png - Employee Detail –
docs/images/employee-detail.png - Dashboard –
docs/images/dashboard.png - Error toast (ví dụ duplicate email) –
docs/images/error-toast.png
Ví dụ chèn ảnh:

- Manual:
- Sử dụng checklist chi tiết trong
TEST_CHECKLIST.md(login, RBAC, CRUD, dashboard, validate/email, OData, config.env…).
- Sử dụng checklist chi tiết trong
- Backend (JUnit):
PingControllerTest– test/ping.AuthAndEmployeeApiTest– test/auth/loginvàGET /api/employeesvới JWT.
- Frontend (QUnit):
test/unit/Component.qunit.js– đảm bảoComponentkhởi tạo được.test/unit/Navigation.qunit.js– bootstraps component + router mà không crash (navigation cơ bản).
Chi tiết kiến trúc, data model và OData entities xem trong docs/spec.md và docs/API.md.