Modern, güvenli ve kullanıcı dostu bir gerçek zamanlı sohbet uygulaması. Uçtan uca şifreleme, arkadaşlık sistemi ve gelişmiş bildirimler ile donatılmıştır.
- Uçtan Uca Şifreleme: AES-256 algoritması ile tüm mesajlar şifrelenir
- Gerçek Zamanlı İletişim: Socket.io ile anlık mesaj iletimi
- Mesaj Durumu: Gönderildi/Okundu durumu takibi
- Şifreli Mesajlar: Tüm mesajlar istemci tarafında şifrelenir/çözülür
- Mesaj Geçmişi: Persistent mesaj saklama
- Arkadaşlık Sistemi: Kullanıcı arama ve arkadaşlık istekleri
- Çevrimiçi Durum: Gerçek zamanlı çevrimiçi/çevrimdışı durumu
- Kullanıcı Profilleri: Profil fotoğrafı ve kişisel bilgiler
- Son Görülme: Kullanıcıların son aktif olma zamanı
- Gerçek Zamanlı Bildirimler: Yeni mesajlar için anlık uyarılar
- Görsel Göstergeler: Okunmamış mesaj sayacı
- Ses ve Görsel Efektler: Kullanıcı deneyimini zenginleştiren animasyonlar
- Profil Düzenleme: Ad, e-posta ve profil fotoğrafı güncelleme
- Hesap Yönetimi: Güvenli oturum kapatma ve hesap bilgileri
- Next.js 15.3.2: React tabanlı full-stack framework
- React 19: Modern UI kütüphanesi
- TypeScript: Tip güvenli JavaScript
- Tailwind CSS: Utility-first CSS framework
- Radix UI: Erişilebilir UI komponentleri
- Lucide React: Modern ikon kütüphanesi
- Next.js API Routes: Serverless API endpoints
- Socket.io: Gerçek zamanlı iletişim
- Better Auth: Modern kimlik doğrulama
- Prisma ORM: Type-safe veritabanı client'ı
- PostgreSQL: İlişkisel veritabanı
- Crypto-JS: AES şifreleme kütüphanesi
- ESLint: Kod kalitesi ve standartları
- TypeScript: Statik tip kontrolü
- Prisma Studio: Veritabanı yönetim arayüzü
realtime-chat/
├── prisma/
│ └── schema.prisma # Veritabanı şeması
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/ # API endpoints
│ │ │ ├── auth/ # Kimlik doğrulama
│ │ │ ├── messages/ # Mesaj yönetimi
│ │ │ ├── users/ # Kullanıcı işlemleri
│ │ │ └── friend-requests/ # Arkadaşlık istekleri
│ │ ├── settings/ # Kullanıcı ayarları sayfası
│ │ └── layout.tsx # Ana layout
│ ├── components/ # React komponentleri
│ │ ├── private-chat.tsx # Ana sohbet bileşeni
│ │ ├── main-dashboard.tsx # Ana dashboard
│ │ ├── user-search.tsx # Kullanıcı arama
│ │ └── ... # Diğer komponentler
│ ├── lib/ # Yardımcı kütüphaneler
│ │ ├── encryption.ts # Şifreleme fonksiyonları
│ │ ├── socket-client.ts # Socket.io client
│ │ ├── auth.ts # Better Auth yapılandırması
│ │ └── prisma.ts # Prisma client
│ └── server.ts # Socket.io sunucusu
└── package.json
- Node.js 18.x veya üzeri
- PostgreSQL veritabanı
- npm veya yarn paket yöneticisi
git clone <repository-url>
cd realtime-chatnpm install.env.local dosyası oluşturun:
# Veritabanı
DATABASE_URL="postgresql://username:password@localhost:5432/realtime_chat"
# Better Auth
BETTER_AUTH_SECRET="your-secret-key-here"
BETTER_AUTH_URL="http://localhost:3000"
# Next.js
NEXTAUTH_URL="http://localhost:3000"# Prisma migrasyonlarını çalıştırın
npx prisma migrate dev --name init
# Prisma Client'ı oluşturun
npx prisma generate# Geliştirme modu
npm run dev
# Üretim modu
npm run build
npm startUygulama http://localhost:3000 adresinde çalışacaktır.
- Anahtar Üretimi: Her sohbet odasına özel AES anahtarı
- Mesaj Şifreleme: İstemci tarafında gerçek zamanlı şifreleme
- Güvenli Transmisyon: Şifrelenmiş veriler Socket.io üzerinden
- Çözümleme: Alıcı tarafında otomatik şifre çözme
- Better Auth ile modern OAuth2/OIDC desteği
- Güvenli session yönetimi
- CSRF koruması
- Rate limiting
- Ana sayfada "Kayıt Ol" butonuna tıklayın
- Gerekli bilgileri doldurun
- E-posta doğrulaması yapın (opsiyonel)
- Sol panelde "Kişiler" sekmesine geçin
- Arama kutusuna kullanıcı adı yazın
- Arkadaşlık isteği gönderin
- Karşı tarafın kabul etmesini bekleyin
- Arkadaş listesinden bir kişi seçin
- Mesaj kutusuna yazmaya başlayın
- Enter ile mesajı gönderin
- Mesaj durumunu takip edin (✓ gönderildi, ✓✓ okundu)
- Sol panelde ayarlar simgesine tıklayın
- "Ayarlar" sayfasına gidin
- Profil bilgilerinizi güncelleyin
- Değişiklikleri kaydedin
- Komponent Tabanlı: Yeniden kullanılabilir React komponentleri
- TypeScript: Tam tip güvenliği
- API Routes: RESTful API yapısı
- Real-time Events: Socket.io event sistemi
- Tailwind CSS ile responsive tasarım
- Dark mode desteği hazırlığı
- Erişilebilirlik standartları (a11y)
- Mobile-first yaklaşım
# Yeni migrasyon oluştur
npx prisma migrate dev --name migration_name
# Migrasyonları uygula
npx prisma migrate deploy
# Veritabanını resetle (geliştirme ortamı)
npx prisma migrate reset- React.memo ile gereksiz render'ların önlenmesi
- Lazy loading ile komponent yüklemesi
- Debouncing ile arama optimizasyonu
- Virtual scrolling ile büyük listeler
- Database indexing
- Query optimization
- Connection pooling
- Caching strategies
- Socket bağlantı sorunu: Port çakışması kontrolü
- Veritabanı bağlantısı: CONNECTION_URL kontrolü
- Şifreleme hataları: Crypto-JS sürüm uyumluluğu
- Session sorunları: Cookie ayarları kontrolü
# Socket.io logları
DEBUG=socket.io* npm run dev
# Prisma sorgu logları
DATABASE_LOG_LEVEL=info npm run devBu proje şu anda Iron Session'dan Better Auth'a migrasyon sürecindedir:
- Better Auth paket kurulumu
- Prisma şeması güncellemesi
- Kullanıcı arayüzü güncellemeleri
- API endpoint'leri hazırlığı
- Better Auth server yapılandırması
- Auth client entegrasyonu
- Session migration
- Ortam değişkenleri güncellemesi
- Iron Session kaldırılması
- Final testler
- Dokümantasyon güncellemesi
- Projeyi fork'layın
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Değişikliklerinizi commit'leyin (
git commit -m 'Add amazing feature') - Branch'i push'layın (
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.
- Next.js ekibine framework için
- Socket.io geliştiricilerine gerçek zamanlı iletişim için
- Prisma ekibine modern ORM için
- Better Auth geliştiricilerine güvenli kimlik doğrulama için
Sorularınız için issues bölümünü kullanabilirsiniz.
⚡ Realtime Chat - Modern, güvenli ve hızlı sohbet deneyimi!