Modern bir Medium.com klonu - Flutter, Node.js ve MongoDB ile geliştirilmiş güçlü bir blog platformu
Bu proje, kullanıcıların makale okuyup paylaşabileceği, kişisel profillerini yönetebileceği ve zengin içerik editörü ile makale yazabileceği modern bir blog platformudur. Uygulama Flutter ile geliştirilmiş olup, arka planda Node.js ve MongoDB kullanmaktadır. Ayrıca kapsamlı bir admin paneli ve tema yönetim sistemi içermektedir.
- JWT tabanlı güvenli kullanıcı girişi ve kaydı
- Şifre sıfırlama ve unutma işlemleri
- Oturum yönetimi ve otomatik çıkış
- Rol tabanlı yetkilendirme (Kullanıcı/Admin)
- Rich Text Editor: Flutter Quill ile gelişmiş makale editörü
- Görsel Upload: Makale ve profil fotoğrafı yükleme
- Kategori Sistemi: Makale kategorilendirme ve filtreleme
- Kaydetme: Makaleleri daha sonra okumak üzere kaydetme
- Makale Düzenleme: Yazılan makaleleri düzenleme
- Kullanıcı Profilleri: Detaylı profil sayfaları ve düzenleme
- Takip Sistemi: Yazarları takip etme
- Yorum Sistemi: Makalelere yorum yapma
- Önerilen Kullanıcılar: Takip edilebilecek yazarlar
- 8 Farklı Tema: Light, Dark, Retro, Arctic Blue, Coral Sand, Soft Nature ve daha fazlası
- Dinamik Tema Değiştirme: Anlık tema geçişleri
- Responsive Design: Tüm cihazlarda uyumlu tasarım
- Admin Tema Yönetimi: Yöneticiler tarafından özel tema oluşturma
- Dashboard: Kullanıcı ve makale istatistikleri
- Kullanıcı Yönetimi: Kullanıcı listesi ve yönetimi
- Kategori Yönetimi: Kategori ekleme/düzenleme/silme
- Tema Yönetimi: Özel tema oluşturma ve düzenleme
- Raporlama: Detaylı analitik raporlar
- İçerik Moderasyonu: Şikayet ve rapor yönetimi
- En popüler makaleler
- En aktif yazarlar
- Kategori bazlı istatistikler
- Toplam kullanıcı ve makale sayıları
- En çok okunan makaleler
- Flutter: 3.7.0
- Dart: 3.7.0
- Provider: State management
- HTTP: API istekleri
- Flutter Quill: Rich text editor
- FL Chart: Grafik ve istatistikler
- Shared Preferences: Yerel veri saklama
- Image Picker: Görsel seçme ve yükleme
- Node.js & Express.js: Server framework
- MongoDB & Mongoose: Veritabanı
- JWT: Token tabanlı kimlik doğrulama
- bcryptjs: Şifre hashleme
- Multer: Dosya yükleme
- Nodemailer: E-posta gönderimi
- CORS: Cross-origin istekler
MediumCloneApp/
├── frontend/
│ ├── lib/
│ │ ├── components/ # UI bileşenleri
│ │ │ ├── article_card.dart
│ │ │ ├── comment_sheet.dart
│ │ │ ├── html_editor.dart
│ │ │ └── ...
│ │ ├── screens/ # Uygulama ekranları
│ │ │ ├── home_screen.dart
│ │ │ ├── admin_home_screen.dart
│ │ │ ├── article_detail_screen.dart
│ │ │ ├── profile_screen.dart
│ │ │ ├── reports/ # Admin raporları
│ │ │ └── ...
│ │ ├── services/ # API servisleri
│ │ ├── providers/ # State management
│ │ ├── theme/ # Tema dosyaları
│ │ │ ├── app_theme.dart
│ │ │ ├── theme_light.dart
│ │ │ ├── theme_dark.dart
│ │ │ └── ...
│ │ └── utils/ # Yardımcı fonksiyonlar
│ ├── assets/ # Statik dosyalar
│ └── pubspec.yaml # Flutter bağımlılıkları
│
├── backend/
│ ├── models/ # Veritabanı modelleri
│ │ ├── Users.js
│ │ ├── Article.js
│ │ ├── Category.js
│ │ ├── Comment.js
│ │ └── ...
│ ├── routes/ # API rotaları
│ │ ├── auth.js
│ │ ├── articles.js
│ │ ├── users.js
│ │ ├── admin.js
│ │ └── ...
│ ├── middlewares/ # Middleware'ler
│ ├── public/images/ # Yüklenen görseller
│ ├── server.js # Ana server dosyası
│ └── package.json # Node.js bağımlılıkları
- Flutter SDK 3.7+
- Node.js 16+
- MongoDB
- Git
git clone <repository-url>
cd MediumCloneAppcd backend
npm install
npm startcd frontend
flutter pub get
flutter runBackend klasöründe .env dosyası oluşturun:
MONGODB_URI=mongodb://localhost:27017/mediumclone
JWT_SECRET=your_jwt_secret_key
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_email_password- ✅ Android
- ✅ iOS
- ✅ Windows
- ✅ macOS
- ✅ Linux
- ✅ Web
| Method | Endpoint | Açıklama |
|---|---|---|
POST |
/auth/register |
Kullanıcı kaydı |
POST |
/auth/login |
Kullanıcı girişi |
POST |
/auth/forgot-password |
Şifre sıfırlama |
POST |
/auth/reset-password |
Yeni şifre belirleme |
| Method | Endpoint | Açıklama |
|---|---|---|
GET |
/articles |
Tüm makaleler |
GET |
/articles/:id |
Belirli makale |
POST |
/articles |
Yeni makale oluştur |
PUT |
/articles/:id |
Makale güncelle |
DELETE |
/articles/:id |
Makale sil |
| Method | Endpoint | Açıklama |
|---|---|---|
GET |
/admin/users |
Kullanıcı listesi |
GET |
/admin/statistics |
Genel istatistikler |
POST |
/admin/themes |
Yeni tema oluştur |
PUT |
/admin/themes/:id |
Tema güncelle |
Uygulama 8 farklı tema seçeneği sunar:
- Light Theme: Klasik açık tema
- Dark Theme: Modern koyu tema
- Retro Theme: Nostaljik renkler
- Arctic Blue: Soğuk mavi tonları
- Coral Sand: Sıcak mercan renkleri
- Soft Nature: Doğal yeşil tonları
- Auth Theme: Giriş sayfasına özel tema
- Admin Theme: Yönetici paneli teması
- Öne çıkan makaleler
- Kategori filtreleme
- Arama özelliği
- Rich text formatting
- Görsel ekleme
- Kategori seçimi
- İstatistik dashboard'u
- Kullanıcı yönetimi
- Tema editörü
- Bu repoyu fork edin 🍴
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Değişiklikleri commit edin (
git commit -m 'Add some amazing feature') - Branch'i push edin (
git push origin feature/amazing-feature) - Pull Request açın 🚀
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Ahmet Hulusi Yumuk - ahmet.h.yumuk@gmail.com
- Flutter Team
- MongoDB Team
- Tüm açık kaynak katkıda bulunanlar
⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın!