Skip to content

Repository files navigation

Beyoğlu Anlık (Demo/Prototip)

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.

Teknoloji

Next.js 16 (App Router, Server Actions) · React 19 · TypeScript · Tailwind CSS v4 · Prisma 7 + SQLite · MapLibre GL (OpenFreeMap vektör tile) · Vitest.

Kurulum

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 dev

Tarayıcıda http://localhost:3000 adresini açın.

Nasıl çalışır

  • 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 & sınır verisi

  • 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; veri public/data/beyoglu-mahalleler.geojson içindedir. Yeniden üretmek için:

    node scripts/fetch-mahalle.mjs   # OSM Overpass'tan çeker, aynı şemayla dosyayı günceller

    Sı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.

Geliştirme

npm run dev          # geliştirme sunucusu (Turbopack)
npm run lint         # ESLint
npx tsc --noEmit     # tip kontrolü
npm test             # Vitest birim testleri (lib/*.test.ts)

Veritabanını sıfırlama

rm dev.db
npx prisma migrate dev
npx prisma db seed

Bilinen kısıtlar

  • 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.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages