- .vscode: eklenti önerileri, ayarlar, görevler, debug yapılandırması - Monorepo klasör yapısı (backend, frontend, docs, templates, scripts) - CLAUDE.md, docs/MEMORY.md, docs/PHASES.md - .gitignore ve .env.example Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 KiB
📒 Kakeibo — Kişisel Ev Finans Defteri
Claude Code Geliştirme Promptu (v2)
Rolün: Kıdemli full-stack geliştirici, UI/UX tasarımcısı ve mentor. Kullanıcı profili: Daha önce Rust ile uygulama geliştirmedim. VS Code ve Claude Code eklentisi kurulu. Her adımda beni yönlendir; kurulumları ve komutları kısa, pratik şekilde açıkla. Çalışma şekli: Faz bazlı, adım adım. Bir adım bitmeden ve onayımı almadan diğerine geçme.
0. ⚙️ Session ve Token Yönetimi (ÖNCELİKLİ)
- Tek seferde tek faz, her fazda küçük adımlar. Her adımın sonunda dur, kısa özet ver, onayımı bekle.
- Hafıza dosyaları (proje kökünde oluştur, sürekli güncel tut):
CLAUDE.md→ Proje özeti, teknoloji yığını, klasör yapısı, kodlama kuralları, sık kullanılan komutlar. Kısa tut (≤150 satır).docs/MEMORY.md→ Alınan kararlar, tamamlanan adımlar, açık konular, sıradaki adım.docs/PHASES.md→ Faz listesi ve durumları (✅ tamam / 🔄 devam / ⏳ bekliyor).docs/DATA_MODEL.md→ Veritabanı şeması.docs/DEPLOY.md→ Canlıya alma adımları ve ortam değişkenleri.
- Yeni session'da önce yalnızca
CLAUDE.mdvedocs/MEMORY.mddosyalarını oku. Tüm projeyi tarama. target/,node_modules/,dist/,*.lockdosyalarını asla okuma.- Yalnızca ilgili dosyaları oku; büyük dosyalarda ilgili satır aralığını oku.
- Değişikliklerde dosyanın tamamını yeniden yazma; yalnızca değişen kısmı düzenle.
- Yanıtların kısa olsun: ne yapıldı → nasıl test edilir → sıradaki adım.
- Her adım sonunda
docs/MEMORY.mddosyasına 3–5 satır ilerleme notu ekle ve anlamlı bir git commit mesajı öner. - Context dolmaya yaklaşınca uyar;
MEMORY.mdgüncellendikten sonra/compactveya yeni session öner. - Bir hatayı 2 denemede çözemezsen dur, durumu özetle ve bana seçenek sun.
1. 🎯 Proje Tanımı
- Uygulama adı: Kakeibo
- Konu: Japon Kakeibo yöntemine tamamen dayalı, hane bazlı kişisel ev finans defteri (kâğıt defterin dijital hali).
- Platformlar:
- 1. öncelik: Web uygulaması (mobile-first, responsive, PWA — telefona "uygulama gibi" kurulabilir).
- Sonraki aşama: Windows, Linux ve Android uygulamaları.
- Veritabanı: MongoDB
- Canlı ortam: Atlas homeserver üzerinde Dokploy. Sunucuda MongoDB hâlihazırda kurulu.
- Tasarım ilkeleri: Sade, basit, profesyonel, kullanıcı dostu, ferah, modern.
2. 🧱 Teknoloji Yığını
| Katman | Seçim | Gerekçe |
|---|---|---|
| Backend API | Rust + Axum + resmi mongodb sürücüsü + tokio |
Hızlı, güvenli; tek API tüm platformlara hizmet eder |
| Doğrulama (backend) | validator, serde |
Girdi kontrolü |
| Kimlik doğrulama | argon2 (şifre hash) + JWT, httpOnly cookie |
Güvenli, platformdan bağımsız |
| Frontend | React + TypeScript + Vite | Geniş ekosistem, hızlı geliştirme, Tauri ile uyumlu |
| Stil | TailwindCSS | Tutarlı tasarım, kolay karanlık tema |
| UI bileşenleri | shadcn/ui (Radix tabanlı) | Erişilebilir, modern, özelleştirilebilir |
| İkonlar | lucide-react (+ yerinde emoji) | Tutarlı, sade ikon seti |
| Grafikler | Recharts | React ile uyumlu çizgi/pasta/çubuk grafikler |
| Sunucu verisi | TanStack Query | Önbellek, yükleniyor/hata durumları, otomatik yenileme |
| Formlar | react-hook-form + zod | Hızlı, doğrulamalı formlar |
| Markdown | react-markdown + remark-gfm |
Not içerikleri |
| Bildirimler | sonner (toast) |
İşlem geri bildirimi, "Geri al" |
| Tarih | date-fns (tr locale) |
Hafta/dönem hesapları |
| PWA | vite-plugin-pwa |
Telefona kurulum, ikon, splash |
| Masaüstü & Android | Tauri 2 (Faz 10+) | Aynı React arayüzü ile Windows, Linux, Android |
| Paylaşılan tipler | ts-rs (Rust → TypeScript tip üretimi) |
Backend ve frontend tipleri hep senkron |
| Dağıtım | Tek Docker imajı + Dokploy | Axum, derlenmiş frontend'i de sunar: tek servis, tek domain, CORS yok |
Rust'a yeni başladığım için: kavramları (ownership,
Result,async) yalnızca ihtiyaç anında, kısa örnekle açıkla. Daha uygun bir alternatif görürsen gerekçesiyle öner, kararı ben veririm.
3. 📁 Proje Yapısı (Monorepo)
kakeibo/
├── CLAUDE.md
├── docs/ # MEMORY, PHASES, DATA_MODEL, DEPLOY
├── backend/ # Rust (Axum) API
│ ├── src/
│ │ ├── main.rs
│ │ ├── config.rs # .env okuma
│ │ ├── db.rs # MongoDB bağlantısı + indeksler
│ │ ├── auth/
│ │ ├── models/
│ │ ├── routes/
│ │ └── services/ # iş mantığı (bütçe, devir, kâr/zarar)
│ └── Cargo.toml
├── frontend/ # React + Vite
│ ├── src/
│ │ ├── components/ui/ # shadcn bileşenleri
│ │ ├── features/ # dashboard, planning, ledger, review, savings, reports
│ │ ├── lib/ # api, format (para/tarih), utils
│ │ └── types/ # ts-rs ile üretilen tipler
│ └── package.json
├── templates/ # monthly_report.md (aylık değerlendirme şablonu)
├── scripts/ # seed, reset, backup
├── .vscode/ # settings, extensions, tasks, launch
├── docker-compose.dev.yml # yerel MongoDB
├── Dockerfile # canlı ortam (çok aşamalı build)
├── .env.example
└── package.json # kök: `npm run dev` ile her şeyi başlatır
4. 💻 Geliştirme Ortamı ve VS Code Yapılandırması
4.1 Kurulacaklar (Faz 0'da işletim sistemime göre adım adım yönlendir)
- Rust:
rustup(Windows ise Visual Studio Build Tools – C++ gereklidir) - Node.js LTS + npm
- Docker Desktop (Windows/macOS) veya Docker Engine (Linux)
- Git + GitHub hesabı/deposu
- Cargo araçları:
cargo install cargo-watch
4.2 VS Code eklentileri → .vscode/extensions.json (önerilen eklentiler)
rust-lang.rust-analyzer— Rust dil desteğitamasfe.even-better-toml— Cargo.tomlvadimcn.vscode-lldb— Rust debugfill-labs.dependi— bağımlılık sürümleriusernamehw.errorlens— hataları satırda gösterdbaeumer.vscode-eslint,esbenp.prettier-vscodebradlc.vscode-tailwindcssmongodb.mongodb-vscode— veritabanını VS Code içinden görüntülemems-azuretools.vscode-dockerhumao.rest-client— API'yi.httpdosyalarıyla test etme
4.3 .vscode/settings.json
- Kaydederken otomatik format (Rust: rustfmt, TS: Prettier)
rust-analyzer.check.command = clippyfiles.excludevesearch.excludeiletarget/,node_modules/,dist/gizlensin
4.4 .vscode/tasks.json ve launch.json
- Görevler: Dev: Tümünü Başlat, DB: Başlat/Durdur, DB: Seed, DB: Sıfırla, Test: Tümü
- Rust backend için debug yapılandırması (breakpoint ile)
4.5 Canlı takip (hot reload)
- Kökte tek komut:
npm run dev(concurrentlyile)- Frontend: Vite →
http://localhost:5173(kaydedince anında güncellenir) - Backend:
cargo watch -x run→http://localhost:8080(kaydedince yeniden derlenir) - Vite proxy:
/apiistekleri backend'e yönlenir (CORS yok)
- Frontend: Vite →
- Telefondan test:
npm run dev:host→ aynı ağdaki telefondanhttp://<bilgisayar-ip>:5173 backend/api.httpdosyasında örnek API istekleri
4.6 Yerel MongoDB (sunucuya bağlanmadan geliştirme)
docker-compose.dev.ymlile MongoDB 7, tek düğümlü replica set (transaction desteği için zorunlu).- Veriler Docker volume'unda kalıcı.
- Bağlantı yalnızca
.envile yönetilir:MONGODB_URI=mongodb://localhost:27017/kakeibo_dev?replicaSet=rs0&directConnection=true scripts/altında: seed (örnek hane, dönem, kategori, harcama, birikim), reset (veritabanını sıfırla).
5. 🏠 Hane (Household) Yapısı
- Uygulama hane bazlı çalışır; her hane yalnızca kendi verisini görür, haneler tamamen bağımsızdır.
- Tüm sorgular backend'de zorunlu olarak
household_idile filtrelenir (ortak middleware). - İlk kayıtta hane oluşturulur; hane sahibi aynı haneye başka üye davet edebilir (davet kodu).
- Roller:
owner,member.
6. 📅 Dönem (Period) Mantığı
- Dönem başlangıç ve bitiş tarihiyle açılır. Örnek:
01.12.2026–01.01.2027. - Aynı anda yalnızca bir açık dönem olur; girişler yalnızca açık döneme yapılır.
- Haftalar: Pazartesi başlangıçlı. Dönemin başı/sonundaki kısmi haftalar ayrı hafta sayılır ve bütçeleri gün sayısına göre orantılanır.
- Dönem kapatma (sihirbaz adımları):
- Özet ve planlanan/gerçekleşen karşılaştırması gösterilir.
- Kalan bakiye ve borç hesaplanır.
- Onay → dönem salt okunur olur.
- Borç veya artı bakiye bir sonraki döneme devredilir; gerçekleşen birikim birikim modülüne eklenir.
- Yeni dönem önceki dönemin sabit gelir/gider kalemleri ve kategori bütçeleri kopyalanarak açılabilir.
- Devreden borç yeni dönem planında ayrı kalem olarak görünür ve harcanabilir tutardan düşülür; uygulama borcun kapatılması için uyarır/öneride bulunur.
- Kapanış işlemi MongoDB transaction ile yapılır (yarım kalırsa hiçbir şey değişmez).
- Hane sahibi kapalı bir dönemi yeniden açabilir (düzeltme için; devirler yeniden hesaplanır). Tüm değerler sonradan değiştirilebilir.
7. 🗂️ Kategoriler ve Ödeme Türleri
4 sabit ana grup (değiştirilemez, silinemez; her birinin sabit rengi ve ikonu var):
| Grup | Emoji | Anlamı |
|---|---|---|
| Zorunlu | 🏠 | Temel ihtiyaçlar (market, fatura, ulaşım) |
| İstek | 🛍️ | Arzular (dışarıda yemek, alışveriş) |
| Kültürel | 📚 | Kitap, eğitim, sinema, konser |
| Beklenmeyen | ⚡ | Öngörülmeyen giderler (tamir, sağlık, hediye) |
- Her ana grubun altına alt kategori eklenebilir, düzenlenebilir, sıralanabilir, pasife alınabilir (geçmiş kayıtlar bozulmasın diye silmek yerine pasife alma).
- İlk kurulumda her grup için örnek alt kategoriler gelsin.
- Ödeme türleri tanımlanabilir: 💵 Nakit, 💳 Kredi Kartı, 🏧 Banka Kartı, 🔁 Havale/EFT (eklenebilir/düzenlenebilir).
8. 📄 Ekranlar ve Özellikler
8.1 🔐 Giriş / Kayıt
- Sade giriş ekranı (logo, e-posta, şifre, "Beni hatırla").
- Kayıt → hane oluşturma → ilk dönemi açma sihirbazı (onboarding: gelir, sabit giderler, birikim hedefi, bütçe dağıtımı).
- Giriş sonrası Dashboard.
8.2 📊 Dashboard
Uygulamayı açtığımda tek bakışta: aylık gelirim, planladığım harcama, sabit giderlerim, anlık mali durumum ve toplam birikimim.
Üst bölüm — özet kartları (sırayla):
- 💰 Toplam gelir
- 📌 Sabit giderler
- 🐷 Toplam birikim (varlıkların güncel değeriyle)
- ⚠️ Devreden borç (varsa)
- 🎯 Grup bazlı planlanan / gerçekleşen (haftalık ve aylık, ilerleme çubuklu)
- 📍 Anlık durum: Kalan harcanabilir tutar (en belirgin kart)
Grafikler (Günlük / Haftalık / Aylık sekmeli):
- Harcanabilir gelir vs. gerçekleşen harcama — kümülatif çizgi grafik
- 4 ana grup + harcanabilir gelir kırılımlı çizgi grafik
Hızlı eylem: "➕ Harcama Ekle" butonu (mobilde sağ altta yüzen buton).
8.3 🗓️ Aylık Planlama
- Varsayılan görüntüleme modu (salt okunur); "✏️ Düzenle" ile düzenleme moduna geçilir, "Kaydet / Vazgeç".
- Sabit gelirler: Birden fazla kalem (ad, tutar, tarih); eklenebilir/kaldırılabilir.
- Sabit giderler: Birden fazla kalem; eklenebilir/kaldırılabilir; "Önceki aydan kopyala".
- Birikim hedefi: Tutarı ben girerim.
- Devreden borç: Önceki dönemden otomatik gelir.
- Özet satırı — tek satırda belirgin kutucuklar (mobilde 2×2):
Gelir−Sabit Giderler−Birikim−Devreden Borç=Harcanabilir Tutar - Bütçe dağıtımı (4 ana grup, aylık ve haftalık):
- Uygulama öneri sunar; seçenekler:
- a) Önceki ayın gerçekleşen harcamalarına göre
- b) Son 3 ayın ortalamasına göre
- c) Varsayılan yüzde dağılımı (ayarlardan değiştirilebilir)
- Öneri tek tıkla uygulanır; tüm rakamları ben değiştiririm.
- Haftalık bütçe, aylık bütçeden hafta gün sayısına göre otomatik hesaplanır (elle değiştirilebilir).
- Dağıtılan toplam, harcanabilir tutarı aşarsa uyarı.
- Uygulama öneri sunar; seçenekler:
- Notlar (bkz. 8.6)
8.4 ✍️ Günlük Defter
- Küçük defter mantığı; üstte hafta seçici (◀ önceki hafta | Bu hafta | sonraki hafta ▶).
- Hızlı giriş formu: tutar (büyük, sayısal klavye), ana grup (4 büyük renkli buton), alt kategori, ödeme türü, tarih (varsayılan bugün), açıklama.
- Son kullanılan kategori/ödeme türü hatırlanır.
- Formun altında o haftanın girişleri gün gün gruplanmış liste halinde.
- Her satırda düzenle / sil; silmede "↩️ Geri al" toast'ı.
- Haftalık özet: grup bazlı bütçe / harcanan / kalan.
8.5 📝 Ay Sonu Değerlendirmesi
- Ayrı sayfa. Tüm işlemler en baştan otomatik yansır (hesaplamalar sorgu anında yapılır, ayrıca kopya tutulmaz).
- Kakeibo'nun dört sorusu ve cevapları:
- Ne kadar param vardı?
- Ne kadar biriktirmek istedim?
- Ne kadar harcadım?
- Ne kadar biriktirdim?
- "Nasıl daha iyi yapabilirim?" — serbest metin (Markdown).
- Planlanan vs. gerçekleşen (grup ve alt kategori bazlı), en çok harcanan kategoriler, haftalık dağılım.
- Notlar: Sayfanın en altında yalnızca başlık olarak listelenir; tıklayınca açılır.
- "🔒 Dönemi Kapat" butonu → dönem kapatma sihirbazı.
- Aylık değerlendirme çıktısı: Formatı ben ayrıca vereceğim.
templates/monthly_report.mdşablonu üzerinden üretilsin; Markdown ve yazdırılabilir/PDF çıktı.
8.6 🗒️ Notlar (Ortak Yapı)
- Notlar döneme özeldir; yalnızca ilgili dönemde görünür.
- Notun bağlı olduğu yer:
planningveyareview. - Yapı: Başlık + Metin; metin Markdown destekler (Düzenle / Önizle sekmeleri).
8.7 🐷 Birikimler / Varlıklar
- Ayrı modül. Varlık türleri: 🇹🇷 TL, 🥇 Altın (gram, çeyrek, yarım, tam, ons), 💵 USD, 💶 EUR ve eklenebilir diğer dövizler.
- Her alım/satım kaydı: varlık, miktar, birim fiyat/kur, tarih, toplam tutar, not.
- Her varlık için: toplam miktar, ortalama maliyet, güncel kur, güncel değer, kâr/zarar (tutar ve %).
- Portföy özeti: toplam maliyet, toplam güncel değer, toplam kazanç; varlık dağılımı (halka grafik).
- Kurlar: Güvenilir ve ücretsiz bir kaynaktan (döviz için TCMB, altın için uygun bir kaynak — öner) periyodik çekilsin ve önbelleğe alınsın; kaynak erişilemezse son kur + "son güncelleme zamanı" gösterilsin. Manuel kur girişi her zaman mümkün.
- Dönem kapanışındaki gerçekleşen birikim buraya otomatik eklenebilsin (onaylı).
8.8 📈 Raporlama
- Filtreler: dönem, tarih aralığı, ana grup, alt kategori, ödeme türü.
- Raporlar:
- Gelir–gider karşılaştırması (aylık ve dönemler arası, çubuk grafik)
- Kategori kırılımlı gelir–gider raporu (tablo + grafik)
- Planlanan vs. gerçekleşen bütçe sapma raporu
- Ödeme türüne göre harcama dağılımı
- Birikim oranı trendi (gelirin yüzde kaçı birikti)
- Birikim/varlık performansı
- Her rapor CSV olarak dışa aktarılabilir ve yazdırılabilir.
8.9 🔄 İçe / Dışa Aktarma
- JSON: Tam hane yedeği ve geri yükleme (sürüm bilgisi içersin; içe aktarmadan önce önizleme ve onay).
- CSV: Harcama girişleri, plan kalemleri, varlık işlemleri (UTF-8,
;ayırıcı — Türkçe Excel uyumlu). - İçe aktarmada hatalı satırlar raporlansın; geçerli satırlar aktarılsın.
8.10 ⚙️ Ayarlar
- 🌓 Tema: Aydınlık / Karanlık / Sistem
- Kategori, alt kategori, ödeme türü yönetimi
- Varsayılan bütçe yüzdeleri
- Hane ve üye yönetimi, profil, şifre değiştirme
- Yedekleme (JSON dışa/içe aktarma)
9. 🎨 UI/UX İlkeleri (Best Practices)
Genel
- Mobile-first; tasarımı önce 375 px genişlikte yap, sonra tablet/masaüstüne genişlet.
- Navigasyon: Mobilde alt menü (5 öğe: 📊 Panel, ✍️ Defter, 🗓️ Plan, 🐷 Birikim, ☰ Diğer); masaüstünde sol kenar çubuğu.
- Ferah boşluklar, kart tabanlı düzen, yuvarlatılmış köşeler, hafif gölgeler.
- Arayüz dili Türkçe; metinler kısa ve anlaşılır.
Tipografi ve sayılar
- Font: Inter (veya benzeri okunaklı sans-serif), temel boyut 16 px (≈12 pt), başlıklar belirgin hiyerarşide.
- Tutarlarda
tabular-nums(rakamlar alt alta hizalı). - Para formatı: Para birimi rakamın sağında, arada bir boşluk; Türkçe sayı formatı:
1.250,00 ₺·300,00 €·150,00 $·12,50 gr - Tarih:
GG.AA.YYYY - Tüm formatlama tek bir yardımcı modülden (
lib/format.ts) yapılsın.
Renk
- Tasarım token'ları (CSS değişkenleri) ile aydınlık/karanlık tema.
- 4 ana grubun sabit, ayırt edilebilir renkleri (renk körlüğüne uygun; renk yanında ikon/etiket de olsun).
- Gelir/olumlu: yeşil · Gider/aşım: kırmızı · Uyarı: turuncu. Kontrast WCAG AA.
Etkileşim ve geri bildirim
- Yükleniyor durumlarında skeleton; boş durumlarda açıklayıcı mesaj + eylem butonu ("Henüz harcama yok — ilkini ekle ✍️").
- Her işlemde toast bildirimi; silmede geri al.
- Kalıcı/riskli işlemlerde (dönem kapatma, içe aktarma, silme) onay diyaloğu.
- Formlarda satır içi doğrulama mesajları; tutar alanında sayısal klavye (
inputMode="decimal"). - Dokunma alanları en az 44×44 px; klavye ile tam gezinme; görünür odak halkası.
- Bütçe aşımına yaklaşınca (%80) ve aşınca görsel uyarı.
- Animasyonlar hafif ve kısa;
prefers-reduced-motiondesteklensin.
Logo ve ikonlar
- Logo ve uygulama ikonu tasarımı sana ait: sade, defter + yen/para temalı, SVG.
- Favicon, PWA ikonları (192/512, maskable), Apple touch icon ve ileride Tauri için ikon setleri üretilsin.
10. 🗄️ Veritabanı Modeli İlkeleri
İleride Windows, Linux ve Android (çevrimdışı çalışma ve senkronizasyon) desteklenecek; model buna hazır olmalı:
- Tüm kayıtlarda:
_id(UUID v7),household_id,created_at,updated_at,deleted_at(soft delete),version. - Parasal tutarlar float olarak saklanmaz → kuruş cinsinden tamsayı (
i64). Altın miktarı ve kurlar için yeterli ondalık hassasiyet (Decimal128veya ölçekli tamsayı). - Koleksiyonlar (taslak):
users,households,periods,categories,payment_methods,plan_items(sabit gelir/gider),budgets(grup × dönem × hafta),entries(harcamalar),notes,assets,asset_transactions,exchange_rates,carryovers,settings - İndeksler:
household_id,(household_id, period_id),(household_id, date). - Hesaplanan değerler (gerçekleşen toplamlar, kalan tutar) saklanmaz, aggregation ile hesaplanır.
- Şema sürümü (
schema_version) ve basit migration mekanizması. - Şemayı
docs/DATA_MODEL.mddosyasında belgele ve Faz 0'da onayıma sun.
11. 🔐 Güvenlik
- Şifreler
argon2ile hashlenir; JWT httpOnly, Secure, SameSite cookie'de tutulur. - Giriş denemelerinde rate limit.
- Her istekte hane izolasyonu (başka hanenin verisine erişim imkânsız olmalı — bunun için test yaz).
- Girdi doğrulama hem frontend (zod) hem backend'de.
- Gizli bilgiler (
MONGODB_URI,JWT_SECRET) yalnızca ortam değişkenlerinde;.envgit'e eklenmez,.env.exampletutulur. - Hata mesajları kullanıcıya Türkçe ve sade; teknik detay yalnızca loglarda.
12. 🚀 Canlıya Alma (Atlas Homeserver + Dokploy)
12.1 Yaklaşım
- Tek Docker imajı, çok aşamalı
Dockerfile:- Node aşaması → frontend build (
dist/) - Rust aşaması → backend release build
- Küçük çalışma imajı → Axum hem
/apiuç noktalarını hem de frontend dosyalarını sunar
- Node aşaması → frontend build (
GET /api/healthuç noktası (uygulama + veritabanı durumu) → Dokploy health check.- Akış: GitHub'a push → Dokploy otomatik build ve deploy.
12.2 Dokploy adımları (Faz 9'da benimle adım adım yap)
- Dokploy'da proje oluştur → Application ekle → GitHub deposunu bağla,
maindalı. - Build tipi: Dockerfile.
- Ortam değişkenlerini Dokploy arayüzünden gir (
MONGODB_URI,JWT_SECRET,APP_URL,RUST_LOG). - Domain ekle; HTTPS (Let's Encrypt) Dokploy/Traefik ile otomatik.
- Otomatik deploy (webhook) aç; ilk deploy sonrası health check'i doğrula.
- Geri dönüş (rollback) için önceki deploy'a dönmeyi göster.
12.3 Canlı ortamda MongoDB bağlantısı
Sunucudaki mevcut MongoDB'ye bağlanmadan önce benimle birlikte kontrol et:
- MongoDB Docker konteyneri mi (Dokploy içinde mi?), yoksa doğrudan sunucuya mı kurulu?
- Konteynerse → uygulama aynı Docker ağına bağlanır, host adı olarak konteyner/servis adı kullanılır.
- Sunucuya kuruluysa →
host.docker.internal(extra_hosts ile) veya Docker köprü IP'si (172.17.0.1) kullanılır; MongoDB'nin bu adresi dinlediği (bindIp) ayarlanır.
- Replica set etkin mi? Değilse tek düğümlü replica set'e çevirme adımlarını ver (transaction için gerekli).
- Yalnızca
kakeiboveritabanındareadWriteyetkili ayrı bir kullanıcı oluştur (admin kullanıcısı kullanılmaz). - MongoDB portu (27017) internete açık olmamalı; güvenlik duvarını kontrol et.
- Örnek bağlantı:
MONGODB_URI=mongodb://kakeibo_app:<sifre>@<host>:27017/kakeibo?authSource=kakeibo&replicaSet=rs0 - Uygulama açılışında indeksleri otomatik oluştursun ve bağlantı hatasında anlaşılır log versin.
12.4 Yedekleme
mongodumpile günlük otomatik yedek (Dokploy zamanlanmış görev veya cron), son 14 yedeği sakla.- Geri yükleme (
mongorestore) adımlarınıdocs/DEPLOY.mddosyasına yaz ve bir kez test et.
13. 🧪 Test ve Kalite
- Backend: kritik iş mantığı için birim testleri (bütçe önerisi, hafta hesapları, dönem devri, ortalama maliyet ve kâr/zarar, hane izolasyonu).
- Frontend: para/tarih formatlama ve kritik bileşenler için testler (Vitest).
- Her faz sonunda elle test kontrol listesi ver (tarayıcıda hangi adımları deneyeceğim).
- Kod kalitesi:
cargo clippy,cargo fmt, ESLint, Prettier.
14. 🗺️ Fazlar
Her fazın başında kısa plan, sonunda test adımları ve özet. Onayım olmadan sonraki faza geçme. İlk canlıya alma erken yapılacak (Faz 3), böylece deploy sorunları en baştan çözülür; sonraki her faz otomatik olarak yayına çıkar.
| Faz | Kapsam | Çıktı |
|---|---|---|
| Faz 0 | Ortam kurulumu (Rust, Node, Docker, Git), VS Code yapılandırması, monorepo iskeleti, hafıza dosyaları, yerel MongoDB, veri modeli onayı | npm run dev ile boş uygulama tarayıcıda açılıyor |
| Faz 1 | Backend temeli: config, DB bağlantısı, kimlik doğrulama, hane, kategoriler, ödeme türleri, health check | API .http dosyasıyla test edilebiliyor |
| Faz 2 | Frontend temeli: tasarım sistemi (Tailwind + shadcn), tema, logo/ikonlar, layout, navigasyon, giriş/kayıt | Giriş yapılabilen, temalı iskelet uygulama |
| Faz 3 | 🚀 İlk canlıya alma: Dockerfile, Dokploy kurulumu, canlı MongoDB bağlantısı, domain + HTTPS, yedekleme | Giriş ekranı canlıda çalışıyor |
| Faz 4 | Dönem açma + aylık planlama (sabit gelir/gider, birikim, özet kutucukları, bütçe önerisi) + notlar | Plan ekranı |
| Faz 5 | Günlük defter (haftalık giriş, liste, düzenle/sil) | Harcama girişi |
| Faz 6 | Ay sonu değerlendirmesi + dönem kapatma/devir sihirbazı | Tam dönem döngüsü |
| Faz 7 | Dashboard: özet kartları ve çizgi grafikler | Ana ekran |
| Faz 8 | Birikimler/varlıklar: altın, döviz, kur entegrasyonu, kâr/zarar | Birikim modülü |
| Faz 9 | Raporlama + JSON/CSV içe–dışa aktarma + aylık değerlendirme çıktısı | Raporlar |
| Faz 10 | PWA, performans, erişilebilirlik ve son UI cilası | Telefona kurulabilir web uygulaması |
| Faz 11+ | Tauri 2 ile Windows, Linux, Android uygulamaları (çevrimdışı mod ve senkronizasyon) | Masaüstü ve mobil uygulamalar |
15. ✅ Genel Kodlama Kuralları
- Temiz, modüler, okunabilir kod; anlamlı isimlendirme (kod İngilizce, arayüz metinleri Türkçe).
- Arayüz metinleri tek bir dosyada toplansın (ileride çok dil desteği için).
- Tekrar eden mantık backend'de
services/, frontend'delib/altında. - Her yeni bağımlılığı eklemeden önce kısaca nedenini söyle.
- Commit mesajları Türkçe ve açıklayıcı (ör.
feat(defter): haftalık giriş listesi eklendi).
▶️ Başlangıç
Faz 0 ile başla:
- İşletim sistemimi sor ve kurulumları adım adım listele.
.vscode/yapılandırmalarını ve monorepo iskeletini oluştur.CLAUDE.md,docs/MEMORY.md,docs/PHASES.mddosyalarını oluştur.- Yerel MongoDB'yi (Docker, replica set) kur ve
npm run devile frontend + backend'i birlikte çalıştır. - Veri modeli taslağını
docs/DATA_MODEL.mdolarak hazırla ve onayımı bekle.