Files
butcem/CHANGELOG.md
T
2026-11-05 02:02:00 +03:00

6.2 KiB
Raw Blame History

Değişiklik Günlüğü

Bu projedeki tüm önemli değişiklikler bu dosyada belgelenir.

Biçim Keep a Changelog esas alınır ve proje Semantic Versioning kullanır.

Yayınlanmamış

0.3.0 - 2026-11-05

Faz 3: Backend — kimlik doğrulama, yetki katmanı ve güvenlik.

Eklendi

  • Better Auth (MongoDB adaptörü, replica set transaction): e-posta veya kullanıcı adı ile giriş, kayıt (sign-up) kapalı, admin plugin, 30 günlük oturum, HttpOnly/Secure/SameSite=Lax cookie.
  • Rate limit (veritabanında): genel 100 istek/dk, giriş denemeleri 5/dk.
  • Data Access Layer (lib/dal.ts): getCurrentUser (istek başına tek okuma), requireSession, requireRole, getActionUser. Askıdaki kullanıcının oturumu reddedilir.
  • proxy.ts: iyimser oturum cookie kontrolü (oturumsuz → /login); asıl kontrol DAL'da.
  • Admin kullanıcı yönetimi Server Action'ları: oluşturma, düzenleme, rol, şifre sıfırlama (diğer oturumları kapatır), askıya alma/kaldırma, silme. Kendini silememe/askıya alamama ve son admini düşürememe sunucuda da uygulanır; Better Auth hataları Türkçe alan hatalarına çevrilir.
  • E-postası olmayan kullanıcılar için .invalid yer tutucu adres (arayüzde gizlenir).
  • MongoDB (lib/db/mongo.ts) ve Mongoose (lib/db/mongoose.ts) bağlantıları (HMR güvenli tekil örnek, tembel oluşturma).
  • Güvenlik başlıkları: CSP (nonce'suz, Cache Components uyumlu), X-Content-Type-Options, Referrer-Policy, X-Frame-Options, Permissions-Policy, Cross-Origin-Opener-Policy; production'da HSTS.
  • GET /api/health veritabanı ping'i; erişilemezse 503.
  • npm run seed: ilk admini (SEED_ADMIN_*, kullanıcı adı admin) idempotent olarak oluşturur.
  • npm run test:integration: gerçek MongoDB'de (butcem_test) kimlik doğrulama sözleşmesi testleri (kayıt kapalı, giriş, askı, admin yetkisi, rate limit).
  • BÜTÇEM logosu ve ikon seti (logo.svg, logo-dark.svg, icon.svg, icon-maskable.svg); npm run icons SVG kaynaktan üretir.

Değişti

  • Giriş, çıkış, dashboard ve admin sayfaları mock yerine gerçek oturum ve verilerle çalışır; oturuma bağlı kabuk Suspense içinde akış olarak gelir.

Düzeltildi

  • Kullanıcı adı normalizasyonu: tr-TR küçük harf dönüşümü "ADMIN"i "admın" yapıyordu; artık İ/I/ı → i ve ASCII küçük harf.

Kaldırıldı

  • Oturum ve admin kullanıcı listesi mock verileri (hane mock'u Faz 5'e kadar duruyor).

0.2.0 - 2026-11-05

Faz 2: Frontend iskeleti (veriler Faz 3'e kadar mock).

Eklendi

  • Marka paleti: mavi/beyaz oklch tema (açık), lacivert/açık mavi (koyu); anlamsal --income, --expense, --budget, --warning değişkenleri ve grafik renkleri.
  • Açık / Koyu / Sistem tema (next-themes) ve her ekranda tema seçici.
  • Giriş ekranı (/login): kullanıcı adı veya e-posta + şifre, zod doğrulama, şifre göster/gizle, yükleniyor durumu; kayıt bağlantısı yok. / her zaman /login'e yönlenir.
  • Uygulama kabuğu: masaüstünde daraltılabilir yan menü, mobilde alt gezinme çubuğu (ortada Hızlı ekle, "Daha fazla" ile menü), üst bar (hane seçici, Hızlı ekle, tema, kullanıcı menüsü: ad, rol, sürüm, Çıkış yap). Henüz gelmeyen sayfalar "Yakında" olarak pasif.
  • Hızlı ekle (gider / gelir / transfer) seçimi; mobilde alttan açılan Drawer, masaüstünde Dialog (ResponsiveDialog).
  • Dashboard: karşılama ve özet kartları (Suspense + Skeleton).
  • Admin kullanıcı yönetimi (/admin/kullanicilar): TanStack Table v9 ile Türkçe duyarlı arama, sıralama, sayfalama; oluşturma, düzenleme, rol değiştirme, şifre sıfırlama, askıya alma/kaldırma, silme (onaylı). Kendini silememe ve son admini düşürememe kuralları (checkAdminAction).
  • Paylaşılan zod şemaları (src/shared/schemas: giriş, kullanıcı, şifre, askı), Türkçe arama/sıralama (foldTr, compareTr), TL ve İstanbul saatli tarih biçimleri (formatMoney, formatDate).
  • PWA temeli: manifest.webmanifest, tema rengi, Apple web app meta, ikonlar.
  • npm run icons: public/brand/icon.png'den favicon.ico, uygulama, Apple ve maskable PWA ikonları üretir (sharp).
  • Yer tutucu marka dosyaları (public/brand/logo.svg, logo-dark.svg, icon.png).
  • 404, hata (retry) ve global hata sayfaları; yükleniyor ekranları.
  • ActionResult sonuç tipi (Faz 3 Server Action sözleşmesi).

Değişti

  • use-mobile hook'u useSyncExternalStore ile yeniden yazıldı (effect içinde setState yok, hydration güvenli).
  • ESLint: _ önekli bilinçli kullanılmayan değişkenlere izin.

0.1.0 - 2026-11-05

Faz 1: Framework, klasör yapısı ve altyapı.

Eklendi

  • Next.js 16.4 (App Router, Turbopack, Cache Components), React 19.3, TypeScript strict (noUncheckedIndexedAccess), Tailwind CSS 4.
  • shadcn/ui (Radix, Nova preset) başlangıç yapılandırması.
  • Bağımlılıklar: Better Auth, MongoDB sürücüsü 7.7 (Mongoose ile ortak), Mongoose 9, zod 4, react-hook-form, next-themes, sonner, TanStack Table.
  • src/ tabanlı klasör yapısı (features, shared, models, lib/db, lib/storage, i18n, scripts/migrations).
  • zod ile doğrulanan env.ts (tembel doğrulama, build sırasında sır gerektirmez) ve birim testleri.
  • src/i18n/tr.ts arayüz metinleri dosyası.
  • Lokal MongoDB 9 tek düğümlü replica set (docker-compose.yml, rs0, otomatik başlatma, PRIMARY healthcheck, host portu 27019).
  • Çok aşamalı Dockerfile (standalone çıktı, root olmayan kullanıcı, /app/uploads volume, HEALTHCHECK) ve .dockerignore.
  • Geçici GET /api/health (sürüm ve commit bilgisi).
  • Vitest, Prettier (Tailwind eklentisi), EditorConfig, VSCode önerilen eklentiler.
  • .nvmrc (Node 26), engines.node, typecheck, test, format, db:up, seed scriptleri.
  • docs/PROMPT.md (ana prompt ve Faz 0 kararları), README.md, CHANGELOG.md.