Skip to content

akatakan/chirpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chirpy - Sosyal Medya API'si

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.

Özellikler

  • 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.

Kullanılan Teknolojiler

  • 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çin godotenv.

API Uç Noktaları (Endpoints)

Genel

  • GET /api/healthz: API servis durumunu kontrol eder.

Kullanıcı İşlemleri

  • 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.

Chirp İşlemleri

  • 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).

Yönetim ve Webhook

  • GET /admin/metrics: Toplam ziyaret sayısını HTML formatında gösterir.
  • POST /admin/reset: Veritabanındaki kullanıcıları temizler (Yalnızca PLATFORM=dev modunda çalışır).
  • POST /api/polka/webhooks: Kullanıcı üyeliğini yükseltmek için kullanılan API anahtarı korumalı uç nokta.

Kurulum

  1. Projeyi klonlayın.
  2. .env dosyası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
  1. Bağımlılıkları yükleyin:
go mod download
  1. Uygulamayı çalıştırın:
go run .

Sunucu varsayılan olarak 8080 portunda çalışmaya başlayacaktır.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors