尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Türkiye'deki yatırım, BES, BYF ve GYF fonlarını listeleme, analiz ve karşılaştırma aracı. TEFAS + KAP verileriyle getiri, risk, hisse portföyü, portföy ve simülasyon.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Türkiye'deki yatırım, emeklilik (BES), borsa yatırım (BYF) ve girişim sermayesi (GYF) fonlarını listeleme, analiz ve karşılaştırma aracı. Fintables benzeri; veriler TEFAS'ın kamuya açık JSON API'sinden, hisse portföyleri KAP raporlarından gelir.檢視完整 README ↗
Türkiye'deki yatırım, emeklilik (BES), borsa yatırım (BYF) ve girişim sermayesi (GYF) fonlarını listeleme, analiz ve karşılaştırma aracı. Fintables benzeri; veriler TEFAS'ın kamuya açık JSON API'sinden, hisse portföyleri KAP raporlarından gelir.
Canlı demo: fon.yourapiservice.com
/tarama, sunucuda çizilir)/og/fon/KOD.png), JSON-LD; DB'den sitemap.xml, AI tarayıcılarına açık robots.txt, agent'lar için llms.txt. Prod adresi SITE_URL (varsayılan canlı demo)/portfoy?ekle=KOD), simüle et, hedef planla, PDF; kaydırırken üstte kalır/api/v1, OpenAPI: /api/v1/openapi.json) ve AI asistanları için MCP sunucusu (/mcp, Streamable HTTP; araçlar: search_funds, get_fund, funds_holding_stock, compare_funds, run_scan). Kimlik doğrulama yok, CORS açık, IP başına dakikada 60 istek. Belge: /api| Fon detayı | Karşılaştırma |
|---|---|
| Portföyüm | Simülasyon |
| Hisseyi tutan fonlar | |
| Liste | Fon detayı | Karşılaştırma |
|---|---|---|
@astrojs/node) + React 19 adalarıpg), şema: db/schema.sqlnode:test birim testleri/api/funds/fonGnlBlgSiraliGetir, /dagilimSiraliGetirT). Auth ve scraper yokbench tablosu)scripts/ingest.mjs TEFAS + endeks verisini DB'ye çeker, volatiliteyi hesaplar
scripts/holdings.mjs KAP PDF'lerinden hisse portföylerini çıkarır
src/pages/ Astro sayfaları ve API uçları (/api/funds/[tur], /api/holdings)
src/components/ React bileşenleri (FundTable, FundCharts, CompareChart, PortfolioForm, …)
src/lib/ DB sorguları, istatistik (stats.ts), veri sıkıştırma (compact.ts), biçimlendirme
db/schema.sql Veritabanı şeması
e2e/ Playwright senaryoları ve CI için sahte veri (seed.sql)
Gereksinimler: Node 22+, PostgreSQL.
npm i
export DATABASE_URL=postgres://tefas:tefas@localhost/tefas # varsayılan bu
npm run db:init # şema (ingest de otomatik oluşturur)
npm run ingest 400 # ~400 gün geçmiş; TEFAS dk'da 6 istek -> ~15 dk. Tekrar çalıştırınca sadece yeni günleri çeker
npm run dev # http://localhost:4321
npm run ingest'i cron'a koyun.npm run holdings. KAP 429 verdiği için yavaştır, ilk çalıştırma ~30 dk sürer.node scripts/ingest.mjs bench (günlük ingest sonunda otomatik çalışır).| Komut | Açıklama |
|---|---|
npm run dev | Geliştirme sunucusu (4321) |
npm run build / npm start | Üretim derlemesi ve sunucu |
npm run ingest [gün] | TEFAS verisini çek |
npm run ingest -- vol | Volatiliteyi yeniden hesapla |
npm run holdings | KAP hisse portföylerini çek (her rapor holdings_hist geçmişine de yazılır) |
npm run holdings -- gecmis | Fonların bir önceki KAP raporunu indirip geçmişe yaz ("önceki rapora göre değişim" hemen dolsun; bir kez, yavaş) |
npm run stopaj-watch | Resmi Gazete'de yeni fon stopajı kararı ara (aşağıya bakın) |
npm test | Birim testleri (PDF ayrıştırıcı, istatistik) |
npm run test:e2e | Playwright e2e testleri |
Simülasyondaki stopaj sonrası net getiri, alış tarihine göre dönemler ve fon grubu başına oranlardan hesaplanır: taban tablo src/lib/stopaj-rules.mjs, üstüne kaynaklardan otomatik eklenen dönemler (stopaj_rule). Oranlar Cumhurbaşkanı Kararı ile Resmi Gazete'de değişir; kararlar görüntü PDF olduğundan oranlar onları metin olarak yeniden yayımlayan kurumlardan okunur. Anahtar/token gerekmez.
scripts/stopaj-watch.mjs, günlük döngüde otomatik):
stopaj_karar'a yazar (bilinmeyen karar: bekliyor).scripts/stopaj-sources.mjs, öncelik sırasıyla): Ziraat Portföy stopaj tablosu (ana sayfadaki PDF), Garanti BBVA ve Yapı Kredi stopaj duyuruları. Bir kaynak, tablodaki tüm geçmiş dönemlerle tutarlıysa güvenilir sayılır ve yalnız son bilinen dönemden sonraki yeni dönemleri önerebilir. Güvenilir ilk kaynağın yeni dönemi stopaj_rule'a yazılır; güvenilir iki kaynak yeni dönemde ayrışırsa hiçbir şey yazılmaz. Okunamayan/çelişen kaynak atlanır, bayat kaynak zararsızdır.uygulandi; 30 gün içinde kaynaklarda değişiklik çıkmazsa etkisiz (ör. yalnız kurumları ilgilendiren karar) olur.stopaj: önekiyle loglanır (UYGULANDI: ..., ... tablo ile çelişiyor, ... okunamadı). Kaynak sayfası adres/düzen değiştirirse o kaynak "okunamadı" der, diğerleri işe yarar; düzeltme stopaj-sources.mjs'teki ayrıştırıcıdadır.STOPAJ_RULES'a satır eklenebilir; etkisiz olduğu bilinen kararlar REVIEWED'a. İlk çalıştırma Resmi Gazete'de geriye 30 gün tarar (node scripts/stopaj-watch.mjs 200 ile daha fazla)./fonlar/{yat,bes,byf,gyf}: fon listesi/fon/KOD: fon detayı/karsilastir?codes=A&codes=B: en fazla 10 fon; endeks=1 endeks çizgilerini ekler (eski ?codes=A,B biçimi de çalışır)/hisse ve /hisse/TICKER: hisseyi tutan fonlar/portfoy?f=AFT:tl:5000&f=TCD:adet:120: paylaşılabilir portföy, ayrıca localStorage'a kaydedilir/portfoy?ekle=KOD: fonu kayıtlı portföye boş tutarlı satır olarak ekler/simulasyon?codes=AFT&monthly=5000&start=2025-09-21: alım simülasyonu; /bes-simulasyon ve /hedef ile ortak sekme menüsügetBench). Saf hesaplar src/lib/stats.ts içinde.fund_vol tablosuna hesaplanır; liste sorgusu 0,7 sn → 60 ms.src/lib/compact.ts): HTML 2,6 MB → ~0,75 MB (gzip ~145 KB).useDeferredValue ile ertelenir; arka plan işleri nice ile düşük öncelikli çalışır.npm test ayrıştırıcıyı gerçek PDF'lerle sınar.Dockerfile + start.sh: konteyner şemayı hazırlar, ingest'i günlük döngüde arka planda çalıştırır (ilk açılışta ~20 dk backfill) ve web'i 4321 portunda sunar.
| Env | Açıklama |
|---|---|
DATABASE_URL | Zorunlu. Coolify Postgres iç adresi |
SHOW_DISCLAIMER=1 | Opsiyonel. Header'da "yatırım tavsiyesi değildir" uyarısı gösterir; resmi dağıtımda açık, varsayılan kapalı |
UMAMI_SRC, UMAMI_ID | Opsiyonel. İkisi de verilirse Umami (çerezsiz, self-host) script'i yüklenir: UMAMI_SRC=https://umami.ornek.com/script.js, UMAMI_ID=<website id>. Gizlilik sayfası buna göre değişir. Olaylar: fon-aksiyon (tip: pin, karsilastir, portfoy, simulasyon, bes, hedef, pdf), tarama-cip (slug) |
Domain: fon.yourapiservice.com (Cloudflare A kaydı → sunucu IP'si, proxied).
npm test: KAP PDF ayrıştırıcısı ve istatistik fonksiyonları için birim testleri.npm run test:e2e: Playwright (masaüstü ve mobil senaryolar: liste filtre/sıralama/sekme, hisse filtresi, fon detayı, karşılaştırma, /api/holdings). Yerel Postgres verisiyle build alıp 4322 portunda çalıştırır; ilk seferde npx playwright install chromium-headless-shell. Canlıya karşı: E2E_BASE_URL=https://fon.yourapiservice.com npm run test:e2e..github/workflows/e2e.yml her PR'da ve main push'unda Postgres servisi + e2e/seed.sql (sahte veri) ile çalışır.PolyForm Noncommercial 1.0.0 © 2026 Alperen Gözüm
Bu proje ve ürettiği çıktılar (fiyat, getiri, sıralama, grafik, karşılaştırma) yatırım tavsiyesi değildir. Veriler TEFAS, KAP ve Yahoo Finance'ten derlenir; projeye ait değildir ve doğruluğu garanti edilmez. Yatırım kararı vermeden önce resmi kaynakları kontrol edin.
Ayrıntılar: Terms (/terms), Privacy Policy (/privacy-policy) ve LICENSE içindeki "Not Investment Advice; Data Disclaimer" bölümü.