尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Kişisel finans uygulaması: hesaplar, işlemler, bütçeler, borçlar, yatırımlar, raporlar. Çevrimdışı öncelikli (offline-first) bir PWA'dır — veri önce tarayıcıdaki IndexedDB'ye yazılır, bağlantı olduğunda Supabase'e eşitlenir. Arayüz Türkçedir.檢視完整 README ↗
Kişisel finans uygulaması: hesaplar, işlemler, bütçeler, borçlar, yatırımlar, raporlar. Çevrimdışı öncelikli (offline-first) bir PWA'dır — veri önce tarayıcıdaki IndexedDB'ye yazılır, bağlantı olduğunda Supabase'e eşitlenir. Arayüz Türkçedir.
Canlı: https://fintrack-os-ten.vercel.app
;/Windows-1254, XLSX), Borç/Alacak
sütunları, satır bazlı önizleme, mükerrer tespiti, geri alma.updatedAt), silinen kaydın dirilmemesi,
Realtime ile cihazlar arası canlı güncelleme.Next.js 16 (App Router, src/proxy.ts middleware) · React 19 · TypeScript · Tailwind v4 ·
Zustand · Dexie (IndexedDB) · Supabase (Auth, Postgres + RLS, Realtime, Storage) ·
Recharts · Vitest · Playwright.
Next.js 16 önceki sürümlerden farklıdır; kod yazmadan önce
node_modules/next/dist/docs/altındaki ilgili rehbere bakın (bkz.AGENTS.md).
Ücretli servis kullanılmaz. Fiyat kaynakları ücretsiz ve anahtarsızdır: fawazahmed0
currency-api (kurlar), Truncgil (Kapalıçarşı altını), TEFAS (fonlar), Yahoo Finance
(altın vadelisi, BIST, kripto). Hepsi sunucu tarafında (src/app/api/prices/*) çağrılır.
Gereksinim: Node 22, bir Supabase projesi.
npm ci
cp .env.example .env.local # değerleri doldurun
npm run dev # http://localhost:3000
supabase_schema.sql'i çalıştırın (tablolar, deleted_at, RLS).supabase/migrations/ altındaki dosyaları numara sırasıyla çalıştırın
(0001 → son). Hepsi idempotenttir; tekrar çalıştırmak güvenlidir.https://<adres>/auth/callback** (şifre sıfırlama ve e-posta onayı)Yeni migration'ı her zaman koddan ÖNCE uygulayın. İstemci yeni sütunları yazmaya başladığında sütun yoksa bulut yazımı reddedilir ve kayıt yalnız o cihazda kalır.
.env.local'a AUTH_BYPASS=1 eklenirse uygulama girişsiz açılır; veri yalnız o
tarayıcının IndexedDB'sinde kalır. Uçtan uca testler bu kipte çalışır. Üretimde yok sayılır.
| Komut | Ne yapar |
|---|---|
npm run dev | Geliştirme sunucusu |
npm run build / npm start | Üretim derlemesi / sunucusu |
npm run typecheck | tsc --noEmit |
npm run lint | ESLint |
npm test | Vitest birim testleri |
npm run test:e2e | Playwright uçtan uca testleri (e2e/) |
CI (.github/workflows/ci.yml) her push ve PR'da tip kontrolü, lint, birim testleri,
üretim derlemesi ve uçtan uca testleri çalıştırır. Vercel deploy'u bundan bağımsızdır.
src/
app/(main)/… sayfalar (giriş gerektirir) app/api/… sunucu rotaları
components/… arayüz proxy.ts oturum + CSP
store/… Zustand store'ları (sayfaların tek veri kaynağı)
lib/db Dexie şeması (yerel kopya)
lib/sync outbox eşitleme motoru, realtime, onarım
lib/utils SAF hesaplar — store/DB bilmez, birim testli
supabase/migrations sıralı, idempotent SQL
audit/ güvenlik ve hata denetim raporları
localUpsert/localPatch/localBatch (Dexie + outbox) →
engine.ts kuyruğu Supabase'e iter. Silme her zaman deleted_at (tombstone).reconcilingPull bulut + yerel kopyayı birleştirir; çakışmada
updatedAt yeni olan kazanır (sunucuda keep_newer_row tetikleyicisi, 0016).error_logs tablosuna yazılır
(0020, kullanıcı yalnız ekler; Supabase panelinden okunur, 30 gün tutulur).lib/utils'tedir (akış toplamı, bütçe, ekstre, getiri…) ve
sayfalar arası tutarlılık için tek yerden çağrılır.