Chirpy, Go dili kullanılarak geliştirilmiş, kullanıcıların kısa mesajlar (chirps) paylaşmasına, üyeliklerini yönetmesine ve kimlik doğrulama işlemlerini gerçekleştirmesine olanak tanıyan bir backend API projesidir.
- Kullanıcı Yönetimi: Kayıt olma, giriş yapma ve profil bilgilerini (e-posta/şifre) güncelleme işlemleri.
- Chirp İşlemleri: Mesaj oluşturma, tüm mesajları listeleme, ID ile mesaj sorgulama ve mesaj silme.
- Kimlik Doğrulama (Auth): JWT (JSON Web Token) tabanlı erişim kontrolü ve "Refresh Token" mekanizması ile güvenli oturum yönetimi.
- Yönetici Paneli: Uygulama trafik istatistiklerini (metrics) görüntüleme ve veritabanı sıfırlama (geliştirme modunda).
- Webhook Desteği: Polka entegrasyonu ile kullanıcıların "Chirpy Red" üyeliğine yükseltilmesi.
- Dil: Go (v1.25.1)
- Veritabanı: PostgreSQL (pg driver ile)
- Kimlik Doğrulama: JWT (golang-jwt/jwt/v5) ve Argon2id (şifre hashleme)
- Diğer: UUID yönetimi için
google/uuid, ortam değişkenleri içingodotenv.
GET /api/healthz: API servis durumunu kontrol eder.
POST /api/users: Yeni kullanıcı kaydı oluşturur.POST /api/login: Kullanıcı girişi yapar ve JWT/Refresh Token döndürür.PUT /api/users: Kullanıcı bilgilerini günceller (JWT gereklidir).POST /api/refresh: Refresh token kullanarak yeni bir erişim tokenı oluşturur.POST /api/revoke: Refresh tokenı iptal eder.
GET /api/chirps: Tüm paylaşılan mesajları listeler.GET /api/chirps/{id}: Belirli bir mesajın detaylarını getirir.POST /api/chirps: Yeni bir mesaj oluşturur (JWT gereklidir, max 140 karakter).DELETE /api/chirps/{id}: Belirli bir mesajı siler (Yalnızca mesajın sahibi silebilir).
GET /admin/metrics: Toplam ziyaret sayısını HTML formatında gösterir.POST /admin/reset: Veritabanındaki kullanıcıları temizler (YalnızcaPLATFORM=devmodunda çalışır).POST /api/polka/webhooks: Kullanıcı üyeliğini yükseltmek için kullanılan API anahtarı korumalı uç nokta.
- Projeyi klonlayın.
.envdosyasını oluşturun ve aşağıdaki değişkenleri tanımlayın:
DB_URL=postgres://kullanici:sifre@localhost:5432/chirpy_db?sslmode=disable
TOKEN_SECRET=gizli_jwt_anahtariniz
PLATFORM=dev
POLKA_KEY=polka_webhook_anahtariniz
- Bağımlılıkları yükleyin:
go mod download
- Uygulamayı çalıştırın:
go run .
Sunucu varsayılan olarak 8080 portunda çalışmaya başlayacaktır.