Hero Screenshot
Educational Management Platform • Workflow Automation • Role-Based Web Application
A digital internship management platform designed to streamline industrial training supervision, daily logbook tracking, and institutional evaluation.
The SIWES Logbook Manager was developed to modernize the management of industrial training programs by replacing paper-based logbooks with a centralized digital platform. SIWES (Students' Industrial Work Experience Scheme) is a critical component of tertiary education, yet its administration often depends on manual documentation, physical signatures, and fragmented communication between students, lecturers, supervisors, and institutional coordinators.
This platform simplifies internship management by allowing every stakeholder — students, industrial supervisors, lecturers, school coordinators, and administrators — to collaborate through one secure system. By eliminating paperwork and automating workflows, the application increases transparency, reduces administrative overhead, and ensures that no logbook entry or evaluation falls through the cracks.
Physical logbooks are easily lost, damaged, or forgotten — compromising months of internship records.
Lecturers must physically visit internship sites or collect logbooks to review progress, delaying feedback.
Assessment cycles stretch for weeks due to slow document exchange between supervisors and institutions.
Students, supervisors, and lecturers lack a shared channel for updates, questions, and feedback.
Coordinators manually track hundreds of students, their placements, and completion status across spreadsheets.
Multi-step sign-offs require physical presence, creating bottlenecks that delay the entire internship cycle.
Students submit entries daily through a web interface — timestamped, organized, and never lost.
Industrial supervisors review and comment on logbook entries directly within the platform.
Academic staff can monitor student progress remotely, providing feedback without site visits.
Logbook entries follow configurable approval chains — student → supervisor → lecturer → coordinator.
Structured evaluation forms with scoring rubrics ensure consistent assessment across all students.
Coordinators view real-time progress across all students, placements, and completion rates.
Submit daily logbook entries, track progress, and receive supervisor feedback.
Review student entries, provide comments, and approve weekly reports.
Monitor assigned students, review logbook entries, and submit evaluations.
Manage all students, assign supervisors, and oversee the entire internship cycle.
Full system control, user management, and institutional configuration.
Personalized overview showing logbook progress, pending reviews, and internship timeline.
Rich text entries with date tracking, activity descriptions, and attachment support.
Aggregated weekly summaries with supervisor validation and lecturer visibility.
Structured comment system with approval flags and notification triggers.
Multi-criteria assessment forms with scoring rubrics and final grade computation.
Institution-wide overview with student progress, placement tracking, and reporting.
Five distinct user roles — Student, Industrial Supervisor, Lecturer, School Coordinator, and Administrator — each with tailored permissions. Django's authentication framework was extended with custom permission checks at both the view and template levels, ensuring users only see data relevant to their responsibilities.
The logbook approval workflow follows a configurable chain: student submits → supervisor reviews → lecturer approves → coordinator finalizes. Each stage updates the entry's status, and invalid state transitions are prevented through business logic in the service layer.
PostgreSQL models include normalized relationships between students, placements, supervisors, logbook entries, weekly reports, evaluations, and institutional data. Foreign key constraints and indexed queries ensure referential integrity while maintaining query performance.
Validation occurs at multiple layers: client-side JavaScript for immediate feedback, Django form and model validation for business rules, and database constraints as the final safeguard. This layered approach prevents invalid data from entering the system through any path.
The project is organized into modular Django apps — accounts, logbook, evaluations, reports — each encapsulating its own models, views, and templates. This separation of concerns makes the codebase maintainable and allows components to be reused or extended independently.
The application is deployed on AWS EC2, providing a reliable and scalable cloud environment. Nginx serves as a reverse proxy, handling static files, request buffering, and SSL termination. Gunicorn runs the Django application as a WSGI server with multiple worker processes for concurrent request handling.
Static files (CSS, JavaScript, images) are collected and served efficiently by Nginx, reducing application server load. PostgreSQL runs as the production database with regular backups. The deployment follows a standard Unix socket configuration, with environment variables managing sensitive settings like database credentials and secret keys.
This architecture prioritizes reliability, security, and maintainability — keeping the application available while minimizing operational complexity for a single-server deployment.
Local setup with Django development server and SQLite
AWS EC2 • Nginx • Gunicorn • PostgreSQL
Django apps, service layer, and template structure
Entity relationships across students, placements, and evaluations
Login, role verification, and session management
Student → Supervisor → Lecturer → Coordinator chain
Daily entry creation through approval lifecycle
AWS EC2, Nginx, Gunicorn, and static file serving
Chosen for its mature ORM, built-in admin interface, authentication system, and rapid development capabilities. Django's app structure naturally supports the modular design required for managing multiple user roles and workflows.
Bootstrap provides a responsive foundation while custom CSS and JavaScript handle role-specific UI logic and form interactions.
Selected for its robustness, support for complex queries, referential integrity, and production reliability. Handles the relational data model with multiple interconnected entities.
AWS EC2 provides a flexible cloud server. Nginx serves as a high-performance reverse proxy and static file server. Gunicorn manages Django application processes with worker concurrency.
Linux-based server administration, environment variable management, and automated backup strategies ensure operational stability.
Git for version control, Django's testing framework, and browser developer tools for debugging and performance profiling.
Five distinct roles with overlapping but distinct permissions required careful permission modeling. I used Django's group and permission system extended with custom template tags and view decorators to enforce access control without duplicating logic.
The multi-step approval chain needed to be configurable and prevent invalid state transitions. I modeled logbook entries with explicit status fields and validated transitions in the service layer before persisting changes.
From registration to final evaluation, each internship moves through phases. Tracking these states while keeping the user interface intuitive required a clean separation between data models and presentation logic.
Configuring Nginx, Gunicorn, static files, and environment variables on a production Linux server was a significant learning experience. Debugging production issues strengthened my understanding of server management and deployment pipelines.
React Native app for students to submit logbook entries and receive notifications on the go.
Automated alerts for pending approvals, evaluation deadlines, and supervisor feedback.
Institutional insights — placement trends, completion rates, and student performance metrics.
Support for attaching images, scanned documents, and reports to logbook entries.
Electronic sign-off for supervisors and coordinators, replacing physical signatures entirely.
Progressive web app capabilities for students in areas with unreliable internet connectivity.
This project demonstrates my ability to design and build workflow-driven applications that solve practical institutional challenges. The SIWES Logbook Manager isn't just a CRUD application — it orchestrates a complex approval chain across five distinct user roles, each with their own responsibilities and system views.
Developing this platform strengthened my understanding of backend architecture, role-based systems, production deployment on AWS, and creating software that improves collaboration between multiple stakeholders. Every engineering decision — from the modular Django app structure to the Nginx reverse proxy configuration — was driven by the need for reliability and maintainability.
I'm passionate about building reliable software that simplifies complex processes while maintaining clean, scalable, and maintainable architecture — because the best systems are the ones that quietly make organizations work better.