Bu proje, Twitter benzeri bir sosyal medya platformunun backend API'sini içermektedir. Node.js, Express.js ve MongoDB Atlas kullanılarak geliştirilmiştir.
- Kullanıcı yönetimi (kayıt, giriş, profil güncelleme)
- Tweet oluşturma, silme, listeleme
- Tweet beğenme, retweet etme, kaydetme
- Kullanıcı takip etme/takipten çıkma
- Resim yükleme (profil, kapak, tweet resimleri)
- Hashtag ve trend özelliği
- Arama (kullanıcı ve tweet)
- Merkezi hata yönetimi
- Node.js (v14 veya üzeri)
- MongoDB (yerel kurulum veya MongoDB Atlas hesabı)
- Repoyu klonlayın
git clone https://github.com/kullanici-adi/twitter-clone-api.git
cd twitter-clone-api- Bağımlılıkları yükleyin
npm install.envdosyasını oluşturun (örnek olarak env.example dosyasını kullanabilirsiniz)
PORT=5000
# Yerel geliştirme için
MONGODB_URI=mongodb://localhost:27017/twitter-clone
# Üretim ortamı için kendi MongoDB Atlas bağlantı bilgilerinizi kullanın
# MONGODB_URI=mongodb+srv://kullanici:sifre@cluster.mongodb.net/veritabani-ismi
JWT_SECRET=guclu_bir_sifre_kullanin
NODE_ENV=development
-
MongoDB'yi başlatın
- Yerel MongoDB kurulumu kullanıyorsanız:
mongod --dbpath /data/db
- MongoDB Atlas kullanıyorsanız,
.envdosyasındaki bağlantı bilgilerinizi doğru şekilde ayarlayın
-
Uygulamayı başlatın
npm run dev # Geliştirme ortamı için
npm start # Prodüksiyon ortamı içinPOST /api/auth/register- Kayıt olPOST /api/auth/login- Giriş yapGET /api/auth/me- Mevcut kullanıcı bilgilerini getir
GET /api/users/profile/:username- Kullanıcı profilini getirPOST /api/users/follow/:id- Kullanıcıyı takip et/takipten çıkPUT /api/users/update- Profil bilgilerini güncellePUT /api/users/update/profile-picture- Profil fotoğrafını güncellePUT /api/users/update/cover-picture- Kapak fotoğrafını güncelleGET /api/users/followers/:id- Takipçileri getirGET /api/users/following/:id- Takip edilenleri getirGET /api/users/search- Kullanıcı ara
POST /api/tweets- Tweet oluşturDELETE /api/tweets/:id- Tweet silGET /api/tweets- Tweet listesi getirGET /api/tweets/:id- Tek tweet getirPOST /api/tweets/like/:id- Tweet beğen/beğenisini kaldırPOST /api/tweets/retweet/:id- Tweet retweet et/retweet kaldırPOST /api/tweets/bookmark/:id- Tweet kaydet/kaydı kaldırGET /api/tweets/bookmarks/all- Kaydedilen tweetleri getir
GET /api/hashtags/tag/:tag- Belirli bir hashtag ile tweet'leri getirGET /api/hashtags/trends- Trend olan hashtag'leri getir
twitter-clone-api/
├── node_modules/
├── src/
│ ├── controllers/ # İş mantığını içeren controller'lar
│ ├── middlewares/ # Ara yazılımlar
│ ├── models/ # Veritabanı modelleri
│ ├── routes/ # API rotaları
│ ├── utils/ # Yardımcı fonksiyonlar ve sınıflar
│ └── index.js # Ana uygulama dosyası
├── uploads/ # Yüklenen medya dosyaları
├── .env # Ortam değişkenleri
├── env.example # Örnek ortam değişkenleri
├── .gitignore # Git tarafından yok sayılacak dosyalar
├── package.json # Proje bağımlılıkları
└── README.md # Proje dokümantasyonu
Bu API, Render.com üzerinde dağıtılabilir. Bunun için:
- Render.com'da hesap oluşturun
- Yeni bir Web Service ekleyin
- GitHub reposuna bağlanın
- Dağıtım ayarlarını yapılandırın:
- Build Command:
npm install - Start Command:
node src/index.js - Ortam değişkenlerini ekleyin:
MONGODB_URI: MongoDB Atlas bağlantı dizenizJWT_SECRET: JWT token'lar için güvenli bir anahtarNODE_ENV: productionPORT: Render.com tarafından sağlanan port
- Build Command:
Önemli: Hassas bilgilerinizi (MongoDB kullanıcı adı/şifre, JWT anahtarınız) güvende tutmak için bu değerleri daima Render.com'un ortam değişkenleri bölümünden ayarlayın, asla GitHub'a yüklemeyin.
- Node.js
- Express.js
- MongoDB Atlas
- Mongoose
- JWT (JSON Web Tokens)
- Bcrypt
- Multer (Dosya yükleme)
- Express Validator
- Bildirim Sistemi: Kullanıcılar takip edildiğinde, tweetleri beğenildiğinde veya retweet edildiğinde bildirim alabilir.
- Kullanıcı Engelleme: Kullanıcılar diğer kullanıcıları engelleyebilir.
- Anket Oluşturma: Kullanıcılar tweetlerine anket ekleyebilir.
- Mesajlaşma Özelliği: Kullanıcılar arasında özel mesajlaşma sistemi eklenebilir.
- Video Yükleme Desteği: Tweet'lere video yükleme özelliği eklenebilir.
Bu proje MIT lisansı altında lisanslanmıştır - ayrıntılar için LICENSE dosyasına bakın.