Semua proyek

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.

Tahun

2024

Kategori

Situs Web

Perkakas

PHP Native, MVC, MySQL, PDO, Bootstrap 5

Studi Kasus

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 via call_user_func_array, dan struktur view modular (header, footer, dynamic views).
  • Abstraksi Database & Keamanan Query (PDO Wrapper): Mengembangkan class Database.php berbasis 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

Diagram arsitektur SDN Dinoyo 4

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 menjadi controller/method/params, dan mengeksekusi controller yang sesuai.
    • Controller.php: Menyediakan metode pembantu view() untuk menyatukan template header/footer dengan konten, serta model() 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-256 dengan algoritma hashing modern yang lebih aman seperti bcrypt (password_hash dan password_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

↑↓ pilih↵ bukaesc tutup
fijri.my.id