Skip to content

Repository files navigation

RaySim — Demiryolu Ağı Simülasyon Sistemi

Web tabanlı, çok-kiracılı demiryolu ağı simülasyon platformu. Bir hattı kurar (duraklar, mesafeler, makas/hemzemin/tehlike kısıtları), çift şeritli canlı sefer simülasyonuyla gerçek zamanlı işletir, sabit blok sinyalizasyonunu ve kapasiteyi teşhis eder, baskıya hazır teknik rapor üretir. Her hesap kendi hatlarını sıfırdan kurar.

Canlı: https://raysim.vercel.app

📖 Teknik dokümantasyon: docs/README.md — mimari, fizik motoru, sinyalizasyon, kapasite yöntemleri, veri modeli, güvenlik kuralları, dağıtım.


Akış — KUR → ANALİZ → BELGELE

Sayfa sırası bir mühendislik iş akışını izler; üstte faz göstergesi ilerlemeyi gösterir.

Faz Modül Kod İçerik
KUR Durak Arası Ringler SR-0001 Duraklar & mesafeler · durak-arası hücreler · makas/hemzemin/tehlike kısıtları · worst/best · loop (çevrim)
ANALİZ Sefer Simülasyonu SR-0002 Canlı çift-şerit ağ · fizik · headway · sabit blok sinyalizasyon · gecikme robustluğu
ANALİZ Sistem Merkezi SR-0003 Parametreler · canlı durum · Sperrzeitentreppe · blocking-time · teşhis
BELGELE Teknik Belgeler SR-0004 Ücretli PDF rapor · düzenlenebilir Word/Excel tasarım el kitabı

Hesap modeli — anonim, çok-kiracılı

  • Self-servis kayıt (Firebase Auth, e-posta/şifre). Fabrika/varsayılan şifre yoktur; herkes kendi hesabını açar.
  • Hesap başına birden çok proje (hat). Her proje Firestore'da tek bir JSON bloğu (veri alanı = ProjeVerisi { rings, cfg, meta, arac, isletme }) olarak saklanır; düzenlerken debounce'lu otomatik kayıt çalışır.
  • İzolasyon: Firestore güvenlik kuralları her belgeyi sahibinin uid'ine bağlar; bir hesap başka hesabın verisini okuyamaz/yazamaz.
  • Salt-okunur paylaşım linki: proje sahibi paylaşımı açınca herkes hattı görüntüler ama düzenleyemez (SaltOkunurKalkan tüm girdileri kilitler).
  • Gömülü/örnek "vitrin" verisi yoktur; her hesap boş başlar ve hattını sıfırdan kurar.

Krediler & ödeme

Ücretli eylemler önceden alınan krediden düşülür. Fiyatlar sunucuda tek kaynaktan (src/lib/cuzdan.ts) sabittir; istemci fiyat/kredi yollayamaz.

  • Bedeller: PDF teknik rapor = 10 kredi, yeni hat oluşturma = 1 kredi.
  • Paketler (KDV dâhil): Başlangıç 10 kr / 200₺ · Standart 50 kr / 850₺ · Profesyonel 100 kr / 1500₺ (1 kredi tabanı ≈ 20₺; hacimde ucuzlar).
  • Ödeme: iyzico Checkout Form, sayfa içi gömülü modal (kullanıcı ödemeden de vazgeçip dönebilir). Kredi düşümü ve rapor üretimi sunucuda yapılır.

Teknik çekirdek

  • Canlı simülasyon: çift şeritli (gidiş/dönüş) gerçek zamanlı sefer, sabit blok 3-fener sinyalizasyon, sevkçi blok arızası, parklanma (depo) servisi
  • Fizik: Davis direnci, eğim, P/v çekiş sınırı, önden fren eğrisi
  • Sinyalizasyon: sabit blok, makas bölgesi kısıtları, tren-boyu işgal
  • Kapasite & robustluk: blocking-time (6 bileşen), UIC 406 doluluk, Monte-Carlo gecikme yayılımı (histogram + yayılım şeridi)
  • Rapor: amblemli kapak + KPI kartları + hat şeması + blocking-time grafiği; site ile aynı tipografi (Geist gövde, Spectral başlık), baskıya hazır A4

Yığın

Next.js 16.2 (App Router + Turbopack) · React 19 · Tailwind v4 · TypeScript 5.9 · Firebase 12 (Firestore + Auth, istemci) + firebase-admin (sunucu) · iyzico · Vercel.

Proje düzeni

src/
  app/                 # App Router sayfaları + /api rotaları
    api/
      proje/           # ilk / olustur — hat oluşturma (kredi düşer)
      rapor/           # ücretli PDF rapor üretimi (kredi düşer)
      kredi/dus/       # sunucu-otoriteli kredi düşümü
      odeme/           # baslat / callback — iyzico
  components/          # AppShell, RingEditor, Studio, Belgeler, sağlayıcılar…
  lib/
    anaray/            # ÇEKİRDEK: fizik, sinyal, sefer simülasyonu, kapasite, rapor, tipler
    projeler.ts        # çok-kiracılı Firestore CRUD + paylaşım
    cuzdan*.ts          # kredi cüzdanı (istemci + sunucu-otoriteli)
    iyzico.ts          # ödeme entegrasyonu
    firebaseAdmin.ts   # sunucu tarafı Firebase (Admin SDK, lazy)

Geliştirme

npm install
npm run dev     # http://localhost:3000
npm run build   # production derleme
npm run lint    # ESLint

Firebase + iyzico yapılandırması .env.local içinde (.env.example şablonundan). Kredi/ödeme/rapor uçları için FIREBASE_SERVICE_ACCOUNT (hizmet hesabı JSON'u) gerekir; tanımsızsa bu uçlar 503 döner ve uygulama salt-okunur çekirdek olarak çalışır.

About

RaySim — Demiryolu ağı simülasyon sistemi: hat kurma, canlı çift-şeritli sefer simülasyonu, sabit blok sinyalizasyon, kapasite/blocking-time teşhisi ve kurumsal rapor üretimi.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages