A mobile application designed to help students and young professionals find flatmates or shared accommodations. Built with React Native (Expo) and Express.js.
- "Evime Arkadaş Arıyorum" (Looking for a Flatmate): Post your room/house with photos, rent price, and details
- "Kalacak Ev Arıyorum" (Looking for a Place): Share your preferences and budget range
- "Beraber Ev Arayalım" (Let's Find Together): Find people to search for a place together
- 📝 Create and manage listings with photos
- 🔍 Search and filter listings by city, district, type, and more
- 💬 Real-time messaging between users
- 👤 User profiles with detailed information
- 🏷️ Categorized listing display on home page
- 📍 Location-based filtering (81 cities of Turkey)
- React Native with Expo Go
- TypeScript
- NativeWind (Tailwind CSS for React Native)
- Expo Router (file-based routing)
- Zustand (state management)
- React Hook Form + Zod (form validation)
- Axios (HTTP client)
- Node.js with Express.js
- TypeScript
- Prisma ORM
- PostgreSQL
- JWT Authentication
- Multer (file uploads)
ev_arkadasim_app/
├── frontend/ # React Native Expo app
│ ├── app/ # Expo Router pages
│ │ ├── (auth)/ # Authentication screens
│ │ ├── (tabs)/ # Tab navigation screens
│ │ ├── chat/ # Chat screens
│ │ ├── listing/ # Listing detail screens
│ │ ├── settings/ # Settings screens
│ │ └── user/ # User profile screens
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── config/ # App configuration
│ │ ├── constants/ # Constants and enums
│ │ ├── services/ # API services
│ │ ├── store/ # Zustand stores
│ │ ├── types/ # TypeScript interfaces
│ │ └── utils/ # Utility functions
│ └── ...
├── backend/ # Express.js API server
│ ├── prisma/ # Prisma schema and migrations
│ ├── src/
│ │ ├── config/ # Database and app config
│ │ ├── middleware/ # Express middlewares
│ │ ├── modules/ # Feature modules
│ │ │ ├── auth/ # Authentication
│ │ │ ├── listings/ # Listings CRUD
│ │ │ ├── messages/ # Messaging system
│ │ │ ├── uploads/ # File uploads
│ │ │ └── users/ # User management
│ │ └── utils/ # Utility functions
│ └── uploads/ # Uploaded images
└── README.md
- Node.js (v18+)
- PostgreSQL
- Expo Go app on your mobile device
- npm or yarn
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create
.envfile:
DATABASE_URL="postgresql://username:password@localhost:5432/ev_arkadasim"
JWT_SECRET="your-secret-key"
JWT_EXPIRES_IN="7d"
PORT=3000- Run database migrations:
npx prisma migrate dev- Start the server:
npm run dev- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install --legacy-peer-deps- Start Expo:
npm start- Scan QR code with Expo Go app on your phone
POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user
GET /api/listings- Get all listings (with filters)GET /api/listings/:id- Get listing by IDGET /api/listings/my- Get user's listingsPOST /api/listings- Create listingPUT /api/listings/:id- Update listingDELETE /api/listings/:id- Delete listing
GET /api/messages/conversations- Get conversationsGET /api/messages/conversations/:id- Get messagesPOST /api/messages- Send messagePOST /api/messages/conversations/start/:userId- Start conversation
GET /api/users/:id- Get user profilePUT /api/users/profile- Update profile
POST /api/uploads/images- Upload images
Coming soon...
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
Öğrencilerin ve genç profesyonellerin ev arkadaşı veya paylaşımlı konaklama bulmasına yardımcı olmak için tasarlanmış bir mobil uygulama. React Native (Expo) ve Express.js ile geliştirilmiştir.
- "Evime Arkadaş Arıyorum": Odanızı/evinizi fotoğraflar, kira bedeli ve detaylarla ilan edin
- "Kalacak Ev Arıyorum": Tercihlerinizi ve bütçe aralığınızı paylaşın
- "Beraber Ev Arayalım": Birlikte ev arayacak insanlar bulun
- 📝 Fotoğraflı ilan oluşturma ve yönetme
- 🔍 Şehir, ilçe, tür ve daha fazlasına göre arama ve filtreleme
- 💬 Kullanıcılar arası gerçek zamanlı mesajlaşma
- 👤 Detaylı bilgilerle kullanıcı profilleri
- 🏷️ Ana sayfada kategorize edilmiş ilan görünümü
- 📍 Konum bazlı filtreleme (Türkiye'nin 81 ili)
- React Native ve Expo Go
- TypeScript
- NativeWind (React Native için Tailwind CSS)
- Expo Router (dosya tabanlı yönlendirme)
- Zustand (durum yönetimi)
- React Hook Form + Zod (form doğrulama)
- Axios (HTTP istemcisi)
- Node.js ve Express.js
- TypeScript
- Prisma ORM
- PostgreSQL
- JWT Kimlik Doğrulama
- Multer (dosya yükleme)
ev_arkadasim_app/
├── frontend/ # React Native Expo uygulaması
│ ├── app/ # Expo Router sayfaları
│ │ ├── (auth)/ # Kimlik doğrulama ekranları
│ │ ├── (tabs)/ # Tab navigasyon ekranları
│ │ ├── chat/ # Sohbet ekranları
│ │ ├── listing/ # İlan detay ekranları
│ │ ├── settings/ # Ayarlar ekranları
│ │ └── user/ # Kullanıcı profil ekranları
│ ├── src/
│ │ ├── components/ # Yeniden kullanılabilir UI bileşenleri
│ │ ├── config/ # Uygulama yapılandırması
│ │ ├── constants/ # Sabitler ve enum'lar
│ │ ├── services/ # API servisleri
│ │ ├── store/ # Zustand store'ları
│ │ ├── types/ # TypeScript arayüzleri
│ │ └── utils/ # Yardımcı fonksiyonlar
│ └── ...
├── backend/ # Express.js API sunucusu
│ ├── prisma/ # Prisma şeması ve migrasyonlar
│ ├── src/
│ │ ├── config/ # Veritabanı ve uygulama yapılandırması
│ │ ├── middleware/ # Express middleware'leri
│ │ ├── modules/ # Özellik modülleri
│ │ │ ├── auth/ # Kimlik doğrulama
│ │ │ ├── listings/ # İlan CRUD işlemleri
│ │ │ ├── messages/ # Mesajlaşma sistemi
│ │ │ ├── uploads/ # Dosya yükleme
│ │ │ └── users/ # Kullanıcı yönetimi
│ │ └── utils/ # Yardımcı fonksiyonlar
│ └── uploads/ # Yüklenen görseller
└── README.md
- Node.js (v18+)
- PostgreSQL
- Mobil cihazınızda Expo Go uygulaması
- npm veya yarn
- Backend dizinine gidin:
cd backend- Bağımlılıkları yükleyin:
npm install.envdosyası oluşturun:
DATABASE_URL="postgresql://kullaniciadi:sifre@localhost:5432/ev_arkadasim"
JWT_SECRET="gizli-anahtariniz"
JWT_EXPIRES_IN="7d"
PORT=3000- Veritabanı migrasyonlarını çalıştırın:
npx prisma migrate dev- Sunucuyu başlatın:
npm run dev- Frontend dizinine gidin:
cd frontend- Bağımlılıkları yükleyin:
npm install --legacy-peer-deps- Expo'yu başlatın:
npm start- Telefonunuzdaki Expo Go uygulaması ile QR kodu tarayın
POST /api/auth/register- Yeni kullanıcı kaydıPOST /api/auth/login- Kullanıcı girişiGET /api/auth/me- Mevcut kullanıcıyı getir
GET /api/listings- Tüm ilanları getir (filtrelerle)GET /api/listings/:id- ID'ye göre ilan getirGET /api/listings/my- Kullanıcının ilanlarını getirPOST /api/listings- İlan oluşturPUT /api/listings/:id- İlan güncelleDELETE /api/listings/:id- İlan sil
GET /api/messages/conversations- Sohbetleri getirGET /api/messages/conversations/:id- Mesajları getirPOST /api/messages- Mesaj gönderPOST /api/messages/conversations/start/:userId- Sohbet başlat
GET /api/users/:id- Kullanıcı profilini getirPUT /api/users/profile- Profil güncelle
POST /api/uploads/images- Görsel yükle
Yakında eklenecek...
Katkılarınızı bekliyoruz! Pull Request göndermekten çekinmeyin.
Bu proje açık kaynaklıdır ve MIT Lisansı altında kullanılabilir.