Skip to content

aakcay5656/chat-sentiment-app

Repository files navigation

💬 Chat Duygu Analizi Uygulaması

Yapay zeka destekli duygu analizi ile gerçek zamanlı sohbet uygulaması. Mesajlar gerçek zamanlı olarak analiz edilerek duygusal ton (Pozitif, Negatif veya Nötr) makine öğrenimi kullanılarak tespit edilir.

Chat App Banner .NET Core React Python Docker


📋 İçindekiler


✨ Özellikler

  • 🔐 Basit Kullanıcı Kaydı - Rumuz tabanlı kimlik doğrulama
  • 💬 Gerçek Zamanlı Mesajlaşma - Anında mesaj gönder ve al
  • 🤖 AI Duygu Analizi - Otomatik duygu tespiti (Pozitif/Negatif/Nötr)
  • 📊 Güven Skorları - AI'ın her analiz için ne kadar emin olduğunu görün
  • 🎨 Modern Arayüz - Gradient arka planlarla responsive tasarım
  • Hızlı & Hafif - Performans için optimize edilmiş
  • 🐳 Docker Desteği - Container'lar ile kolay yayınlama
  • 🔄 Otomatik Yenileme - Mesajlar her 3 saniyede güncellenir

🛠 Teknoloji Yığını

Frontend

  • React 18 - UI kütüphanesi
  • Vite - Build aracı & geliştirme sunucusu
  • Axios - HTTP istemcisi
  • CSS3 - Gradient & animasyonlarla stil

Backend

  • .NET Core 8 - Web API framework
  • Entity Framework Core - ORM
  • SQLite - Gömülü veritabanı
  • ASP.NET Core - RESTful API

AI Servisi

  • Flask - Python web framework
  • Transformers - Hugging Face kütüphanesi
  • DistilBERT - Duygu analizi modeli
  • PyTorch - Derin öğrenme framework

DevOps

  • Docker - Konteynerizasyon
  • Docker Compose - Çoklu konteyner yönetimi
  • Render - Backend & AI barındırma
  • Vercel - Frontend barındırma

🏗 Mimari

┌─────────────┐      HTTP      ┌──────────────┐      HTTP      ┌─────────────┐
│             │  ────────────>  │              │  ────────────>  │             │
│   React     │                 │  .NET Core   │                 │   Flask     │
│  Frontend   │  <────────────  │   Backend    │  <────────────  │ AI Servisi  │
│             │   JSON/REST     │              │   JSON/REST     │             │
└─────────────┘                 └──────────────┘                 └─────────────┘
                                       │
                                       │
                                       ▼
                                ┌──────────────┐
                                │   SQLite     │
                                │  Veritabanı  │
                                └──────────────┘

İş Akışı:

  1. Kullanıcı React frontend üzerinden mesaj gönderir
  2. Frontend .NET Core API'yi çağırır
  3. Backend mesajı SQLite'a kaydeder
  4. Backend mesajı Flask AI servisine gönderir
  5. AI, DistilBERT modelini kullanarak duygu analizi yapar
  6. Duygu analizi sonucu veritabanına kaydedilir
  7. Frontend mesajı duygu etiketi ile gösterir

🚀 Başlangıç

Gereksinimler

  • Node.js 18+ ve npm
  • .NET SDK 8.0+
  • Python 3.10+
  • Docker (opsiyonel)
  • Git

Kurulum

1️⃣ Depoyu Klonlayın

git clone https://github.com/aakcay5656/chat-sentiment-app.git
cd chat-sentiment-app

2️⃣ AI Servisini Kurun

cd ai-service

# Virtual environment oluştur
python -m venv venv

# Aktifleştir (Windows)
.\venv\Scripts\activate

# Aktifleştir (Linux/Mac)
source venv/bin/activate

# Bağımlılıkları yükle
pip install -r requirements.txt

# AI servisini çalıştır
python app.py

AI Servisi şu adreste çalışır: http://localhost:8000

3️⃣ Backend'i Kurun

cd backend/ChatSentimentApp

# Bağımlılıkları yükle
dotnet restore

# Backend'i çalıştır
dotnet run

Backend şu adreste çalışır: http://localhost:5058

4️⃣ Frontend'i Kurun

cd frontend

# Bağımlılıkları yükle
npm install

# Geliştirme sunucusunu çalıştır
npm run dev

Frontend şu adreste çalışır: http://localhost:5173

5️⃣ Uygulamayı Açın

Ziyaret edin: http://localhost:5173


🐳 Docker ile Çalıştırma

Seçenek 1: Ayrı Servisler

# AI Servisini Build Et
cd ai-service
docker build -t chat-sentiment-ai .
docker run -p 8000:10000 -e PORT=10000 chat-sentiment-ai

# Backend'i Build Et
cd backend/ChatSentimentApp
docker build -t chat-sentiment-backend .
docker run -p 5000:10000 -e PORT=10000 -e AI_SERVICE_URL=http://localhost:8000/analyze chat-sentiment-backend

# Frontend'i Build Et
cd frontend
docker build --build-arg VITE_API_URL=http://localhost:5058/api/chat -t chat-sentiment-frontend .
docker run -p 3000:80 chat-sentiment-frontend

Seçenek 2: Docker Compose

# Tüm servisleri çalıştır
docker-compose up

# Arka planda çalıştır
docker-compose up -d

# Tüm servisleri durdur
docker-compose down

Erişim: http://localhost:3000


📡 API Dokümantasyonu

Base URL

http://localhost:5058/api/chat

Endpoint'ler

1. Kullanıcı Kaydı

POST /api/chat/register
Content-Type: application/json

{
  "username": "ahmet"
}

Cevap:

{
  "id": 1,
  "username": "ahmet",
  "createdAt": "2025-10-09T12:00:00Z"
}

2. Mesaj Gönder

POST /api/chat/messages
Content-Type: application/json

{
  "username": "ahmet",
  "content": "Bu harika bir gün!"
}

Cevap:

{
  "id": 1,
  "username": "ahmet",
  "content": "Bu harika bir gün!",
  "sentiment": "POSITIVE",
  "confidence": 0.9998,
  "createdAt": "2025-10-09T12:00:00Z"
}

3. Mesajları Getir

GET /api/chat/messages?limit=50

Cevap:

[
  {
    "id": 1,
    "username": "ahmet",
    "content": "Bu harika bir gün!",
    "sentiment": "POSITIVE",
    "confidence": 0.9998,
    "createdAt": "2025-10-09T12:00:00Z"
  }
]

AI Servisi API

Duygu Analizi

POST /analyze
Content-Type: application/json

{
  "text": "Bugün çok mutluyum!"
}

Cevap:

{
  "sentiment": "POSITIVE",
  "confidence": 0.9995
}

📁 Proje Yapısı

chat-sentiment-app/
├── frontend/                   # React frontend
│   ├── src/
│   │   ├── App.jsx            # Ana bileşen
│   │   ├── App.css            # Stiller
│   │   └── services/
│   │       └── api.js         # API çağrıları
│   ├── Dockerfile
│   ├── nginx.conf
│   └── package.json
│
├── backend/                    # .NET Core backend
│   └── ChatSentimentApp/
│       ├── Controllers/
│       │   └── ChatController.cs
│       ├── Data/
│       │   └── ChatDbContext.cs
│       ├── Models/
│       │   └── Message.cs
│       ├── Program.cs
│       ├── Dockerfile
│       └── ChatSentimentApp.csproj
│
├── ai-service/                 # Python AI servisi
│   ├── app.py                 # Flask API
│   ├── requirements.txt
│   └── Dockerfile
│
├── docker-compose.yml         # Çoklu konteyner kurulumu
└── README.md                  # Bu dosya

🌐 Yayınlama

AI Servisi (Render)

  1. Kodu GitHub'a push edin
  2. Render'da yeni Web Service oluşturun
  3. Repository seçin: ai-service/
  4. Runtime: Docker
  5. Deploy edin

Backend (Render)

  1. Yeni Web Service oluşturun
  2. Repository seçin: backend/ChatSentimentApp/
  3. Runtime: Docker
  4. Environment variable ekleyin:
    • AI_SERVICE_URL: https://ai-servisiniz.onrender.com/analyze
  5. Deploy edin

Frontend (Vercel)

cd frontend
npm install -g vercel
vercel login
vercel --prod

Veya GitHub deposunu Vercel dashboard'una bağlayın.


🤝 Katkıda Bulunma

Katkılar memnuniyetle karşılanır! Lütfen şu adımları izleyin:

  1. Projeyi fork edin
  2. Feature branch'inizi oluşturun (git checkout -b feature/HarikaOzellik)
  3. Değişikliklerinizi commit edin (git commit -m 'Harika özellik eklendi')
  4. Branch'inizi push edin (git push origin feature/HarikaOzellik)
  5. Pull Request açın

📝 Lisans

Bu proje MIT Lisansı altında lisanslanmıştır


🙏 Teşekkürler


📌 Notlar

  • Ücretsiz seviye kısıtlamaları: Render servisleri 15 dakika aktivite olmadığında uyuyabilir
  • İlk istek: AI servisi ilk istekte 30-60 saniye sürebilir (model yükleme)
  • Veritabanı: Basitlik için SQLite kullanılmıştır; production için PostgreSQL düşünün
  • Güvenlik: Production kullanımı için authentication ve rate limiting ekleyin