Beyoğlu Belediyesi için tasarlanan, vatandaş kaynaklı yerel olay paylaşım uygulaması konseptinin
çalışan bir web demosu. Harita üzerinde bölgede yaşanan anlık olayları vatandaşların paylaşabildiği
bir "yerel gazetecilik" deneyimi. Konsept notları için bkz. CLAUDE.md; ayrıntılı bug/özellik yol
haritası için bkz. IYILESTIRME-PLANI.md.
Bu bir prototiptir: gerçek e-Devlet/TC Kimlik veya belediye CRM entegrasyonu yoktur, kimlik ve ikamet doğrulaması simüle edilmiştir.
Next.js 16 (App Router, Server Actions) · React 19 · TypeScript · Tailwind CSS v4 · Prisma 7 + SQLite · MapLibre GL (OpenFreeMap vektör tile) · Vitest.
npm install
cp .env.example .env # DATABASE_URL vb. — CollectAPI anahtarı opsiyonel (eczane katmanı)
npx prisma migrate dev # veritabanını oluşturur (ilk kurulumda)
npx prisma db seed # örnek veriyle doldurur
npm run devTarayıcıda http://localhost:3000 adresini açın.
- Giriş (
/giris): Herhangi bir ad + 11 haneli (sahte) bir "TC kimlik no" ile giriş yapılır. Gerçek bir kimlik sorgusu yapılmaz; aynı numarayla tekrar giriş aynı hesaba döner. - Harita (
/): Beyoğlu merkezli harita, aktif olay pin'lerini gösterir. Sol-üstteki panelden kategorilere göre filtreleme yapılır (lejant + göster/gizle). Bir pin'e tıklayınca detay + Doğru / Asılsız oylama açılır; mevcut oyun vurgulanır, aynı oya tekrar dokununca geri alınır, kendi paylaşımında oy verilmez. Aktif olay yoksa bilgilendirme mesajı gösterilir. - Olay Bildir (
/bildir): Kategori seçilir, haritadan konum işaretlenir (Beyoğlu sınırları dışına paylaşım yapılamaz), açıklama yazılır. Yangın/kaza gibi kategorilerde seçim anında pasif bir "112'yi arayın" uyarısı, paylaşım öncesi de bir onay uyarısı çıkar. Yakın zamanda (30 dk içinde, 150 m yakınında) aynı kategoride bir bildirim varsa yeni pin açılmaz, mevcut bildirime teyit eklenir. - Moderasyon (
/moderasyon): Topluluk tarafından yeterince "asılsız" işaretlenen (3+) paylaşımlar otomatik incelemeye düşer; buradan onaylanabilir veya kaldırılabilir. - Paylaşımlar oluşturulduktan 24 saat sonra haritadan otomatik düşer (sorgu zamanında filtrelenir).
- Her paylaşımda "Bu bir vatandaş bildirimidir, belediye tarafından doğrulanmamıştır." ibaresi yer alır.
-
Harita,
tiles.openfreemap.orgüzerinden ücretsiz vektör tile'lar kullanır (API anahtarı gerekmez). -
Beyoğlu ilçe ve mahalle sınırları OpenStreetMap'ten (
admin_level=8, 45 mahalle) türetilir; veripublic/data/beyoglu-mahalleler.geojsoniçindedir. Yeniden üretmek için:node scripts/fetch-mahalle.mjs # OSM Overpass'tan çeker, aynı şemayla dosyayı güncellerSınır dışı alan karartılır (spotlight), yakın pin'ler kümelenir ("+N"), mahalle etiketleri zoom'la ölçeklenip çakışanlar gizlenir. Resmi CBS verisi gelince aynı şema korunarak dosya değiştirilebilir.
npm run dev # geliştirme sunucusu (Turbopack)
npm run lint # ESLint
npx tsc --noEmit # tip kontrolü
npm test # Vitest birim testleri (lib/*.test.ts)rm dev.db
npx prisma migrate dev
npx prisma db seed- Kimlik/ikamet doğrulama, GPS-spoofing tespiti ve belediye CRM entegrasyonu tamamen simülasyondur.
- Fotoğraflar yerel diske (
public/uploads/, gitignore'lu) yazılır; serverless ortamda kalıcı depolama (S3 vb.) gerekir. - Oturum ve moderatör kimlik doğrulaması henüz sertleştirilmemiştir (bkz.
IYILESTIRME-PLANI.md→ B1/B2/B5). Gerçek yayına çıkmadan önce yapılmalıdır.