Bot WhatsApp pengingat pribadi untuk kegiatan sekali, harian, mingguan, bulanan, tahunan, hingga beberapa tahun sekali.
Status: tahap desain. Kode belum ditulis. Semua keputusan desain dicatat di
docs/adr/.
Aplikasi kalender dan to-do list bekerja dengan pola pull: pengguna harus membuka aplikasinya untuk melihat apa yang perlu dilakukan. Bagi saya, pola ini gagal. Jadwal yang sudah tercatat di kalender tetap terlewat, karena saya jarang membuka aplikasinya dan notifikasinya mudah terabaikan.
Satu-satunya pengingat yang terbukti berhasil adalah alarm, karena alarm bekerja dengan pola push: ia datang sendiri tanpa perlu membuka aplikasi apa pun.
InGet menerapkan pola push melalui satu-satunya aplikasi yang notifikasinya selalu saya perhatikan: WhatsApp. Rekap kegiatan dan pengingat penting dikirim sebagai pesan chat, sehingga agenda bisa diketahui cukup dari notifikasi.
- Mengirim pengingat ke WhatsApp tanpa pengguna perlu membuka aplikasi lain.
- Mendukung kegiatan berulang dengan berbagai frekuensi, termasuk kegiatan yang jarang terjadi (pajak kendaraan, perpanjangan SIM, ulang tahun).
- Memberi waktu persiapan sebelum hari H melalui pengingat H-x.
- Mengirim rekap kegiatan setiap hari, dan mengingatkan beberapa menit sebelum kegiatan berjam.
- Menyajikan agenda hari ini dan besok sesuai permintaan, sebagai alat untuk mengatur waktu.
- Alarm yang berbunyi seperti alarm HP (ADR-0002).
- Input bahasa alami berbasis LLM (ADR-0025).
- Tombol konfirmasi "Sudah" dan pengiriman ulang.
- Dashboard web desktop (direncanakan di fase berikutnya).
- Dukungan banyak pengguna. Bot hanya melayani satu nomor pemilik (ADR-0018).
Catatan: contoh di bawah hanyalah ilustrasi sederhana. Setiap pengingat dapat memiliki jam yang ditetapkan pengguna (opsional). Dengan begitu, agenda satu hari tersusun menurut jam dan dapat dipakai untuk mengatur waktu, termasuk pengingat dari frekuensi lain yang kebetulan jatuh di hari yang sama.
| Frekuensi | Contoh |
|---|---|
| Sekali | Janji dokter |
| Harian | Minum vitamin jam 07.00, belajar jam 19.00 |
| Mingguan | Olahraga setiap Selasa |
| Bulanan | Bayar tagihan kartu kredit setiap tanggal 25 |
| Bulanan-hari | Rapat komunitas setiap Jumat pertama (ADR-0019) |
| Tahunan | Ulang tahun, pajak kendaraan tahunan |
| Setiap N tahun | Perpanjangan SIM (5 tahun) |
Pengingat berulang boleh memiliki tanggal akhir, misalnya cicilan yang berakhir bulan tertentu (ADR-0017).
| Kelompok | Jenis | Label | Kapan |
|---|---|---|---|
| Otomatis | Rekap harian | 📋 Rekap hari ini | 00.05 |
| H-x | 🔔 N hari lagi | 00.05 | |
| Menjelang waktu | ⏰ N menit lagi | N menit sebelum jam kegiatan | |
| Pengingat terlewat | Saat server pulih dari gangguan | ||
| Balasan perintah | Agenda | 📅 Agenda | Saat mengetik /agenda |
| Hitung mundur | ⏳ Hitung mundur | Di akhir balasan /agenda |
Setiap bubble diawali labelnya, sehingga pesan otomatis dapat dibedakan dari balasan perintah (ADR-0027).
Setiap hari pukul 00.05, bot mengirim rekap harian (ADR-0024, ADR-0027):
- Bubble H-x (jika ada).
- Satu bubble untuk setiap kegiatan hari itu: kegiatan tanpa jam lebih dulu dengan keterangan "Sepanjang hari", lalu kegiatan berjam secara menaik.
- Jika tidak ada kegiatan, satu bubble "Tidak ada kegiatan hari ini". Jadi, kalau suatu pagi tidak ada pesan sama sekali, bot sedang bermasalah.
| Mode | Rekap harian di hari H | Pesan H-x sebelum hari H |
|---|---|---|
| Notifikasi | Ya | Ya |
| Rekap | Ya | Tidak |
Mode Notifikasi untuk kegiatan yang butuh persiapan (tagihan, pajak, ulang tahun). Mode Rekap untuk kegiatan yang tidak butuh persiapan. Jika mode tidak dipilih, mode default mengikuti frekuensi: Notifikasi untuk sekali, bulanan, bulanan-hari, tahunan, dan setiap N tahun, serta Rekap untuk harian dan mingguan.
Pengingat bermode Notifikasi bisa memiliki hingga lima H-x, misalnya 7,2 untuk 7 dan 2 hari sebelum hari H.
- Nilai H-x antara 1 dan 365. Hari H sendiri sudah tercakup oleh rekap harian.
- Default:
7,2. - Bubble H-x memuat sisa hari, hari dan tanggal hari H, jam (jika ada), frekuensi, dan ID.
- H-x yang tanggalnya sudah lewat saat pengingat dibuat akan dilewati.
Atribut opsional untuk pengingat yang punya jam, apa pun mode dan frekuensinya: bot mengirim pesan 5, 10, 15, 30, atau 60 menit sebelum jam kegiatan (ADR-0026). Berguna untuk kegiatan yang baru dicatat di hari yang sama, misalnya "Ke dokter pukul 18.00" yang dicatat pukul 11.00.
Status setiap pesan dicatat terpisah. Jika server bermasalah, pesan yang tertunda tetap dikirim selama hari H (atau jam kegiatan, untuk pengingat menjelang waktu) belum lewat. Selebihnya dikumpulkan dalam satu bubble "Terlewat", bukan dibuang (ADR-0026).
/agenda menampilkan rencana hari ini, sebagai alat untuk mengatur waktu (ADR-0015, ADR-0027). /agenda tomorrow menampilkan rencana besok.
- Satu bubble untuk setiap kegiatan: "Sepanjang hari" lebih dulu, lalu kegiatan berjam secara menaik.
- Satu bubble hitung mundur berisi daftar kegiatan dalam 7 hari ke depan, misalnya "Pajak motor: 5 hari lagi, Minggu 25 Oktober". Berlaku untuk semua mode dan semua frekuensi kecuali harian dan mingguan (ADR-0012).
Hitung mundur hanya muncul di /agenda, tidak pernah dikirim otomatis.
- Abaikan satu kemunculan pengingat berulang, atau ubah satu kemunculan saja tanpa memengaruhi yang lain (ADR-0016).
- Pengingat yang selesai masuk arsip, dapat dilihat lewat
/archivedan diaktifkan kembali dengan mengubah tanggalnya. Arsip dihapus otomatis setelah 30 hari (ADR-0017).
Default WIB, dapat diubah ke WITA atau WIT lewat /set zone (ADR-0013).
Nama perintah dan kata kunci memakai bahasa Inggris, balasan bot memakai bahasa Indonesia (ADR-0023, ADR-0025). Teks di bawah masih draf.
Ketik perintahnya saja, lalu jawab pertanyaan bot satu per satu. Pilihan tetap disajikan sebagai tombol atau daftar (ADR-0028).
Kamu: /add Bot: Apa nama kegiatannya? Kamu: Bayar kartu kredit Bot: Tanggal berapa? (DD/MM/YYYY) Kamu: 25/10/2026 Bot: Jam berapa?
[Tanpa jam]Kamu: 08:00 Bot: Seberapa sering? (daftar: Sekali, Harian, Mingguan, Bulanan, ...) Bot: Mode?[Notifikasi][Rekap]Bot: Diingatkan berapa hari sebelumnya?[Pakai default 7,2]Bot: Sampai kapan?[Tanpa tanggal akhir]Bot: Ingatkan menjelang jamnya? (daftar: Tidak perlu, 5, 10, 15, 30, 60 menit) Bot: (ringkasan)[Simpan][Batal]
Ketik /cancel kapan saja untuk membatalkan percakapan.
| Perintah | Fungsi |
|---|---|
/add |
Menambah pengingat |
/list |
Melihat semua pengingat aktif beserta ID-nya |
/agenda, /agenda tomorrow |
Melihat rencana hari ini atau besok, beserta hitung mundur |
/edit |
Mengubah pengingat (semua kemunculan, atau satu kemunculan saja) |
/skip |
Melewati satu kemunculan |
/delete |
Menghapus pengingat |
/archive |
Melihat pengingat yang selesai (30 hari terakhir) |
/set zone |
Mengubah zona waktu (WIB, WITA, WIT) |
/cancel |
Membatalkan percakapan yang sedang berjalan |
/help |
Menampilkan daftar perintah |
Untuk yang sudah hafal, semua isian bisa ditulis dalam satu baris tanpa tanya jawab.
| Perintah | Contoh |
|---|---|
/add |
/add 25/10/2026 08:00 | Bayar kartu kredit | monthly | notify | 7,2 | until 25/09/2027 | before 15 |
/edit (semua kemunculan) |
/edit 12 time=09:00 |
/edit (satu kemunculan) |
/edit 12 25/11/2026 date=26/11/2026 |
/skip |
/skip 12 25/11/2026 |
/delete |
/delete 12 |
/set zone |
/set zone WITA |
Urutan isian /add: tanggal [jam] | deskripsi | frekuensi | [mode] | [H-x] | [until tanggal] | [before menit]. Isian dalam kurung siku bersifat opsional.
| Kata kunci frekuensi | Arti |
|---|---|
once |
Sekali |
daily |
Harian |
weekly |
Mingguan |
monthly |
Bulanan |
monthly-weekday |
Bulanan berdasarkan urutan hari |
yearly |
Tahunan |
yearly:N |
Setiap N tahun, misalnya yearly:5 |
Kata kunci mode: notify (Notifikasi) dan recap (Rekap). Pilihan before: 5, 10, 15, 30, 60.
| Fase | Isi |
|---|---|
| 1. MVP | Percakapan terpandu dan perintah satu baris, tujuh jenis frekuensi, dua mode, rekap harian, H-x, pengingat menjelang waktu, hitung mundur, arsip, pengecualian kemunculan, zona waktu |
| 2. Input formulir | WhatsApp Flows untuk menambah dan mengubah pengingat |
| 3. Dashboard | Aplikasi web desktop untuk melihat dan mengelola pengingat |
| 4. Pengembangan lanjutan | Mingguan di beberapa hari sekaligus, /agenda minggu, balas bubble untuk mengubah atau menghapus, input bahasa alami, eskalasi alarm |
Masih berstatus usulan (ADR-0009). Pengembangan dilakukan di laptop terlebih dahulu. Hosting produksi diputuskan setelah MVP berjalan.
| Komponen | Usulan |
|---|---|
| Saluran | WhatsApp Cloud API (resmi) |
| Backend dan webhook | Python, FastAPI |
| Database | PostgreSQL (Supabase) |
| Aturan pengulangan | Format RRULE (RFC 5545), library python-dateutil |
| Dashboard (fase 3) | React, Vite, TypeScript |
Sebelum menulis kode: format tanggal final, teks setiap pertanyaan dan bubble, template WhatsApp, isi /help, pesan kesalahan, batas waktu percakapan terpandu, dan konfirmasi sebelum menghapus.
Sebelum deploy: hosting, mekanisme pemicu setiap 5 menit, peringatan saat bot gagal, backup data, penyimpanan token, dan setup akun Meta.
Manajemen proyek: definisi "MVP selesai", kapasitas waktu per minggu, dan bentuk hasil akhir portofolio.
InGet/
├── README.md
└── docs/
├── kebutuhan.md # Dokumen kebutuhan (functional dan non-functional requirements)
├── adr/ # Catatan keputusan desain (Architecture Decision Record)
└── diagrams/ # Use case diagram (activity, class diagram, dan ERD menyusul)
Setiap keputusan desain penting dicatat sebagai ADR di docs/adr/, lengkap dengan konteks, alasan, dan konsekuensinya. Mulailah dari indeks ADR.
Ringkasan semua kebutuhan sistem untuk fase MVP ada di dokumen kebutuhan, dan gambaran aktor serta fitur ada di use case diagram.