# 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](docs/PROMPT.md) - Sürüm geçmişi: [CHANGELOG.md](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 ```bash # 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) | ## 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ı ```bash 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.