Buatkan aplikasi Android native bernama eAbsensi untuk absensi siswa menggunakan Kotlin modern dan Jetpack Compose + Material 3, dengan desain modern, profesional, bersih, intuitif, dan responsif untuk berbagai ukuran layar HP maupun tablet. Aplikasi harus bersifat offline-first dan seluruh data disimpan secara lokal di perangkat menggunakan SQLite melalui Room Database, tanpa membutuhkan koneksi internet. Aplikasi memiliki menu Beranda, Kelas, Siswa, Guru/Mata Pelajaran, Absensi, Rekap/Laporan, Backup & Restore, Pengaturan, dan Keluar. Menu Kelas digunakan untuk menambah, mengubah, menghapus, dan mencari data kelas; menu Siswa untuk mengelola data siswa seperti NISN/NIS, nama lengkap, jenis kelamin, dan kelas; menu Guru/Mata Pelajaran untuk mengelola nama guru dan mata pelajaran yang diampu. Menu Absensi digunakan guru untuk memilih kelas, mata pelajaran, tanggal, dan jam/pertemuan kemudian menampilkan seluruh siswa dalam bentuk daftar dengan pilihan status Hadir, Izin, Sakit, dan Alpa, serta menyediakan fitur tandai semua hadir, pencarian siswa, dan penyimpanan absensi. Setiap data absensi harus memiliki informasi siswa, kelas, guru, mata pelajaran, tanggal, waktu/pertemuan, dan status kehadiran serta mencegah data absensi ganda untuk siswa, kelas, mata pelajaran, dan tanggal/pertemuan yang sama. Menu Rekap/Laporan menampilkan statistik kehadiran dan riwayat absensi yang dapat difilter berdasarkan kelas, siswa, guru, mata pelajaran, dan rentang tanggal, serta menyediakan laporan harian, mingguan, bulanan, dan rekap per siswa. Laporan dapat diekspor dan diunduh dalam format PDF dengan tampilan profesional yang mencantumkan nama aplikasi, nama sekolah/lembaga, periode laporan, data kelas, mata pelajaran, guru, tabel siswa, dan jumlah Hadir, Izin, Sakit, Alpa serta persentase kehadiran. Tambahkan fitur Backup & Restore Database agar seluruh data aplikasi dapat diekspor menjadi file database/backup ke penyimpanan perangkat menggunakan Android Storage Access Framework, kemudian file tersebut dapat dipindahkan ke HP lain dan di-restore kembali ke aplikasi. Sebelum restore, berikan konfirmasi dan validasi file agar database yang tidak sesuai tidak menyebabkan aplikasi rusak, serta buat proses backup aman dan tidak menghilangkan data tanpa konfirmasi. Menu Pengaturan digunakan untuk mengatur nama pengguna/guru, nama sekolah, logo sekolah, dan informasi aplikasi, serta pengaturan tersebut digunakan secara otomatis pada tampilan aplikasi dan laporan PDF. Beranda menampilkan dashboard seperti jumlah kelas, jumlah siswa, jumlah guru/mata pelajaran, absensi hari ini, serta ringkasan Hadir, Izin, Sakit, dan Alpa. Gunakan Navigation Compose, ViewModel, StateFlow, Repository Pattern, Room Database, Kotlin Coroutines, dan arsitektur MVVM/Clean Architecture yang sesuai agar kode modular, aman, mudah dipelihara, dan mudah dikembangkan. Gunakan Material 3 dengan komponen seperti Card, NavigationBar/NavigationRail, TopAppBar, FloatingActionButton, Dialog, BottomSheet, Snackbar, SearchBar, DatePicker, Dropdown, dan Data Table/List secara proporsional. Tambahkan dark mode, validasi form, empty state, loading state, error handling, confirmation dialog sebelum menghapus data, serta desain yang nyaman digunakan pada HP. Pastikan aplikasi dapat berjalan sepenuhnya tanpa internet, menggunakan Room sebagai database utama, tidak menggunakan Firebase atau database cloud, dan prioritaskan keamanan data, kemudahan penggunaan, performa, serta tampilan aplikasi yang modern dan profesional. Buat project dengan struktur kode yang rapi dan berikan seluruh kode yang diperlukan untuk menjalankan aplikasi, termasuk konfigurasi Gradle, Entity, DAO, Database, Repository, ViewModel, Navigation, UI Compose, fitur CRUD, absensi, rekap, pembuatan PDF, backup/restore database, pengaturan, dan seluruh halaman aplikasi. Jika terdapat beberapa tahap pengembangan, kerjakan secara bertahap tetapi setiap tahap harus menghasilkan kode yang lengkap dan dapat langsung digunakan.

30 Agustus 2026