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.
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ı |
- 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 (
verialanı =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 (
SaltOkunurKalkantüm girdileri kilitler). - Gömülü/örnek "vitrin" verisi yoktur; her hesap boş başlar ve hattını sıfırdan kurar.
Ü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.
- 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
Next.js 16.2 (App Router + Turbopack) · React 19 · Tailwind v4 · TypeScript 5.9 · Firebase 12 (Firestore + Auth, istemci) + firebase-admin (sunucu) · iyzico · Vercel.
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)
npm install
npm run dev # http://localhost:3000
npm run build # production derleme
npm run lint # ESLintFirebase + 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.