SDN Dinoyo 4 Website profile
Situs Web Profil Sekolah SDN Dinoyo 4 adalah proyek tim yang dikembangkan sebagai bagian dari tantangan kursus selama studi universitas kami. Situs web ini berfungsi sebagai profil digital resmi untuk memperkenalkan dan mempromosikan SDN Dinoyo 4 kepada publik. Ini menampilkan informasi komprehensif tentang sekolah, termasuk fasilitasnya, berita dan kegiatan terbaru, direktori guru, daftar program ekstrakurikuler, visi dan misi sekolah, serta informasi kontak dan tautan media sosial untuk memudahkan komunikasi dan keterlibatan.
2024
Situs Web
PHP Native, MVC, MySQL, PDO, Bootstrap 5
Masalah
SDN Dinoyo 4 Malang membutuhkan portal web profil resmi untuk menggantikan penyampaian informasi sekolah yang sebelumnya masih terbatas pada media fisik atau grup pesan singkat. Pihak sekolah memerlukan platform digital yang dapat diakses oleh masyarakat dan calon wali murid untuk melihat sarana prasarana sekolah, daftar pengajar aktif, program ekstrakurikuler, serta prestasi siswa. Di sisi operasional, staf sekolah memerlukan panel admin (back-office) mandiri yang mudah digunakan untuk memperbarui berita kegiatan sekolah, data guru, dan galeri karosel tanpa harus mengedit kode sumber website secara manual.
Peran saya
Proyek ini dibangun sebagai proyek tim perkuliahan dalam rangka kursus pengembangan web. Saya memegang peran sebagai Fullstack Developer (fokus Arsitektur Backend & Database):
- Perancangan Arsitektur MVC PHP Native: Membangun custom lightweight MVC engine dari awal tanpa framework berat, merancang core router (
App.php) dengan parsing URL dinamis, pemanggilan controller/method otomatis viacall_user_func_array, dan struktur view modular (header, footer, dynamic views). - Abstraksi Database & Keamanan Query (PDO Wrapper): Mengembangkan class
Database.phpberbasis PDO dengan persistent connection, exception mode, dan fungsi parameterized binding (bindValue) untuk memastikan setiap query terproteksi dari ancaman SQL Injection. - Sistem Manajemen Konten (CMS) Admin: Mengembangkan modul back-office untuk manajemen guru (
Manage_guru_admin), ekstrakurikuler (manage_ekskul_admin), dan karosel pengumuman sekolah (Home_admin), lengkap dengan upload berkas gambar. - Autentikasi & Keamanan Sesi: Mengimplementasikan alur login administrator berbasis session PHP dengan enkripsi kata sandi
SHA-256, pesan kilat (flash messages) untuk umpan balik form, serta proteksi akses rute admin.
Arsitektur sistem
Aplikasi dirancang ringan, minim dependensi, dan kompatibel dengan hosting PHP konvensional (Apache + cPanel):
- Core MVC Engine (
app/core):App.php: Mem-parsing parameter query string dari.htaccess, memetakan URL menjadicontroller/method/params, dan mengeksekusi controller yang sesuai.Controller.php: Menyediakan metode pembantuview()untuk menyatukan template header/footer dengan konten, sertamodel()untuk instansiasi class data.Database.php: Wrapper PDO tunggal yang menangani query SQL, binding otomatis tipe data (integer, string, boolean), dan fetching data (resultSet,single).
- MySQL Database: Menyimpan data terstruktur untuk guru, ekstrakurikuler, berita, sarana prasarana, karosel, dan kredensial administrator.
Halaman & modul utama
| Modul / URL | Controller | Fungsi Utama |
|---|---|---|
/home |
Home.php |
Beranda portal publik dengan karosel prestasi dan rangkuman kegiatan |
/guru |
Guru.php |
Direktori pengajar lengkap dengan foto, nama, dan jabatan/kelas ampu |
/ekskul |
Ekskul.php |
Informasi kegiatan ekstrakurikuler (Pramuka, tari, dll) dan pembina |
/sarana_prasarana |
Sarana_prasarana.php |
Showcase fasilitas sekolah (perpustakaan, UKS, lab bahasa, panggung) |
/login & /logout |
Login.php, Logout.php |
Autentikasi sesi staf pengelola sekolah |
/admin |
Admin.php |
Dashboard utama statistik konten website sekolah |
/manage_guru_admin |
Manage_guru_admin.php |
CRUD data staf pengajar dan upload foto guru |
/manage_ekskul_admin |
manage_ekskul_admin.php |
CRUD program ekstrakurikuler sekolah |
Tantangan teknis
1. Membangun MVC sendiri tanpa framework.
Tanpa framework seperti CodeIgniter atau Laravel, seluruh alur Request-Response harus diatur sendiri. Mekanisme routing diselesaikan menggunakan file .htaccess yang mengalihkan seluruh lalu lintas ke public/index.php?url=$1. File App.php kemudian membersihkan URL dari karakter terlarang (sanitasi URL), memecahnya berdasarkan delimiter /, dan mencocokkan segmen URL pertama dengan nama controller yang ada di direktori controllers/.
2. Keamanan database dengan PDO Prepared Statements.
Aplikasi web berbasis PHP native rentan terhadap SQL Injection jika menggunakan konkatenasi string mentah. Kami membungkus seluruh query dalam class Database yang mewajibkan binding nilai dengan tipe parameter PDO (PDO::PARAM_INT, PDO::PARAM_STR), sehingga masukan pengguna pada form login atau pencarian berita tersanitasi secara ketat.
3. Penanganan upload gambar aset sekolah.
Staf sekolah sering kali mengunggah gambar kegiatan atau foto guru dalam format yang beragam. Sistem memvalidasi ekstensi file yang diizinkan (JPG, PNG, JPEG), menghasilkan penamaan file unik untuk mencegah penumpukan file dengan nama sama, serta menyimpan path gambar di database sementara file fisik tersimpan rapi di direktori public/img/.
Yang ingin saya perbaiki
- Mengganti enkripsi kata sandi
SHA-256dengan algoritma hashing modern yang lebih aman sepertibcrypt(password_hashdanpassword_verify). - Menambahkan kompresi gambar otomatis pada sisi server saat staf mengunggah foto kegiatan berukuran besar agar loading halaman publik lebih cepat.
- Menerapkan pagination pada halaman direktori berita dan guru.
Proyek Lainnya

Blog latihan Laravel dengan migration, seeder, dan Tailwind CSS.
- Laravel
- MySQL
- Git

Aplikasi mobile berbasis suara yang dirancang bersama pedagang tunanetra, dari wawancara lapangan hingga usability testing.
- Figma

Redesain sistem informasi akademik kampus berdasarkan temuan usability.
- Figma