TeamMate adalah sistem manajemen absensi dan shift berbasis web yang komprehensif yang dirancang untuk tim dan organisasi. Aplikasi ini menyediakan kolaborasi tim real-time, penjadwalan shift, pelacakan kehadiran, manajemen lembur, dan permintaan cuti - semua dalam antarmuka yang modern dan responsif.
Permasalahan:
Mengelola absensi tim, shift, dan jadwal secara manual memakan waktu dan rentan kesalahan. Organisasi membutuhkan sistem terpusat untuk melacak kehadiran karyawan, mengelola jadwal shift yang kompleks, menangani lembur dan permintaan cuti secara efisien, serta menyediakan kontrol akses berbasis peran.
Fitur Utama:
- Autentikasi & Manajemen User: Google Sign-In dengan Firebase, pembuatan profil otomatis, persistensi sesi, dan kontrol akses berbasis peran (Owner, Admin, Member).
- Manajemen Tim: Buat dan kelola beberapa tim, avatar tim, arsipkan/aktifkan kembali tim, dan routing tim berbasis URL dengan slug.
- Manajemen Anggota: Tambah anggota via email invitation, edit peran, operasi bulk, import/export (CSV, Excel, PDF), dan kemampuan filter/sort.
- Manajemen Template Shift: Buat template shift kustom dengan kode warna, tentukan jam shift, dan assign shift ke anggota tim.
- Manajemen Jadwal: Tampilan kalender grid bulanan (seperti Excel), drag-and-drop assignment shift, update real-time, dan export ke Excel/PDF.
- Pelacakan Kehadiran: Fungsi Clock In/Out, integrasi deteksi wajah (UI siap), riwayat kehadiran, pelacakan terlambat/pulang cepat, dan manajemen hari libur.
- Lembur & Cuti: Request dan approve lembur/cuti dengan pelacakan status, beberapa kategori cuti, dan pelacakan saldo.
Tech Stack:
- Frontend: Kotlin/JS, kotlinx-html DSL, Kotlin Wrappers, Vanilla CSS
- Backend: Firebase Authentication, Cloud Firestore, Firebase Storage
- Build Tools: Gradle (Kotlin DSL), Webpack
- Testing: Playwright untuk E2E testing
- Deployment: Vercel
Arsitektur:
Proyek ini mengikuti arsitektur berbasis fitur yang bersih dengan Domain-Driven Design (DDD), Repository Pattern, manajemen state terpusat, dan strategi caching yang mengurangi pembacaan Firestore hingga ~80%.
Performa & Keamanan:
- Aturan keamanan Firestore yang komprehensif dengan izin berbasis peran
- Caching in-memory dengan TTL (default 5 menit)
- Optimasi ukuran bundle dengan Webpack tree-shaking
- Initial load < 2 detik pada koneksi 3G