Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎟️ Ticketix

Modern Etkinlik Keşif, Rezervasyon ve Dijital Bilet Platformu

Ticketix; kullanıcıların etkinlikleri keşfedebildiği, filtreleyebildiği, bilet satın alabildiği, PNR tabanlı dijital biletlerini görüntüleyebildiği ve yapay zekâ destekli etkinlik önerileri alabildiği kapsamlı bir etkinlik platformudur.

Proje; ASP.NET Core 8, Onion Architecture, CQRS, MediatR, Entity Framework Core, ASP.NET Core Identity, JWT, SignalR, OpenAI ve Tavily API teknolojileri kullanılarak geliştirilmiştir.


✨ Öne Çıkan Özellikler

  • 🔐 ASP.NET Core Identity ile kullanıcı kayıt, giriş ve rol yönetimi
  • 🎫 Etkinlik listeleme, detay görüntüleme ve dinamik filtreleme
  • 🔍 Specification Pattern ile kategori ve etkinlik filtreleri
  • 🧾 Rezervasyon ve çoklu bilet satın alma sistemi
  • 🎟️ Her bilet için benzersiz PNR kodu oluşturma
  • 👤 Kullanıcı profili, geçmiş ve yaklaşan biletlerin görüntülenmesi
  • 📧 MailKit ile tasarımlı HTML dijital bilet gönderimi
  • 🤖 OpenAI destekli ruh haline göre etkinlik öneren chatbot
  • ⚡ SignalR ile gerçek zamanlı AI sohbet deneyimi
  • 🔎 Tavily API ile admin tarafında güncel etkinlik keşfi
  • 📝 Blog ve iletişim mesajı yönetimi
  • 👥 Kullanıcı ve rol yönetimi
  • ⚙️ Kapsamlı admin paneli
  • 🚫 401, 403 ve 404 özel hata sayfaları

🏗️ Mimari

Proje Onion Architecture yaklaşımıyla katmanlara ayrılmıştır.

Ticketix
│
├── Core
│   ├── Ticketix.Domain
│   └── Ticketix.Application
│
├── Infrastructure
│   ├── Ticketix.Persistence
│   └── Ticketix.Infrastructure
│
└── Presentation
    ├── TicketixWebAPI
    └── Ticketix.WebUI

Katmanların Sorumlulukları

Domain

  • Entity yapıları
  • Uygulamanın temel domain modelleri

Application

  • CQRS
  • MediatR
  • Commands / Queries / Handlers
  • Interfaces
  • Specifications
  • Validators
  • Mappings

Persistence

  • Entity Framework Core
  • SQL Server
  • DbContext
  • Generic Repository
  • Özel repository'ler
  • Identity entegrasyonu

Infrastructure

  • JWT servisi
  • OpenAI servisi
  • Tavily servisi
  • Mail servisi

Web API

  • RESTful endpointler
  • JWT Authentication
  • Authorization
  • MediatR ve CQRS işlemleri

WebUI

  • ASP.NET Core MVC
  • Razor Views
  • Admin Area
  • Cookie Authentication
  • SignalR Hub
  • API tüketimi

WebUI doğrudan veritabanına erişmez; backend işlemleri Web API üzerinden gerçekleştirilir.


🎟️ Rezervasyon, Ticket ve PNR Sistemi

Ticketix'te satın alma işlemi Booking, satın alma sonucunda oluşan her tekil bilet ise ayrı bir Ticket kaydıdır.

Bir kullanıcı aynı etkinlikten 3 bilet aldığında:

Booking #25
├── Ticket #41 → PNR: A91BC72F
├── Ticket #42 → PNR: F82DA103
└── Ticket #43 → PNR: 71CA992B

Her Ticket için benzersiz bir PNR kodu oluşturulur.

Satın alma sırasında:

Etkinlik Seçimi
      ↓
Bilet Sayısı
      ↓
Booking Oluşturma
      ↓
Kontenjan Güncelleme
      ↓
Ticket Kayıtları
      ↓
Benzersiz PNR
      ↓
Dijital Bilet
      ↓
E-Posta

Bilet detayında:

  • Etkinlik bilgileri
  • Tarih ve saat
  • Mekan ve şehir
  • Bilet sahibi
  • Kullanıcı adı
  • Ticket numarası
  • PNR kodu
  • Satın alma fiyatı
  • Bilet durumu

görüntülenir.

Kullanıcı yalnızca kendisine ait biletleri görüntüleyebilir.


📧 Dijital Bilet E-Postası

Rezervasyon tamamlandıktan sonra bilet bilgileri kullanıcıya tasarımlı HTML e-posta olarak gönderilir.

E-posta sistemi:

  • MailKit
  • MimeKit
  • SMTP

üzerinden çalışır.

Dijital bilet içerisinde etkinlik bilgileri, kullanıcı bilgileri, TicketId, PNR ve fiyat bilgileri bulunur.


🤖 AI Entegrasyonları

Mood-Based Event Chatbot

OpenAI ve SignalR kullanılarak geliştirilen chatbot yalnızca giriş yapmış kullanıcılara görünür.

Kullanıcının ruh halini ve isteğini yorumlayarak Ticketix içerisinde gerçekten bulunan etkinlikler arasından uygun öneriler sunar.

Örnek:

"Bugün biraz bunalmış ve yorgun hissediyorum.
Çok kalabalık olmayan, kafa dağıtabileceğim
bir etkinlik arıyorum."

Akış:

Kullanıcı
    ↓
SignalR
    ↓
ChatHub
    ↓
Web API
    ↓
MediatR
    ↓
Mevcut Event Verileri + Kullanıcı Mesajı
    ↓
OpenAI
    ↓
Canlı Etkinlik Önerisi

AI:

  • Bilet satın almaz
  • Rezervasyon oluşturmaz
  • Rezervasyon iptal etmez
  • Veritabanında değişiklik yapmaz

Yalnızca öneri ve bilgilendirme amacıyla kullanılır.

Tavily Event Discovery

Admin panelinde Tavily Search API kullanılarak internet üzerindeki güncel etkinlik kaynakları araştırılabilir.

Sonuçlarda:

  • Başlık
  • İçerik özeti
  • Kaynak URL
  • Eşleşme skoru

görüntülenir.

Admin, bulunan kaynağı inceleyebilir ve yeni etkinlik oluşturma ekranına geçebilir.


🔐 Authentication & Authorization

Projede API ve MVC tarafında iki bağlantılı authentication sistemi kullanılmaktadır.

WebUI
   ↓
Cookie Authentication
   ↓
JWT Access Token
   ↓
Web API
   ↓
JWT Bearer Authentication

Kullanıcı login olduğunda API tarafından oluşturulan JWT, WebUI tarafında access_token claim'i olarak saklanır.

Korunan API isteklerinde JWT:

Authorization: Bearer <token>

olarak gönderilir.

ASP.NET Core Identity ile:

  • Kullanıcı yönetimi
  • IdentityRole
  • Kullanıcıya rol atama
  • Admin yetkilendirmesi

sağlanır.

Admin alanları rol bazlı authorization ile korunur.


⚙️ Admin Panel

Admin paneli üzerinden sistemin temel içerikleri yönetilebilir.

Yönetilebilir Alanlar

  • Etkinlikler
  • Kategoriler
  • Tavily etkinlik önerileri
  • Rezervasyonlar
  • Biletler
  • Blog içerikleri
  • Kullanıcılar
  • Roller
  • İletişim mesajları
  • Hero alanı
  • Feature alanları
  • Home CTA

Admin paneli üzerinden yalnızca CRUD işlemleri değil; rezervasyon durumları, kullanıcı rolleri ve dinamik anasayfa içerikleri de yönetilebilir.


🧩 Kullanılan Yaklaşımlar

  • Onion Architecture
  • CQRS
  • MediatR
  • Generic Repository Pattern
  • Specification Pattern
  • Dependency Injection
  • Interface Abstraction
  • AutoMapper
  • FluentValidation
  • Global Exception Middleware
  • Async / Await
  • LINQ
  • RESTful API
  • Role-Based Authorization

🛠️ Kullanılan Teknolojiler

Backend

  • .NET 8
  • ASP.NET Core Web API
  • ASP.NET Core MVC
  • C#
  • Entity Framework Core
  • SQL Server
  • ASP.NET Core Identity
  • JWT Authentication
  • Cookie Authentication
  • MediatR
  • AutoMapper
  • FluentValidation
  • SignalR
  • MailKit
  • MimeKit

AI & External Services

  • OpenAI API
  • Tavily Search API
  • SMTP

Frontend

  • Razor Views
  • ViewComponents
  • HTML5
  • CSS3
  • JavaScript
  • Responsive Design

Development

  • JetBrains Rider
  • Swagger / OpenAPI
  • Git
  • GitHub

📸 Proje Görselleri

🔐 Login & Register


🏠 Anasayfa


🤖 AI Chatbot


🎫 Anasayfa Etkinlik Alanı

Giriş Yapılmadan


🎟️ Etkinlikler

Etkinlik Listesi

Giriş Yapılmadan

Etkinlik Filtreleme

Etkinlik Detayı


👤 Profil Sayfası


🎫 Bilet Detay ve Dijital Bilet Maili


📝 Blog


📩 İletişim


⚠️ Hata Sayfaları

401 — Unauthorized

403 — Forbidden

404 — Not Found


⚙️ Admin Panel Görselleri

🎫 Etkinlik Yönetimi

Etkinlik Listesi

Etkinlik Güncelleme


🔎 Tavily Etkinlik Önerileri


🗂️ Kategori Yönetimi


🧾 Rezervasyon Yönetimi


📝 Blog Yönetimi

Blog Listesi

Blog Güncelleme


📩 Mesaj Yönetimi


👥 Kullanıcı ve Rol Yönetimi

Kullanıcı Listesi

Rol Atama


🏠 Hero Yönetimi

Hero

Hero Güncelleme


✨ Feature Yönetimi


📣 Home CTA Yönetimi

About

Ticketix; ASP.NET Core ile geliştirilen, etkinlik keşfi, rezervasyon, PNR tabanlı dijital biletleme, yapay zekâ destekli etkinlik önerileri ve kapsamlı admin yönetimi sunan modern bir etkinlik platformudur.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages