Aplikasi Peminjaman Lab Online: Notifikasi WA, Anti Double Booking

🔬 Sistem Manajemen Laboratorium
Sistem manajemen peminjaman laboratorium berbasis web yang modern, responsive, dan terintegrasi dengan notifikasi WhatsApp.
🌟 Fitur Utama
🎯 Menyelesaikan Masalah Operasional
- ✅ Anti-Double Booking: Sistem real-time checking mencegah konflik jadwal
- ✅ Data Akurat: Tracking ketersediaan peralatan dan ruangan secara real-time
- ✅ Proses Approval Cepat: Workflow yang streamlined dengan notifikasi otomatis
- ✅ Transparansi Status: Dashboard lengkap dengan status tracking
📊 Manajemen yang Efektif
- 🔥 Sistem Prioritas: Level prioritas (Low, Normal, High, Urgent) untuk booking
- 🔄 Easy Reschedule: Fitur reschedule dan pembatalan yang user-friendly
- 📈 Monitoring Real-time: Dashboard monitoring penggunaan lab secara live
- 📋 Laporan Analitik: Report utilisasi, statistik penggunaan, dan trend analysis
👥 Solusi Masalah SDM
- 🎓 User-Friendly Interface: Design intuitif yang mudah dipelajari
- 📱 Mobile Responsive: Akses dari smartphone untuk kemudahan penggunaan
- 🔔 Auto Notification: WhatsApp notification mengurangi ketergantungan pada teknisi
- 💬 Multi-Channel Communication: Integrasi WhatsApp untuk komunikasi yang lebih baik
🛠️ Teknologi yang Digunakan
- Backend: Python Flask
- Database: SQLite (mudah untuk development, bisa upgrade ke PostgreSQL/MySQL)
- Frontend: HTML5, TailwindCSS, JavaScript ES6+
- Icons: Font Awesome 6
- Notifications: WhatsApp Business API
- Authentication: Session-based dengan password hashing
🚀 Quick Start
1. Prerequisites
# Python 3.8 atau lebih baru python --version # Git untuk clone repository git --version
2. Installation
# Clone repository git clone <repository-url> cd lab-management-system # Buat virtual environment python -m venv venv # Aktifkan virtual environment # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate # Install dependencies pip install -r requirements.txt
3. Konfigurasi WhatsApp API (Opsional)
Edit file config.py
:
# WhatsApp API Configuration WHATSAPP_API_URL = 'http://localhost:5000' # URL WhatsApp API server WHATSAPP_API_ENABLED = True # Set False untuk disable notifikasi # Admin phone numbers untuk notifikasi ADMIN_PHONE_NUMBERS = [ '6281234567890', # Ganti dengan nomor admin yang sebenarnya '6281234567891' # Tambahkan lebih banyak admin jika perlu ]
4. Jalankan Aplikasi
# Initialize database dan jalankan server python run.py --init-db --samples # Atau jalankan dengan opsi debug python run.py --debug
Aplikasi akan berjalan di http://localhost:5000
👤 Akun Demo
Role Username Password Deskripsi Admin admin
admin123
Super admin dengan akses penuh Admin laboran
admin123
Admin laboran User dosen1
user123
Dosen/Staff pengajar User mahasiswa1
user123
Mahasiswa User mahasiswa2
user123
Mahasiswa 📱 Integrasi WhatsApp
Setup WhatsApp API
- Install WhatsApp API Server (menggunakan dokumentasi yang Anda berikan)
- Jalankan WhatsApp API:
# Sesuaikan dengan setup WhatsApp API Andapython whatsapp_api_server.py
- Scan QR Code untuk menghubungkan WhatsApp
- Test Notifikasi:
python run.py --test-wa
Jenis Notifikasi
- 🆕 Booking Baru: Notifikasi ke admin saat ada booking baru
- ✅ Approval: Notifikasi ke user saat booking disetujui/ditolak
- ⚠️ Reminder: Reminder 1 jam sebelum jadwal dimulai
- 🔧 Maintenance: Notifikasi maintenance lab ke user terkait
- 📊 Daily Summary: Ringkasan harian untuk admin
🏗️ Struktur Project
lab-management-system/ ├── app.py # Main Flask application ├── config.py # Configuration settings ├── models.py # Database models dan functions ├── requirements.txt # Python dependencies ├── run.py # Application runner ├── README.md # Documentation ├── utils/ │ ├── whatsapp_service.py # WhatsApp API integration │ └── notification_service.py # Notification management └── templates/ ├── base.html # Base template ├── login.html # Login page ├── dashboard.html # Dashboard ├── booking.html # Booking form ├── bookings.html # Bookings list ├── laboratories.html # Labs list ├── equipment.html # Equipment list ├── reports.html # Reports page ├── profile.html # User profile └── admin/ ├── users.html # User management └── labs.html # Lab management
📋 Panduan Penggunaan
Untuk User (Dosen/Mahasiswa)
- Login dengan akun yang telah diberikan
- Lihat Dashboard untuk overview booking Anda
- Buat Booking Baru:
- Pilih laboratorium
- Tentukan waktu dan durasi
- Isi tujuan penggunaan
- Pilih peralatan yang dibutuhkan
- Submit dan tunggu approval
- Monitor Status booking di halaman "Booking Saya"
- Dapatkan Notifikasi via WhatsApp untuk setiap update
Untuk Admin
- Login dengan akun admin
- Review Booking Requests di dashboard
- Approve/Reject booking dengan catatan
- Monitor Penggunaan lab secara real-time
- Kelola Pengguna dan laboratorium
- Lihat Laporan utilisasi dan statistik
- Setup Maintenance lab dengan notifikasi otomatis
⚙️ Konfigurasi Lanjutan
Database Configuration
Secara default menggunakan SQLite. Untuk production, ubah di config.py
:
# PostgreSQL DATABASE = 'postgresql://user:password@localhost/labmanagement' # MySQL DATABASE = 'mysql://user:password@localhost/labmanagement'
Notification Settings
# Auto-approval untuk booking singkat AUTO_APPROVE_DURATION_MINUTES = 60 # Batas waktu pembatalan CANCEL_DEADLINE_HOURS = 2 # Maksimal durasi booking MAX_BOOKING_DURATION_HOURS = 8
Security Settings
# Ganti secret key untuk production SECRET_KEY = 'your-super-secret-key-here' # Session timeout PERMANENT_SESSION_LIFETIME = timedelta(hours=24)
🔧 Command Line Tools
# Initialize database python run.py --init-db --samples # Reset database (DANGER: menghapus semua data) python run.py --reset-db # Buat admin user baru python run.py --create-admin # Test WhatsApp connection python run.py --test-wa # Run dengan debug mode python run.py --debug # Run di host/port tertentu python run.py --host 192.168.1.100 --port 8080
📊 Features Detail
Real-time Availability Checking
- AJAX-based availability checking
- Prevent double booking dengan database locking
- Visual feedback untuk user
Priority-based Booking System
- 4 level prioritas: Low, Normal, High, Urgent
- Auto-prioritization untuk jenis kegiatan tertentu
- Queue management berdasarkan prioritas
Comprehensive Reporting
- Utilisasi lab per periode
- User activity statistics
- Equipment usage tracking
- Export ke CSV/PDF (coming soon)
Mobile-First Design
- Responsive design untuk semua device
- Touch-friendly interface
- Offline-capable PWA (coming soon)
🐛 Troubleshooting
Database Issues
# Jika database corrupt python run.py --reset-db # Cek database integrity sqlite3 lab_management.db "PRAGMA integrity_check;"
WhatsApp API Issues
# Test koneksi python run.py --test-wa # Cek log tail -f lab_management.log | grep -i whatsapp
Permission Issues
# Set proper permissions chmod +x run.py chmod 755 lab_management.db
🔮 Roadmap
Version 2.0 (Coming Soon)
- [ ] Multi-tenant support untuk multiple institutions
- [ ] Calendar integration (Google Calendar, Outlook)
- [ ] QR Code check-in/check-out
- [ ] Equipment reservation with barcode scanning
- [ ] Advanced reporting dengan charts dan graphs
- [ ] API endpoints untuk mobile app integration
Version 2.1
- [ ] Room booking untuk meeting rooms
- [ ] Resource management (chemicals, consumables)
- [ ] Maintenance scheduling otomatis
- [ ] User feedback system
- [ ] Multi-language support
🤝 Contributing
- Fork repository
- Create feature branch (
git checkout -b feature/AmazingFeature
) - Commit changes (
git commit -m 'Add some AmazingFeature'
) - Push to branch (
git push origin feature/AmazingFeature
) - Open Pull Request
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
💬 Support
- 📧 Email: [email protected]
- 💬 WhatsApp: +62 xxx-xxxx-xxxx
- 🐛 Issues: GitHub Issues
- 📖 Documentation: Wiki
🙏 Acknowledgments
- Flask team untuk web framework yang excellent
- TailwindCSS untuk CSS framework yang powerfull
- Font Awesome untuk icon yang comprehensive
- WhatsApp Business API untuk notification integration
🔬 Lab Management System - Making laboratory management simple, efficient, and transparent.
Developed with ❤️ for educational institutions