Jadwalin adalah aplikasi web progresif (PWA) yang dirancang untuk penggunaan offline-first. Tujuan utamanya adalah untuk menyederhanakan tugas kompleks dalam membuat jadwal pelajaran dan ujian di sekolah, dengan secara otomatis menangani berbagai batasan seperti ketersediaan guru, alokasi ruangan, jam pelajaran, dan persyaratan mata pelajaran.
Aplikasi ini bersifat client-side, artinya semua data (guru, kelas, jadwal, dll.) disimpan dengan aman di perangkat pengguna, memastikan privasi dan kecepatan akses tanpa ketergantungan pada koneksi internet setelah aplikasi dimuat pertama kali.
Aplikasi ini adalah hasil dari sebuah eksperimen kolaboratif yang unik antara kecerdasan buatan (AI) dan manusia.
- Peran AI (Senior Frontend Engineer): Bertanggung jawab untuk menulis sebagian besar kode, merancang arsitektur komponen, mengimplementasikan fitur berdasarkan prompt, dan memastikan kualitas serta performa UI/UX. AI bertindak sebagai pengembang utama.
- Peran Manusia (AI Projek): Bertindak sebagai project manager, konseptor, dan quality assurance. Manusia memberikan ide awal, arahan pengembangan melalui prompt yang detail, melakukan pengujian, serta memandu visi dan tujuan akhir dari aplikasi.
Kolaborasi ini menunjukkan bagaimana AI dapat menjadi alat yang kuat untuk mempercepat proses pengembangan perangkat lunak, sementara kreativitas dan arahan strategis dari manusia tetap menjadi kunci keberhasilan proyek.
- Manajemen Data Komprehensif: Mengelola data inti sekolah seperti Jenjang, Guru, Mata Pelajaran, Ruangan, dan Kelas dengan antarmuka yang intuitif.
- Generator Jadwal Cerdas: Membuat jadwal Reguler dan Ujian secara otomatis berdasarkan batasan yang telah ditentukan, dengan kemampuan menangani potensi konflik.
- Jadwal Tetap (Fixed Schedule): Memungkinkan pengguna untuk mendefinisikan kegiatan non-pelajaran yang berulang (seperti upacara atau ekstrakurikuler) pada slot waktu yang tetap. Generator akan memprioritaskan jadwal ini dan menyusun pelajaran lain di sekitarnya.
- Penjadwalan Gabungan: Kemampuan untuk membuat satu jadwal besar yang mencakup semua jenjang pendidikan sekaligus.
- Editor Jadwal Interaktif: Jadwal yang dihasilkan tidak kaku. Pengguna bisa melakukan penyesuaian dengan fitur drag & drop dan validasi konflik secara real-time.
- Pencarian Guru Pengganti: Fitur cerdas untuk menemukan kandidat guru pengganti yang memenuhi syarat (bisa mengajar mapel, tersedia pada hari itu, dan tidak sedang mengajar di kelas lain).
- Dasbor Analitik: Memberikan wawasan visual mengenai beban mengajar guru, distribusi mata pelajaran, utilisasi ruangan, dan kepadatan jadwal melalui grafik dan heatmap.
- Arsip Jadwal: Menyimpan versi-versi jadwal yang sudah final. Dari arsip, jadwal dapat dicetak atau diekspor ke format HTML dan CSV.
- Fungsionalitas PWA (Offline-First): Aplikasi dapat di-install di perangkat dan berfungsi penuh tanpa koneksi internet setelah dimuat pertama kali.
- Kustomisasi Tampilan & Pengaturan: Mendukung tema terang & gelap, multi-bahasa (Indonesia & Inggris), serta pengaturan kop surat dan margin untuk keperluan cetak.
- Backup & Restore Data: Mengamankan semua data aplikasi dengan satu klik dan memulihkannya kapan saja, memastikan data tidak hilang.
- Frontend: React, TypeScript, JSX
- Styling: Tailwind CSS
- Ikon: Bootstrap Icons
- Grafik & Dasbor: Chart.js
- Drag & Drop: @dnd-kit
- Kompilasi (untuk Deployment): esbuild
- PWA: Service Worker API
Untuk menjalankan aplikasi ini di komputer Anda, ikuti langkah-langkah berikut:
-
Prasyarat: Pastikan Anda sudah meng-install Node.js.
-
Kompilasi Kode: Buka terminal di direktori proyek dan jalankan perintah berikut untuk mengubah file
.tsxmenjadi.jsyang dapat dibaca browser:npx esbuild index.tsx --bundle --outfile=index.js --jsx=automatic
-
Update Referensi Script: Buka file
index.htmldan ubah baris paling bawah dari:<script type="module" src="/index.tsx"></script>
menjadi:
<script type="module" src="/index.js"></script>
-
Jalankan Server Lokal: Di terminal, jalankan salah satu perintah berikut:
# Menggunakan serve (rekomendasi) npx serveBuka browser dan akses alamat yang ditampilkan (biasanya
http://localhost:3000).
Berikut adalah alur kerja yang direkomendasikan untuk menggunakan Jadwalin secara efektif.
Ini adalah fondasi dari jadwal Anda. Kualitas jadwal sangat bergantung pada keakuratan data yang Anda masukkan. Buka tab Manajemen Data.
- Jenjang Pendidikan: Tambahkan semua jenjang yang ada di sekolah Anda (misal: SMP, SMA). Atur hari libur dan slot waktu (jam pelajaran & istirahat) untuk masing-masing jenjang.
- Mata Pelajaran: Masukkan semua mata pelajaran dan kaitkan dengan jenjang yang sesuai.
- Ruangan: Definisikan semua ruangan yang tersedia, termasuk laboratorium atau ruangan khusus lainnya.
- Guru: Daftarkan semua guru, lalu atur hari ketersediaan mereka, jenjang tempat mereka mengajar, dan mata pelajaran yang mereka kuasai.
- Kelas: Terakhir, buat semua kelas, kaitkan dengan jenjangnya, dan definisikan mata pelajaran yang diambil oleh kelas tersebut, lengkap dengan alokasi jam per minggu dan guru pengajarnya.
Setelah semua data lengkap, buka tab Generator Jadwal.
- Pilih Jenis Jadwal (Reguler atau Ujian).
- Pilih Jenjang Pendidikan yang ingin dibuatkan jadwalnya, atau gunakan tombol Buat Jadwal Semua Jenjang untuk proses gabungan.
- Klik Buat Jadwal. Algoritma akan bekerja untuk menyusun jadwal terbaik berdasarkan batasan yang ada.
- Jika diperlukan, Anda bisa membuat beberapa Varian untuk membandingkan hasil yang berbeda.
Jadwal yang dihasilkan dapat disesuaikan:
- Drag & Drop: Pindahkan sesi pelajaran ke slot waktu yang berbeda. Sistem akan memberikan peringatan jika terjadi konflik.
- Cari Pengganti: Klik pada sebuah sesi pelajaran untuk membuka fitur pencarian guru pengganti yang memenuhi syarat.
- Ubah Tampilan: Gunakan kontrol tampilan untuk melihat jadwal berdasarkan kelas, guru, atau ruangan. Anda juga bisa beralih ke Tabel Induk untuk melihat gambaran besar.
Setelah jadwal dirasa final, klik Simpan Varian ini ke Arsip.
- Di tab Arsip Jadwal, Anda dapat melihat semua jadwal yang telah disimpan.
- Dari sini, Anda bisa Mencetak, Mengekspor ke HTML, atau Mengekspor ke CSV untuk dibagikan atau diolah lebih lanjut.
Di menu Pengaturan, Anda bisa:
- Mengatur Informasi Lembaga untuk ditampilkan di kop surat.
- Mengonfigurasi Tahun Ajaran.
- Menyesuaikan Pengaturan Cetak seperti ukuran kertas dan margin.
- Mengatur Jadwal Tetap untuk aktivitas mingguan yang tidak dapat diubah (misalnya upacara bendera). Generator akan memprioritaskan jadwal ini.
- Melakukan Backup & Restore seluruh data aplikasi. Sangat disarankan untuk melakukan backup secara berkala!
Aplikasi ini tersedia secara gratis, apa adanya, open-source, dan terbuka untuk kolaborasi. Jika Anda merasa aplikasi ini bermanfaat, Anda bisa memberikan dukungan melalui beberapa cara:
- ☕ Donasi
- ⭐ Memberi Bintang di GitHub: Jika Anda menyukai proyek ini, berikan bintang ⭐ pada repositori GitHub.
- 💬 Bergabung dengan Diskusi: Punya pertanyaan, ide, atau ingin berbagi pengalaman? Gabung dengan grup diskusi di Telegram.
Kontribusi dari komunitas sangat kami hargai! Jika Anda ingin berkontribusi, berikut adalah beberapa cara yang bisa Anda lakukan:
- Melaporkan Bug: Temukan masalah? Buka issue baru di halaman Issues GitHub.
- Mengusulkan Fitur: Punya ide untuk fitur baru? Sampaikan melalui issue dengan label
enhancement. - Mengirimkan Pull Request: Jika Anda ingin memperbaiki bug atau menambahkan fitur, silakan buat pull request. Untuk perubahan besar, disarankan untuk membuka issue terlebih dahulu untuk diskusi.
Setiap bentuk kontribusi akan membantu Jadwalin menjadi lebih baik.
Proyek ini dilisensikan di bawah GNU General Public License v3.0.