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