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.
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
Projeyi yerel ortamınızda çalıştırmak için aşağıdaki adımları izleyebilirsiniz.
- Go 1.24+
- Docker & Docker Compose
- Make (Opsiyonel, komutları kolaylaştırmak için)
-
Repoyu klonlayın:
git clone https://github.com/kullaniciadim/kuzgun.git cd kuzgun/backend -
Gerekli bağımlılıkları yükleyin:
go mod download
-
Veritabanını başlatın (Docker ile):
make docker-run
-
Uygulamayı başlatın:
make run
Sunucu varsayılan olarak
http://localhost:8080(veya.envdosyasında belirtilen portta) çalışacaktır.
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. |
Servis, RESTful mimariye uygun olarak tasarlanmıştır.
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.
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.
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.
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.
GET /ws: Gerçek zamanlı mesajlaşma için WebSocket bağlantı noktası. (Token query parametresi ile gönderilmelidir:?token=...).
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ı