Arsitektur
Gambaran Sistem
iOS app / agent client -> api.<domain> -> API Gateway -> Lambda backend -> Postgres
Web app -> app.<domain> -> CloudFront -> SPA
Browser and agent auth -> auth.<domain> -> API Gateway -> Auth Lambda -> Cognito
Apex fallback -> <domain> -> CloudFront redirect -> app.<domain>
Prinsip
- Domain publik terpisah untuk
app,api, danauth - Postgres adalah sumber kebenaran
- Klien iOS bersifat offline-first dengan SQLite lokal plus sinkronisasi
- Aplikasi web, aplikasi iOS, dan antarmuka agen eksternal memakai model ruang kerja yang sama
- Agen eksternal memulai dari
GET https://api.nibomo.com/v1/
Klien yang Didukung
- Aplikasi web di
app.nibomo.com - Aplikasi iOS di repositori utama dengan penyimpanan SQLite lokal
- Aplikasi Android di Google Play
- Klien agen eksternal melalui discovery, bootstrap OTP, dan
Authorization: ApiKey
Model Data
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Alur Data
Web
- Peramban masuk melalui
auth.<domain>. - Aplikasi web memuat data ruang kerja dari
api.<domain>. - Permintaan obrolan AI melewati
/chat/local-turn. - Tinjauan yang dikirim memperbarui status penjadwal pada saat penulisan.
iOS
- Aplikasi iOS menulis ke SQLite lokal terlebih dahulu.
- Perubahan lokal dimasukkan ke antrean outbox.
- Sinkronisasi mengunggah perubahan melalui
/v1/workspaces/{workspaceId}/sync/push. - Sinkronisasi mengunduh pembaruan jarak jauh melalui
/v1/workspaces/{workspaceId}/sync/pull. - Database lokal menerapkan perubahan dan memajukan kursor sinkronisasi.
Agen Eksternal
- Agen memulai dengan
GET /v1/. - Bootstrap OTP berjalan di
auth.<domain>. - Agen menerima kunci API berumur panjang.
- Agen memuat
/v1/agent/me, menampilkan daftar ruang kerja, memilih salah satu jika perlu, lalu memakai/v1/agent/sql/querydan/v1/agent/sql/execute.
Penjadwalan
Nibomo memakai FSRS sebagai penjadwal tinjauan.
Catatan implementasi:
- backend dan iOS memelihara implementasi FSRS yang saling mencerminkan
- aplikasi web mencerminkan kontrak data penjadwalan, tetapi tidak menyertakan salinan penjadwal ketiga
- pengaturan penjadwal tingkat ruang kerja mencakup retensi yang diinginkan, langkah belajar, langkah belajar ulang, interval maksimum, dan fuzz
- stempel waktu tinjauan yang sebenarnya berasal dari
reviewedAtClient
Untuk kontrak yang lebih rinci, lihat logika penjadwalan FSRS di repositori utama.
Autentikasi
- OTP email melalui Cognito
- Cookie sesi peramban dengan domain bersama untuk aplikasi web terkelola
- Bootstrap OTP agen di
auth.<domain>yang menghasilkan ApiKey berumur panjang AUTH_MODE=noneuntuk pengembangan lokalAUTH_MODE=cognitountuk autentikasi yang menyerupai produksi
Susunan Deployment
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + backend Lambdaauth.<domain>-> API Gateway + layanan autentikasi Lambda- Postgres di AWS RDS
Domain apex dapat tetap dipakai untuk situs pemasaran terpisah. Jika domain itu belum dipakai saat bootstrap, infrastruktur dapat mengalihkannya sementara ke app.<domain>.