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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages