SDN Dinoyo 4 Website profile
SDN Dinoyo 4 School Profile Website is a team project developed as part of a course challenge during our university studies. The website serves as an official digital profile to introduce and promote SDN Dinoyo 4 to the public. It features comprehensive information about the school, including its facilities, latest news and activities, teacher directory, list of extracurricular programs, the school’s vision and mission, as well as contact information and social media links for easy communication and engagement.
2024
Website
PHP Native, MVC, MySQL, PDO, Bootstrap 5
Problem
SDN Dinoyo 4 Malang required an official digital portal to modernize its communication channels, which had previously relied on printed notice boards or fragmented chat groups. The school needed an accessible web presence where prospective parents and the community could review school facilities, teacher credentials, extracurricular programs, and student accomplishments. Operationally, school administrative staff needed an intuitive back-office Content Management System (CMS) to publish news, maintain faculty directories, and update carousel announcements without touching the website’s source code.
My role
This website was developed by a team as part of a university course development challenge. I acted as a Fullstack Developer (focusing on Backend Architecture and Database Design):
- PHP Native MVC Architecture Engineering: Built a lightweight custom MVC engine from scratch without third-party frameworks, designing the URL dispatcher (
App.php) with dynamic segment parsing, automated reflection invocations viacall_user_func_array, and modular view templates. - Database Abstraction & Query Security (PDO Wrapper): Created the central
Database.phpwrapper utilizing persistent PDO connections, error exceptions, and parameterized value binding (bindValue) to defend against SQL Injection vulnerabilities. - Back-Office Admin CMS Modules: Engineered administrative management portals for faculty records (
Manage_guru_admin), extracurricular clubs (manage_ekskul_admin), and homepage carousel announcements (Home_admin), complete with image file upload validation. - Authentication & Session Lifecycle: Implemented secure session-based authentication for school staff using
SHA-256password hashing, flash messages for user feedback, and protected route access gates.
System architecture
The application is engineered to be lightweight, zero-dependency, and deployable on standard shared PHP hosting environments:
- Core MVC Engine (
app/core):App.php: Parses query string parameters routed through.htaccess, mapping paths intocontroller/method/paramstuples and dispatching control to matching classes.Controller.php: Supplies helper methods likeview()to compose header and footer partials, alongsidemodel()to instantiate domain models.Database.php: Central PDO wrapper abstracting SQL statements, auto-detecting data types (integer, string, boolean), and handling result set extractions.
- MySQL Database: Stores structured tables for faculty members, extracurriculars, news publications, facilities, carousel sliders, and admin credentials.
Key modules & endpoints
| Module / URL | Controller | Core Purpose |
|---|---|---|
/home |
Home.php |
Public school homepage featuring dynamic carousels & recent news |
/guru |
Guru.php |
Faculty directory showcasing teacher names, photos, and roles |
/ekskul |
Ekskul.php |
Extracurricular program descriptions (Scouts, traditional dance, etc.) |
/sarana_prasarana |
Sarana_prasarana.php |
Campus facility directory (Library, Clinic, Science Lab, Hall) |
/login & /logout |
Login.php, Logout.php |
Staff session lifecycle management |
/admin |
Admin.php |
Administrative overview dashboard |
/manage_guru_admin |
Manage_guru_admin.php |
Faculty CRUD management and portrait photo uploads |
/manage_ekskul_admin |
manage_ekskul_admin.php |
Extracurricular club management and supervisor assignments |
Technical challenges
1. Custom MVC routing without framework abstractions.
Without Laravel or CodeIgniter, all request routing had to be orchestrated manually. Incoming HTTP requests are redirected via .htaccess rewrite rules to public/index.php?url=$1. The App.php class sanitizes incoming URI strings, splits tokens by the / delimiter, and resolves the leading segment against registered controller classes in the controllers/ directory.
2. Database query hardening using PDO prepared statements.
Native PHP codebases can easily fall victim to SQL Injection if raw query strings are concatenated haphazardly. We channeled all database operations through the Database class, forcing parameter binding with strict PDO data types (PDO::PARAM_INT, PDO::PARAM_STR), guaranteeing input sanitization for all login forms and content submissions.
3. Media asset file upload handling.
School staff routinely upload event photographs and teacher portraits in varying file formats. The application validates approved MIME extensions (JPG, PNG, JPEG), generates unique file identifiers to prevent accidental overwrites, and stores asset paths in MySQL while streaming physical files into public/img/.
Future improvements
- Upgrade password hashing from
SHA-256to modern adaptive hashing algorithms such asbcrypt(password_hashandpassword_verify). - Introduce automated server-side image compression to optimize loading speeds for large photo uploads.
- Add pagination controls across news and faculty directory pages.
View More Projects

Laravel practice blog using migrations, seeders, and Tailwind CSS.
- Laravel
- MySQL
- Git

Voice-first mobile app designed with blind street vendors, from field interviews to usability testing.
- Figma

Usability-driven redesign of my university's academic information system.
- Figma