Skip to content

ferdiunal/kuzgun-chat-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kuzgun Backend

Kuzgun chat uygulaması için Go (Golang) ile geliştirilmiş backend servisi. Bu proje; kullanıcı yönetimi, mesajlaşma ve kişi listesi gibi temel fonksiyonları sağlayan bir API sunar.

🚀 Teknolojiler

Proje geliştirilirken aşağıdaki teknolojiler ve kütüphaneler kullanılmıştır:

  • Dil: Go (Golang)
  • Web Framework: Fiber - Hızlı ve Express.js benzeri web framework'ü.
  • ORM: Ent - Tip güvenli entity framework'ü.
  • Veritabanı: PostgreSQL
  • Gerçek Zamanlı İletişim: WebSocket
  • Kimlik Doğrulama: JWT (JSON Web Tokens)
  • Konteynerizasyon: Docker

🛠 Kurulum ve Başlangıç

Projeyi yerel ortamınızda çalıştırmak için aşağıdaki adımları izleyebilirsiniz.

Gereksinimler

  • Go 1.24+
  • Docker & Docker Compose
  • Make (Opsiyonel, komutları kolaylaştırmak için)

Kurulum Adımları

  1. Repoyu klonlayın:

    git clone https://github.com/kullaniciadim/kuzgun.git
    cd kuzgun/backend
  2. Gerekli bağımlılıkları yükleyin:

    go mod download
  3. Veritabanını başlatın (Docker ile):

    make docker-run
  4. Uygulamayı başlatın:

    make run

    Sunucu varsayılan olarak http://localhost:8080 (veya .env dosyasında belirtilen portta) çalışacaktır.

📜 Kullanılabilir Komutlar (Makefile)

Proje, geliştirme süreçlerini hızlandırmak için Makefile kullanır. Mevcut komutlar şunlardır:

Komut Açıklama
make all Testleri çalıştırır ve projeyi derler.
make build Uygulamayı derler (bin/backend oluşturur).
make run Uygulamayı çalıştırır.
make docker-run PostgreSQL veritabanı konteynerini başlatır.
make docker-down PostgreSQL konteynerini durdurur ve siler.
make test Birim testlerini (Unit Tests) çalıştırır.
make itest Entegrasyon testlerini (Integration Tests) çalıştırır.
make watch Kod değişikliklerini izler ve uygulamayı otomatik olarak yeniden başlatır (Air gerektirir).
make clean Derleme dosyalarını temizler.

🔌 API Endpoint'leri

Servis, RESTful mimariye uygun olarak tasarlanmıştır.

Kimlik Doğrulama (Auth)

  • POST /auth/register: Yeni kullanıcı kaydı.
  • POST /auth/login: Kullanıcı girişi (Token döner).
  • POST /auth/logout: Çıkış işlemi.
  • GET /auth/me: Giriş yapmış kullanıcının bilgilerini getirir.

Kullanıcı İşlemleri (Users)

  • GET /users/:id: Kullanıcı detaylarını getirir.
  • GET /users/search?q=...: Kullanıcı arama.
  • PUT /users/:id: Kullanıcı bilgilerini günceller.
  • DELETE /users/:id: Kullanıcıyı siler.
  • PATCH /users/:id: Kullanıcı durumunu (aktif/pasif) değiştirir.

Mesajlaşma (Chat)

  • GET /messages/conversations: Kullanıcının sohbet geçmişini listeler.
  • GET /messages/:contactId: Belirli bir kişiyle olan mesaj geçmişini getirir.

Kişiler (Contacts)

  • GET /contacts: Kişi listesini getirir.
  • POST /contacts: İsteği gönder/kişi ekle.
  • PATCH /contacts/:id/accept: Kişi isteğini kabul et.
  • PATCH /contacts/:id/block: Kişiyi engelle.

WebSocket

  • GET /ws: Gerçek zamanlı mesajlaşma için WebSocket bağlantı noktası. (Token query parametresi ile gönderilmelidir: ?token=...).

📁 Proje Yapısı

backend/
├── cmd/            # Uygulama giriş noktası (main.go)
├── ent/            # Ent ORM tarafından oluşturulan şema ve kodlar
├── internal/       # Uygulama mantığı (Domain, Service, Repository vb.)
│   ├── server/     # HTTP sunucusu ve route tanımları
│   ├── domain/     # İş mantığı (User, Chat vb. modüller)
│   └── websocket/  # WebSocket yönetim modülü
├── Dockerfile      # Docker imaj dosyası
├── Makefile        # Yardımcı komutlar
└── go.mod          # Go bağımlılık dosyası

About

Kuzgun chat uygulaması için Go (Golang) ile geliştirilmiş backend servisi. Bu proje; kullanıcı yönetimi, mesajlaşma ve kişi listesi gibi temel fonksiyonları sağlayan bir API sunar.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors