
Memo'nun nasıl kurulacağı, derleneceği ve katkıda bulunulacağı.
| Bağımlılık | Sürüm | Notlar |
|---|---|---|
| Go | 1.26+ | Backend |
| Flutter | 3.10+ | Masaüstü + mobil ön yüz |
| C++ derleyici | GCC veya Clang | CGO (SQLite) için zorunlu |
| Node.js | 18+ | memo-web (bu dokümantasyon sitesi) için |
# Depoyu klonlayın
git clone https://github.com/BugraAkdemir/memo.git
cd memo
# Go bağımlılıklarını yükleyin
go mod download
# Backend'i derleyin ve çalıştırın
CGO_ENABLED=1 go run . --port 8090
# Ön yüz (başka bir terminalde)
cd frontend
flutter pub get
flutter run -d linux
| Dosya | Amaç |
|---|---|
main.go |
Backend giriş noktası — bayrak ayrıştırma, sinyal yönetimi, kapatma |
internal/app/app.go |
Merkezi orkestratör — tüm alt sistemleri birbirine bağlar |
frontend/lib/main.dart |
Flutter giriş noktası — Material uygulama, yönlendirme, sağlayıcılar |
config/config.yaml |
Varsayılan yapılandırma — tüm bölümler yapılandırma referansında belgelenmiştir |
memo/
├── main.go # Backend giriş noktası
├── internal/
│ ├── app/ # Merkezi orkestratör (sohbet, LLM, bellek, ajanlar)
│ ├── webserver/ # HTTP sunucusu (~90 uç nokta)
│ ├── provider/ # Harici LLM sağlayıcıları + router
│ ├── memory/ # RAG vektör deposu (SQLite + sqlite-vec)
│ ├── agent/ # Araç çağırma korumalı alanı
│ ├── orchestra/ # Çok modelli iş akışları
│ ├── cloudsync/ # Google Drive uçtan uca yedekleme
│ ├── sessions/ # Sohbet kalıcılığı
│ ├── whatsapp/ # WhatsApp köprüsü
│ ├── calendar/ # Takvim ve hatırlatıcılar
│ └── identity/ # Sistem promptu / persona
├── frontend/
│ └── lib/
│ ├── main.dart # Uygulama giriş noktası
│ ├── providers/ # Riverpod durum yönetimi
│ ├── widgets/ # UI bileşenleri
│ │ └── settings/tabs/ # Ayarlar sekme sayfaları
│ └── core/
│ └── api_client.dart # Backend API için Dio HTTP istemcisi
└── config/
└── config.yaml # Varsayılan yapılandırma
Her commit öncesinde çalıştırın:
# Backend testleri
go test ./... -race -count=1 -timeout 60s
go build ./...
# Ön yüz analizi
cd frontend && flutter analyze
cd frontend && flutter test
Her main dalına push'ta GitHub Actions iş hatları:
.tar.gz olarak arşivle.zip olarak arşivle.zip olarak arşivleYapıtlar Actions sekmesinden indirilebilir.
http.ServeMux, harici router yok. Eşzamanlılık için sync.RWMutex. context.Context asla struct alanlarında saklanmaz.AsyncNotifierProvider. Async callback'lerde setState öncesi her zaman mounted kontrolü ekleyin.feat(memory):, fix(provider):, docs:, vb.)