Skip to content

Repository files navigation

DerdiniSeveyim Monorepo

Bu depo; mobil (Expo/React Native) uygulaması, web sitesi (Next.js), admin paneli ve NestJS tabanlı API sunucusunu tek bir monorepo altında barındırır. Amaç; projeyi CV/portföy için incelemeye açmak, izinsiz kullanımı ise engellemektir.

Lisans uyarısı: Bu proje UNLICENSED (All Rights Reserved) kapsamındadır. Kod ve varlıkların izinsiz kullanımı, kopyalanması, dağıtımı veya türevi yasaktır. Ayrıntı için LICENSE ve ASSETS_LICENSE.md dosyalarına bakın.

Uygulamanın Amacı

DerdiniSeveyim; insanların dertlerini/duygularını anonim veya profil bazlı paylaşabildiği, benzer ruh hâlindeki kişilerle eşleşip sohbet edebildiği ve topluluk desteği alabildiği bir sosyal destek ve eşleşme uygulamasıdır. Uygulama; keşif akışı, detay sayfaları, gerçek zamanlı mesajlaşma, bildirim, moderasyon ve premium deneyim gibi modüller içerir.

Öne Çıkan Özellikler

  • Keşif akışı ve kategoriler: kullanıcılar farklı kategorilerde “dert” içeriklerini keşfedebilir.
  • Eşleşme ve sohbet: uygun eşleşmeler önerilir; Socket.IO ile gerçek zamanlı mesajlaşma yapılır.
  • Arama ve akıllı öneriler: Smart Search Assist ile daha hızlı içerik bulma deneyimi.
  • Moderasyon ve raporlama: topluluk güvenliği için moderasyon ekranları.
  • Bildirimler ve durum takibi: eşleşme/mesajlaşma ve sistem bildirimleri.
  • Premium modüller: ekstra özellikler için premium ekranları.

Nasıl Yazıldı? (Mimari ve Teknik Tasarım)

Uygulama baştan sona TypeScript ile geliştirildi ve katmanlı/ayrık modüllerle kurgulandı. Monorepo düzeni; mobil, web/admin ve backend servislerinin birlikte versiyonlanmasını, ortak sözleşmelerin kolay yönetimini sağlıyor.

Mobil (Expo/React Native)

  • Navigasyon: React Navigation (stack + bottom-tabs)
  • Durum yönetimi: Zustand (src/store/ altında userStore.ts, theme.tsx, profileModal.ts)
  • Veri yönetimi: TanStack Query (React Query) ile önbellekleme, refetch, hata/senkron kontrolü
  • Gerçek zamanlı: Socket.IO client (src/services/socket.ts, messagingSocket.ts)
  • Servisler: src/services/apiService.ts ve domain bazlı mini SDK’lar
  • UI/Animasyon: Reanimated, Lottie; özel komponentler (src/components/*, ör. NeonAuroraBackground, AnimatedRGBText)
  • Yardımcılar: src/utils/ (offline cache, tarih formatlama, text yardımcıları)
  • Tipler: src/types/

Web ve Admin (Next.js)

  • Next.js (App Router), Tailwind CSS, React Query
  • (İsteğe bağlı) NextAuth + Prisma ile oturum
  • website/ son kullanıcıya açık web; admin-panel/ operasyonel paneller için
  • Ortak API tüketimi: .env.local üzerinden API_BASE_URL

Backend (NestJS + Prisma)

  • NestJS modüler yapısı (server/src/modules/*) ve global validasyon (ValidationPipe), DTO yapısı, Swagger dokümantasyonu (/api/docs)
  • Prisma ORM + PostgreSQL; migration ve seed script’leri
  • Redis entegrasyonu (cache veya kilitleme gibi senaryolar için hazır)
  • Gerçek zamanlı mesajlaşma: Socket.IO (/messaging endpoint)
  • Güvenlik: Helmet, CORS yapılandırması, JWT auth, Throttler (rate limit) bağımlılığı
  • Dağıtım kolaylığı: docker-compose.yml ile Postgres/Redis’i hızlıca ayağa kaldırma

Neden Bu Teknolojiler?

  • React Native (Expo): hızlı geliştirme, tek kod tabanıyla çoklu platform
  • Next.js: SEO ve hibrit (SSG/SSR) ihtiyaçlarına uygun, üretimde olgun
  • NestJS: ölçeklenebilir modüler mimari, tip güvenliği ve üretim best-practice’leri
  • Prisma + Postgres: güçlü şema yönetimi, migration ve geliştirici deneyimi
  • Redis: oturum/cache/queue gibi senaryolara esneklik

Klasörler

  • Mobil Uygulama (Expo/React Native): kök dizin
  • API Sunucusu (NestJS + Prisma + PostgreSQL + Redis): server/
  • Web Sitesi (Next.js): website/
  • Admin Paneli (Next.js): admin-panel/
  • Örnek kimlik doğrulama paketleri: authentication-system/ ve authentication-system/auth-system/

Teknolojiler

  • Mobil: React Native (Expo), React 19, Zustand, React Query
  • Web/Admin: Next.js, Tailwind, React Query, (opsiyonel) NextAuth, Prisma
  • Sunucu: NestJS, Prisma, PostgreSQL, Redis, Swagger, Socket.IO

Hızlı Başlangıç

1) Veritabanı ve Redis (opsiyonel ama önerilir)

server/docker-compose.yml ile PostgreSQL ve Redis’i ayağa kaldırın:

cd server
docker compose up -d

2) API Sunucusu (NestJS)

cd server
npm install

# Prisma şema ve migrasyon
npx prisma generate
npm run prisma:migrate

# (opsiyonel) seed
npm run prisma:seed

# Geliştirme
npm run dev

Örnek .env (server/.env):

DATABASE_URL="postgresql://postgres:postgres@localhost:5432/derdiniseveyim?schema=public"
REDIS_URL="redis://localhost:6379"
JWT_SECRET="change-me"
PORT=3000
NODE_ENV=development

3) Web Sitesi (Next.js)

cd website
npm install
npm run dev

Varsayılan: http://localhost:3000

Örnek .env.local:

NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=change-me
API_BASE_URL=http://localhost:3000
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/derdiniseveyim?schema=public"

4) Admin Paneli (Next.js)

cd admin-panel
npm install
npm run dev

Varsayılan: http://localhost:3001

Örnek .env.local:

API_BASE_URL=http://localhost:3000

5) Mobil Uygulama (Expo)

# kök dizinde
npm install
npm run start
  • Expo ile fiziksel cihaz/emülatörde açabilirsiniz.
  • Opsiyonel .env (kök):
API_BASE_URL=http://localhost:3000

Notlar (Prod için)

  • CORS, güvenlik başlıkları (helmet), rate-limit vb. ayarları prod’da sıkılaştırın.
  • Tüm sırları güvenli yönetin (ENV/KeyVault vb.).
  • Yedekleme ve gözlemleme (logs/metrics) stratejisi belirleyin.

Lisans ve Varlıklar

  • Kod lisansı: UNLICENSED – All Rights Reserved (bkz. LICENSE).
  • Varlıklar: Kullanım kısıtları için ASSETS_LICENSE.md dosyasını okuyun.

İletişim

İzin/iş birliği talepleri için: https://github.com/yusufefe47

About

DerdiniSeveyim; insanların dertlerini/duygularını anonim veya profil bazlı paylaşabildiği, benzer ruh hâlindeki kişilerle eşleşip sohbet edebildiği ve topluluk desteği alabildiği bir sosyal destek ve eşleşme uygulamasıdır.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages