Aplikasi Web Sistem Absensi Sekolah adalah sebuah proyek yang bertujuan untuk
- QR Code scanner. Setiap siswa/guru menunjukkan qr code kepada perangkat yang dilengkapi dengan kamera. Aplikasi akan memvalidasi QR code dan mencatat kehadiran siswa ke dalam database.
- RFID Integration. Dukungan presensi menggunakan RFID card sebagai alternatif QR Code. Setiap siswa/guru dapat menggunakan RFID card untuk melakukan presensi dengan validasi kode RFID yang unik.
- Notifikasi Presensi via WhatsApp. Setelah berhasil scan dan presensi, pemberitahuan dikirim ke nomor hp siswa melalui whatsapp.
- Login petugas.
- Dashboard petugas. Petugas sekolah dapat dengan mudah memantau kehadiran siswa dalam periode waktu tertentu melalui tampilan yang disediakan.
- Dashboard Wali Kelas. Fitur khusus untuk guru wali kelas dengan kemampuan:
- Memantau kehadiran siswa di kelas yang diampu
- Mengelola data kehadiran siswa per kelas
- Generate QR code untuk siswa di kelasnya
- Generate laporan kehadiran khusus untuk kelas yang diampu
- QR Code generator & downloader. Petugas yang sudah login akan men-generate dan/atau mendownload qr code setiap siswa/guru. Setiap siswa akan diberikan QR code unik yang terkait dengan identitas siswa. QR code ini akan digunakan saat proses absensi.
- Ubah data absen siswa/guru. Petugas dapat mengubah data absensi setiap siswa/guru. Misalnya mengubah data kehadiran dari
tanpa keteranganmenjadisakitatauizin. - Tambah, Ubah, Hapus(CRUD) data siswa/guru.
- Tambah, Ubah, Hapus(CRUD) data kelas.
- Lihat, Tambah, Ubah, Hapus(CRUD) data petugas. (khusus petugas yang login sebagai
superadmin). - Generate Laporan. Generate laporan dalam bentuk pdf.
- Import Data. Import data secara massal menggunakan file CSV:
- Import data siswa dalam jumlah banyak
- Import data guru
- Import data kelas
- Import data jurusan
- Backup & Restore. Backup dan restore database serta file foto/QR code.
Note
- CodeIgniter 4
- Material Dashboard Bootstrap 4
- Myth Auth Library
- Endroid QR Code Generator
- ZXing JS QR Code Scanner
- Fonnte - WhatsApp API untuk mengirim pesan notifikasi
| (OLD) QR Scanner | (NEW) QR Code + RFID |
|---|---|
![]() |
![]() |
Halaman presensi yang mendukung QR Code Scanner (menggunakan kamera) dan RFID Reader (tap kartu).
Notifikasi otomatis dikirim ke nomor HP siswa/guru setelah berhasil presensi.
| Login Petugas | Dashboard Utama |
|---|---|
![]() |
![]() |
Dashboard admin untuk monitoring kehadiran siswa dan guru.
| Absensi Siswa (Dengan Data Kelas) | Absensi Guru |
|---|---|
![]() |
![]() |
Petugas dapat mengubah status kehadiran (Hadir, Sakit, Izin, Alpha, dll).
| Data Siswa | Data Guru |
|---|---|
![]() |
![]() |
Kelola data kelas, jurusan, dan penugasan Wali Kelas.
| Generate QR Code | Generate Laporan |
|---|---|
![]() |
![]() |
- Composer.
- PHP 8.1+ dan MySQL/MariaDB atau XAMPP versi 8.1+ dengan mengaktifkan extension
intldangd. - Pastikan perangkat memiliki kamera/webcam untuk menjalankan qr scanner. Bisa juga menggunakan kamera HP dengan bantuan software DroidCam.
git clone https://github.com/ikhsan3adi/absensi-sekolah-qr-code.git
cd absensi-sekolah-qr-codeInstall semua dependencies menggunakan Composer:
composer install-
Jika belum ada file
.env, copy dari.env.example:cp .env.example .env
-
Edit file
.envdan sesuaikan konfigurasi database:database.default.hostname = localhost database.default.database = db_absensi database.default.username = root database.default.password = database.default.DBDriver = MySQLi
Buat database baru di MySQL/MariaDB:
CREATE DATABASE db_absensi;Migration akan membuat semua struktur tabel yang diperlukan:
php spark migrate --allTabel yang akan dibuat:
tb_jurusan- Master jurusantb_kelas- Data kelastb_kehadiran- Master status kehadirantb_guru- Data gurutb_siswa- Data siswatb_presensi_guru- Presensi gurutb_presensi_siswa- Presensi siswausers- Akun pengguna (ditambah kolomis_superadmin,id_guru)general_settings- Pengaturan aplikasi
Seeder akan mengisi data awal yang diperlukan:
php spark db:seed DatabaseSeederData yang akan di-seed:
- Status kehadiran: Hadir, Sakit, Izin, Tanpa keterangan
- Jurusan: OTKP, BDP, AKL, RPL
- Kelas awal: X, XI, XII untuk semua jurusan
- Akun superadmin default
- Pengaturan umum aplikasi
Menggunakan PHP Built-in Server:
php spark serveAplikasi akan berjalan di http://localhost:8080
Atau menggunakan XAMPP/Apache:
- Pastikan Apache dan MySQL sudah running
- Akses aplikasi melalui browser
Login menggunakan kredensial superadmin default:
Username: superadmin
Password: superadmin
Email: adminsuper@gmail.com
⚠️ PENTING: Segera ubah password default setelah login pertama kali!
- Izinkan akses kamera untuk fitur QR Scanner
- Untuk RFID: Hubungkan RFID reader USB ke komputer
- Untuk notifikasi WhatsApp: Lihat bagian Konfigurasi di bawah
📖 Untuk panduan lengkap tentang migration dan seeder, lihat MIGRATION_GUIDE.md
Fitur Wali Kelas memungkinkan guru untuk mengelola kehadiran siswa di kelas yang diampu. Berikut cara mengaktifkan dan menggunakan fitur ini:
Pastikan data berikut sudah tersedia:
- Data Guru sudah terdaftar di sistem
- Data Kelas sudah dibuat
- Login sebagai admin/superadmin
- Buka menu Kelas & Jurusan → Data Kelas
- Klik tombol Edit pada kelas yang akan ditugaskan wali kelas
- Pada dropdown "Wali Kelas", pilih nama guru yang akan menjadi wali kelas
- Klik Simpan
- Login sebagai superadmin
- Buka menu Data Petugas
- Untuk membuat akun baru:
- Klik Tambah Petugas
- Isi data: Email, Username, Password
- Pilih Role: Admin (bukan Superadmin)
- Pada dropdown "Hubungkan ke Guru", pilih nama guru
- Klik Simpan
- Untuk mengedit akun yang sudah ada:
- Klik Edit pada akun petugas
- Pada dropdown "Hubungkan ke Guru", pilih nama guru
- Klik Update
- Logout dari akun superadmin
- Login menggunakan username dan password yang sudah dibuat/dihubungkan ke data guru
- Setelah login, sistem akan otomatis mendeteksi bahwa akun tersebut terhubung dengan data guru yang menjadi wali kelas
- Dashboard Wali Kelas akan muncul dengan data kelas yang diampu
Setelah login sebagai wali kelas, Anda dapat:
- Melihat Statistik Kehadiran: Grafik dan data kehadiran siswa di kelas yang diampu
- Mengelola Kehadiran Siswa: Lihat detail kehadiran setiap siswa per tanggal
- Generate QR Code: Download QR Code untuk siswa di kelas yang diampu
- Generate Laporan: Buat laporan kehadiran khusus untuk kelas yang diampu dalam format PDF
- Satu akun petugas hanya bisa dihubungkan ke satu data guru
- Guru yang belum ditugaskan sebagai wali kelas tidak akan melihat menu Dashboard Wali Kelas
- Wali kelas hanya dapat melihat dan mengelola data siswa di kelasnya sendiri
- Akun superadmin memiliki akses penuh ke semua fitur, termasuk fitur wali kelas
Aplikasi mendukung import data secara massal menggunakan file CSV:
-
Import Data Siswa - Buka menu Data Siswa > Import CSV. Download template csv_guru_template.csv dan upload setelah diisi. Contoh csv_siswa_example.csv
Pastikan id kelas cocok dengan data kelas yang ada di database
-
Import Data Guru - Buka menu Data Guru > Import CSV. Download template csv_guru_template.csv dan upload setelah diisi.
Perhatikan untuk impor data guru & siswa:
...,jenis_kelamin,... <- kolom ...,Laki-laki,... # contoh nilai valid ...,Perempuan,... # pastikan sama persis
-
Import Data Jurusan dan Kelas - Buka menu Kelas & Jurusan > Jurusan > Import (Jurusan/Kelas). Download template csv_jurusan_template.csv atau csv_kelas_template.csv dan upload setelah diisi.
Penting untuk memastikan kolom jurusan pada csv kelas harus SUDAH ADA dan
$PERSIS \space SAMA$ dengan yang ada di database jurusan.Direkomendasikan untuk impor jurusan dahulu lalu impor kelas
Catatan: Gunakan encoding UTF-8 dan delimiter koma (,). Sistem akan mengabaikan data duplikat.
Important
-
Konfigurasi file
.envuntuk mengatur base url(terutama jika melakukan hosting), koneksi database dan pengaturan lainnya sesuai dengan lingkungan pengembangan Anda. -
Untuk mengaktifkan notifikasi WhatsApp, pertama-tama ubah variabel
.envberikut darifalsemenjaditrue.# .env # WA_NOTIFICATION=false # sebelum WA_NOTIFICATION=true
Lalu masukkan token WhatsApp API.
# .env WA_NOTIFICATION=true WHATSAPP_PROVIDER=Fonnte WHATSAPP_TOKEN=XXXXXXXXXXXXXXXXX # ganti dengan token anda
Untuk mendapatkan token, daftar di website fonnte terlebih dahulu. Lalu daftarkan device anda dan dapatkan token Fonnte Whatsapp API
-
Untuk mengubah konfigurasi nama sekolah, tahun ajaran logo sekolah dll sudah disediakan pengaturan (khusus untuk superadmin).
-
Logo Sekolah Rekomendasi 100x100px atau 1:1 dan berformat PNG/JPG.
-
Jika ingin mengubah email, username & password dari superadmin, buka file
app\Database\Migrations\2023-08-18-000004_AddSuperadmin.phplalu ubah & sesuaikan kode berikut:// INSERT INITIAL SUPERADMIN $email = 'adminsuper@gmail.com'; $username = 'superadmin'; $password = 'superadmin';
Untuk menjalankan aplikasi menggunakan Docker, pastikan Docker dan Docker Compose sudah terinstal di komputer Anda.
Jalankan perintah berikut di root project:
docker-compose up -d --buildPerintah ini akan membangun image dan menjalankan container untuk aplikasi web, database, dan phpMyAdmin.
- Aplikasi Utama: Akses melalui browser di
http://localhost:8080/ - phpMyAdmin: Akses melalui browser di
http://localhost:8081/
Aplikasi sudah dikonfigurasi untuk terhubung dengan database container secara otomatis. Default credential database:
- Host:
db - Username:
root - Password:
root - Database:
db_absensi
Untuk menghentikan container:
docker-compose downDengan aplikasi web sistem absensi sekolah berbasis QR code ini, diharapkan proses absensi di sekolah menjadi lebih efisien dan terotomatisasi. Proyek ini dapat diadaptasi dan dikembangkan lebih lanjut sesuai dengan kebutuhan dan persyaratan sekolah Anda.
Jangan lupa beri star ya...⭐⭐⭐
Kami menerima kontribusi dari komunitas terbuka untuk meningkatkan aplikasi ini. Jika Anda menemukan masalah, bug, atau memiliki saran untuk peningkatan, silakan buat issue baru dalam repositori ini atau ajukan pull request.
















