Skip to content
danieldtyaPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

InGet

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/.


Latar Belakang

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. Pengingat penting dikirim sebagai pesan chat, dan agenda lengkap bisa dilihat cukup dengan membuka satu chat.

Tujuan

  • 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.
  • Menyajikan agenda hari ini dan besok dalam format yang mudah dibaca di chat.

Bukan Tujuan (untuk saat ini)

  • Alarm yang berbunyi seperti alarm HP (ADR-0002).
  • Input bahasa alami berbasis LLM (ADR-0006).
  • Tombol konfirmasi "Sudah" dan pengiriman ulang.
  • Dashboard web desktop (direncanakan di fase berikutnya).
  • Dukungan banyak pengguna. Bot hanya melayani satu nomor pemilik (ADR-0018).

Konsep Inti

Frekuensi

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).

Mode

Mode Terkirim otomatis? Muncul di mana
Notifikasi Ya, di setiap H-x Pesan tersendiri, dan juga di /agenda
Rekap Tidak pernah Hanya saat meminta /agenda

Mode Rekap cocok untuk kegiatan yang penting tetapi tidak mendesak (ADR-0010).

Pengingat H-x

Pengingat bermode Notifikasi bisa memiliki lebih dari satu H-x, misalnya 7,2,0 untuk H-7, H-2, dan hari H (ADR-0011).

  • Semua pesan dikirim jam 00.05 waktu lokal, termasuk H-0.
  • Default: 7,2,0 untuk sekali, bulanan, bulanan-hari, tahunan, dan setiap N tahun. 0 untuk harian dan mingguan.
  • H-x yang tanggalnya sudah lewat saat pengingat dibuat akan dilewati.
  • Pengingat yang gagal terkirim karena gangguan server tetap dikirim, atau dikumpulkan dalam satu pesan "Pengingat yang terlewat" jika hari H-nya sudah lewat (ADR-0014).

Agenda dan Hitung Mundur

/agenda menampilkan kegiatan hari ini, satu bubble per kegiatan, diurutkan menurut jam (ADR-0015). /agenda tomorrow menampilkan kegiatan besok.

Di bawahnya terdapat bagian hitung mundur: kegiatan dalam 7 hari ke depan, misalnya "Pajak motor: 5 hari lagi (25 Oktober)". Bagian ini berlaku untuk semua mode dan semua frekuensi kecuali harian dan mingguan, sehingga pengingat bermode Rekap tetap terlihat sebelum hari H (ADR-0012).

Pengecualian dan Arsip

  • Abaikan satu kemunculan pengingat berulang, atau ubah satu kemunculan saja tanpa memengaruhi yang lain (ADR-0016).
  • Pengingat yang selesai masuk arsip, dapat dilihat lewat /archive dan diaktifkan kembali dengan mengubah tanggalnya. Arsip dihapus otomatis setelah 30 hari (ADR-0017).

Zona Waktu

Default WIB, dapat diubah ke WITA atau WIT lewat /set zone (ADR-0013).


Perintah Bot (draf)

Nama perintah dan kata kunci memakai bahasa Inggris (ADR-0023). Sintaks di bawah masih draf dan akan difinalkan sebelum implementasi.

Perintah Fungsi Contoh
/add Menambah pengingat /add 25/10/2026 08:00 | Bayar kartu kredit | monthly | notify | 7,2,0 | until 25/09/2027
/list Melihat semua pengingat aktif beserta ID-nya /list
/agenda Melihat kegiatan hari ini dan hitung mundur /agenda, /agenda tomorrow
/edit Mengubah pengingat (semua kemunculan) /edit 12 time=09:00
/edit + tanggal Mengubah satu kemunculan saja /edit 12 25/11/2026 date=26/11/2026
/skip Melewati satu kemunculan /skip 12 25/11/2026
/delete Menghapus pengingat /delete 12
/archive Melihat pengingat yang selesai (30 hari terakhir) /archive
/set Mengubah zona waktu /set zone WITA
/help Menampilkan daftar perintah /help

Urutan parameter /add: tanggal [jam] | deskripsi | frekuensi | [mode] | [H-x] | [until tanggal]. Parameter 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).


Ruang Lingkup dan Tahapan

Fase Isi
1. MVP Semua perintah di atas, tujuh jenis frekuensi, dua mode, H-x, 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

Rencana Teknologi

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

Pertanyaan yang Masih Terbuka

Sebelum menulis kode: mode default saat tidak disebutkan, bahasa balasan bot, angka batas input, sintaks perintah final (termasuk format tanggal), isi bubble notifikasi dan template WhatsApp, bentuk /agenda saat kosong, pesan kesalahan dan isi /help, konfirmasi sebelum menghapus, serta cara mengirim beberapa notifikasi sekaligus.

Sebelum deploy: hosting, mekanisme pemicu setiap jam, 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.

Struktur Repositori

InGet/
├── README.md
└── docs/
    ├── kebutuhan.md  # Dokumen kebutuhan (functional dan non-functional requirements)
    ├── adr/          # Catatan keputusan desain (Architecture Decision Record)
    └── diagrams/     # Use case, activity, class diagram, ERD (menyusul)

Dokumentasi Keputusan

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors