尚未检测到更新。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.