MemoDokümantasyon
TR

Geliştirici Rehberi

Memo'nun nasıl kurulacağı, derleneceği ve katkıda bulunulacağı.

Gereksinimler

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

Kurulum

# 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

Önemli Dosyalar

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

Proje Yapısı

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

Test Protokolü

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

CI/CD

Her main dalına push'ta GitHub Actions iş hatları:

  • Linux — Go build, Flutter build linux, .tar.gz olarak arşivle
  • Windows — Go build, Flutter build windows, .zip olarak arşivle
  • macOS — Go build, Flutter build macos, .zip olarak arşivle

Yapıtlar Actions sekmesinden indirilebilir.

Kod Standartları

  • Backend: Go standart kütüphanesi http.ServeMux, harici router yok. Eşzamanlılık için sync.RWMutex. context.Context asla struct alanlarında saklanmaz.
  • Ön yüz: Durum için Riverpod AsyncNotifierProvider. Async callback'lerde setState öncesi her zaman mounted kontrolü ekleyin.
  • Commit mesajları: Conventional Commits (feat(memory):, fix(provider):, docs:, vb.)
  • Yorum yok: Kod kendi kendini belgelemelidir. Yorumlar yalnızca açık olmayan kararlar için ayrılmıştır.