Project Case StudyMarch 2022
PUPR - JFPU System
Internal document workflow engine designed for the Indonesian Ministry of Public Works to automate employee rank upgrades and promotions.
DesktopNode.jsTypeScriptExpress.jsSequelizeMySQLReact.jsFirebase AdminNodemailer
#PUPR - JFPU System
##Architectural Overview
PUPR - JFPU is a specialized workflow portal for the Indonesian Ministry of Public Works (PUPR) to handle rank promotions and organizational shifts for civil servants. As a Backend Engineer, I structured the database and API routes to ensure user rank transitions and activity periods could be logged securely by department heads.
// Login Portal
##Key Features
Master Data Management
Detailed CMS tools covering departments (Instansi), work units (Unit Kerja), ranks (Pangkat), and job titles (Jabatan).
Activity & Period Tracking
Organized modules where employees log specific work activities (Uraian Kegiatan) tied to specific evaluation periods.
Structured Approval Flows
Interfaces designed for supervisors to verify and sign off on submitted activity logs.
User Directory
Safe, role-assigned tables to browse the employee roster and allocate reporting authorities.
##Engineering Highlights
###Dependable Data Structuring
Handling sensitive governmental HR logic requires care:
- Relational Integrity: Built on top of MySQL using Sequelize, mapping out exactly how an employee's historic ranks trace back to specific evaluation periods.
- Role Verification: Handled strict cookie-based / token checking via Express.js to make sure one department head couldn't accidentally approve another department's activity logs.

// Rank and Title Management
##My Role and Responsibilities
- Core Routing: Established the full set of CRUD routes for over 10 different lookup/master tables.
- Logic Safeguards: Programmed the transition rules—e.g., ensuring an activity from a closed period can't be suddenly altered.
- Test Scripts: Used Supertest to repeatedly hit the API logic during deployment to ensure nothing broke when database columns changed.
- Automated Emailing: Hooked in Nodemailer for quick notification sends regarding rank approval status.

// Activity Breakdowns
##Technical Stack
- Languages: Node.js, TypeScript
- Frontend Integration: React.js
- Database: MySQL (Sequelize)
- Services: Firebase Admin, Nodemailer
- Testing Core: Supertest