Mimari
Sistem Özeti
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>
İlkeler
app,apiveauthiçin ayrı, herkese açık alan adları- Tek doğruluk kaynağı Postgres'tir
- iOS istemcisi, yerel SQLite ve senkronizasyonla çevrimdışı önceliklidir
- Web uygulaması, iOS uygulaması ve harici agent arayüzü aynı çalışma alanı modelini paylaşır
- Harici agent'lar
GET https://api.nibomo.com/v1/ile başlar
Desteklenen İstemciler
app.nibomo.comüzerinde web uygulaması- Ana depoda, yerel SQLite depolamalı iOS uygulaması
- Google Play'de Android uygulaması
- Keşif, OTP ile ilk kurulum ve
Authorization: ApiKeyüzerinden harici agent istemcileri
Veri Modeli
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Veri Akışı
Web
- Tarayıcı
auth.<domain>üzerinden giriş yapar. - Web uygulaması çalışma alanı verilerini
api.<domain>adresinden yükler. - AI sohbet istekleri
/chat/local-turnüzerinden geçer. - Gönderilen tekrarlar, yazma sırasında zamanlayıcı durumunu günceller.
iOS
- iOS uygulaması önce yerel olarak SQLite'a yazar.
- Yerel değişiklikler bir giden kutusunda sıraya alınır.
- Senkronizasyon, değişiklikleri
/v1/workspaces/{workspaceId}/sync/pushüzerinden yükler. - Senkronizasyon, uzak güncellemeleri
/v1/workspaces/{workspaceId}/sync/pullüzerinden indirir. - Yerel veritabanı değişiklikleri uygular ve senkronizasyon imlecini ilerletir.
Harici Agent'lar
- Agent'lar
GET /v1/ile başlar. - OTP ile ilk kurulum
auth.<domain>üzerinde yürür. - Agent uzun ömürlü bir API anahtarı alır.
- Agent
/v1/agent/meadresini yükler, çalışma alanlarını listeler, gerekirse birini seçer ve ardından/v1/agent/sql/queryile/v1/agent/sql/executeadreslerini kullanır.
Zamanlama
Nibomo, tekrar zamanlayıcısı olarak FSRS kullanır.
Uygulama notları:
- backend ve iOS'ta birbirinin aynısı olan FSRS uygulamaları bulunur
- web uygulaması zamanlama veri sözleşmesini birebir yansıtır, ancak üçüncü bir zamanlayıcı kopyası içermez
- çalışma alanı düzeyindeki zamanlayıcı ayarları hedeflenen hatırlama oranını, öğrenme adımlarını, yeniden öğrenme adımlarını, en uzun aralığı ve rastgele sapmayı (fuzz) içerir
- gerçek tekrar zaman damgası
reviewedAtClientalanından gelir
Ayrıntılı sözleşme için ana depodaki FSRS zamanlama mantığına bakın.
Kimlik Doğrulama
- Cognito üzerinden e-posta OTP
- Barındırılan web uygulaması için paylaşılan alan adında tarayıcı oturum çerezleri
auth.<domain>üzerinde, agent'lar için uzun ömürlü ApiKey üreten OTP ile ilk kurulum- Yerel geliştirme için
AUTH_MODE=none - Üretime benzer kimlik doğrulama için
AUTH_MODE=cognito
Dağıtım Yapısı
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda backendauth.<domain>-> API Gateway + Lambda kimlik doğrulama hizmeti- AWS RDS'te Postgres
Kök alan adı ayrı bir pazarlama sitesinde kalabilir. İlk kurulum sırasında boştaysa altyapı onu geçici olarak app.<domain> adresine yönlendirebilir.