- /alisveris/:id/tamamla: alınan ürün/muadil, paket, tutar, mağaza başına hesap ve fiş, alınmayanlar - tamamlanan listede planlanan vs. gerçekleşen raporu ve mağaza giderleri - liste sayfası ve alışveriş modunda "Alışverişi tamamla" Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BÜTÇEM
Aile bütçesi, banka/kart/cari hesapları, birikimler (altın, döviz, ziynet), aylık bütçe, ev stoğu ve akıllı alışveriş listelerini tek yerde yöneten, çok kullanıcılı web uygulaması.
- Ürün tanımı, mimari kurallar ve faz planı: docs/PROMPT.md
- Sürüm geçmişi: CHANGELOG.md
Teknoloji
Next.js 16 (App Router, Turbopack, Cache Components) · React 19 · TypeScript (strict) · Tailwind CSS 4 · shadcn/ui (Radix) · Better Auth · MongoDB 9 (native driver + Mongoose) · zod · Vitest
Gereksinimler
- Node.js 26 (Active LTS) —
nvm use(.nvmrc) - Docker + Docker Compose (lokal MongoDB replica set)
Lokal geliştirme
# 1) Bağımlılıklar
npm install
# 2) Ortam değişkenleri — BETTER_AUTH_SECRET için: openssl rand -base64 32
cp .env.example .env.local
# 3) MongoDB (tek düğümlü replica set rs0, host portu 27019) — sağlıklı olana kadar bekler
npm run db:up
# 4) Örnek veri: admin + aile kullanıcıları + 2 hane (tekrar çalıştırmak güvenli)
npm run seed
# 5) Uygulama
npm run dev # http://localhost:3000 → /login
Geliştirme hesapları (npm run seed)
| Kullanıcı adı | Rol | Hane(ler) | Not |
|---|---|---|---|
admin |
admin | Çakır Ailesi (owner) | şifre SEED_ADMIN_PASSWORD |
ayse |
user | Çakır Ailesi (owner), Annemler (viewer) | |
emre |
user | Çakır Ailesi (member) | e-postasız |
zeynep |
user | Çakır Ailesi (viewer) | e-postasız |
fatma |
user | Annemler (owner) | |
mehmet |
user | Annemler (member) | |
burak |
admin | — | hanesi yok → hane verisi görmez |
ozan |
user | Çakır Ailesi (member) | askıda, giriş yapamaz |
Admin dışındaki hesapların şifresi SEED_USER_PASSWORD (.env.local). Production'da yalnızca admin oluşturulur.
Giriş kullanıcı adı veya e-posta ile yapılır. Kayıt kapalıdır; kullanıcıları admin /admin/kullanicilar sayfasından oluşturur.
Scriptler
| Komut | Açıklama |
|---|---|
npm run dev |
Geliştirme sunucusu |
npm run build / start |
Üretim build'i / sunucusu |
npm run lint |
ESLint |
npm run typecheck |
tsc --noEmit |
npm run test |
Vitest birim testleri |
npm run format |
Prettier |
npm run db:up / db:down |
Lokal MongoDB'yi başlat / durdur |
npm run seed / seed:reset |
Örnek veri (Faz 4) |
npm run test:integration |
Entegrasyon testleri (MongoDB) |
npm run migrate |
Bekleyen migration'lar |
npm run cleanup |
Eski/bağlanmamış ek dosyaları sil |
Haneler ve yetki
- Tüm alan verisi bir haneye (
householdId) aittir; kullanıcı yalnızca üyesi olduğu hanelerin verisini görür. Sistem admini de bu kurala tabidir. - Hane içi roller: sahip (ayarlar, üyeler), üye (veri girer), izleyici (yalnızca görüntüler).
- Her sayfa, Server Action ve API, hane yetkisini
src/lib/dal.tsüzerinden sunucuda doğrular; servisler de üyeliği ayrıca kontrol eder.
Marka dosyaları
public/brand/: logo.svg (açık tema), logo-dark.svg (koyu tema), icon.svg (uygulama ikonu), icon-maskable.svg (Android/iOS, köşesiz). Yazı Noto Sans Bold (OFL) harf yollarıdır. İkonları değiştirdikten sonra npm run icons çalıştırın; favicon ve PWA ikonları bu kaynaklardan üretilir.
Docker imajı
docker build --build-arg APP_VERSION=$(node -p "require('./package.json').version") \
--build-arg APP_COMMIT=$(git rev-parse --short HEAD) -t butcem .
Canlı ortam (Dokploy, butcem.ta1sph.website) kurulumu Faz 15'te docs/DEPLOY.md içinde anlatılacak.