├── README.md ├── projects └── hotel-booking-app │ ├── README.md │ ├── backend.md │ ├── backend │ ├── firebase.md │ └── nodejs.md │ ├── design.md │ ├── devops.md │ ├── end_project.md │ ├── figma-assets │ ├── cover.png │ ├── full_project.png │ └── link.md │ ├── mobile.md │ ├── mobile │ └── flutter.md │ ├── project.md │ └── test.md └── script └── project_create.sh /README.md: -------------------------------------------------------------------------------- 1 | # 🚀 Gerçek Projelerle Geliştirici Yolculuğu 2 | 3 | Bu repo, geliştirici olmak isteyenler için her hafta **gerçek bir proje altyapısı** sunmayı amaçlamaktadır. Her klasör, tamamı uygulanabilir bir proje örneği içerir ve hem mobil hem de backend geliştirme süreçlerini öğretir. 4 | 5 | ## 📌 Amaç 6 | 7 | Yeni başlayan ya da kendini geliştirmek isteyen yazılımcıların, gerçek dünyadaki uygulama mantığını öğrenmeleri için haftalık projelerle yol gösterici bir kaynak oluşturmak. 8 | 9 | ## 📁 Yapı 10 | 11 | Her proje kendi klasöründe aşağıdaki dosyaları içerir: 12 | 13 | - `project.md` → Projenin genel açıklaması, hedefi ve kullanıcı akışı 14 | - `mobile.md` → Mobil uygulama için görev listesi ve teknolojiler 15 | - `backend.md` → Backend tarafı için yapılandırma ve görevler 16 | - `devops.md` → DevOps için yapılandırma ve görevler 17 | - `design.md` → Figma linkleri, ekran tasarımları ve görseller 18 | - `test.md` → Test için yapılandırma ve görevler 19 | - `end_project.md` → Projeyi tamamlayanların listesi 20 | 21 | # Projeler 22 | 23 | - [Hotel Booking App](projects/hotel-booking-app/project.md) 24 | 25 | ## 🧭 Nasıl Kullanılır? 26 | 27 | 1. İlgilendiğin proje klasörüne gir. 28 | 2. `project.md` dosyasını inceleyerek genel amacı öğren. 29 | 3. Mobil ya da backend dosyasından görevleri takip ederek uygulamaya başla. 30 | 4. İstersen katkıda bulunabilir veya yeni projeler önererek gelişime destek olabilirsin. 31 | 32 | ## 🌐 Yardımcı Dokümantasyonlar 33 | 34 | - [İlk adımını at, ekip çalışmasıyla proje geliştirme rehberi](https://medium.com/@vbacik-10/i%CC%87lk-ad%C4%B1m%C4%B1n%C4%B1-at-ekip-%C3%A7al%C4%B1%C5%9Fmas%C4%B1yla-proje-geli%C5%9Ftirme-rehberi-1a794972e724) 35 | 36 | 37 | # ✨ Katkı Sağlamak İsteyenler İçin 38 | 39 | Katkı vermek isteyenler aşağıdaki adımları izleyebilir: 40 | 41 | 1. 📌 Her klasördeki `project.md` dosyasını incele 42 | 2. 🛠️ Açık olan GitHub Issue’larına yorum yap 43 | 3. 💡 Yeni öneri veya görev eklemek istersen `Discussions` üzerinden paylaş 44 | 4. ✅ Pull Request gönderirken ilgili proje klasörüne uygun şekilde ilerle 45 | 5. 🧪 Kod + dokümantasyon bir arada gönderilmeli 46 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/README.md: -------------------------------------------------------------------------------- 1 | # 📱 hotel-booking-app Projesi 2 | 3 | ![Hotel Booking App](figma-assets/cover.png) 4 | 5 | 6 | Bu klasör **hotel-booking-app** projesine aittir. 7 | 8 | İlgili belgeler: 9 | - 📘 project.md – Genel proje açıklaması 10 | - 📱 mobile.md – Mobil uygulama geliştirme detayları 11 | - 🖥️ backend.md – Backend mimarisi ve görevleri 12 | - ⚙️ devops.md – Deployment, CI/CD, çevresel değişkenler 13 | - 🎨 design.md – Tasarım sistemi, UI kit notları, Figma bağlantısı 14 | 15 | 16 | ## 📁 Klasör Yapısı 17 | 18 | hotel-app/ 19 | ├── project.md → Bu dosya – proje tanımı ve kapsam 20 | ├── mobile/ → Mobil geliştirme (flutter, swift, vs.) 21 | ├── backend/ → Backend geliştirme (node, supabase, vs.) 22 | ├── devops.md → CI/CD, ortam yönetimi 23 | ├── design.md → Renk paleti, yazı stilleri, komponent notları 24 | ├── test.md → Test için yapılandırma ve görevler 25 | ├── end_project.md → Projeyi tamamlayanların listesi 26 | 27 | 28 | Figma içerikleri için: 29 | 30 | Ana dil: Türkçe 🇹🇷 31 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/backend.md: -------------------------------------------------------------------------------- 1 | # 🖥️ Backend Geliştirme – Hotel Booking App 2 | 3 | Bu proje için backend tarafı, aşağıdaki temel işlevleri yerine getirecek şekilde yapılandırılacaktır. 4 | Herhangi bir backend teknolojisi kullanılabilir (Node.js, Django, Supabase, vb.) 5 | Burada önemli olan: **veri modelini anlamak**, **API yapısını kurmak**, ve **frontend ile entegrasyonu netleştirmektir.** 6 | 7 | --- 8 | 9 | ## 🎯 Backend Görevleri (Framework Bağımsız) 10 | 11 | - [ ] Kullanıcı kimlik doğrulama (kayıt, giriş, şifre sıfırlama) 12 | - [ ] Otel verisinin listelenmesi ve filtrelenmesi 13 | - [ ] Otel detay verisinin sunulması 14 | - [ ] Rezervasyon oluşturma işlemi 15 | - [ ] Rezervasyon geçmişi ve kullanıcı profili 16 | - [ ] Ödeme (mock/sandbox entegrasyonu) 17 | - [ ] Admin yetkisi ile yeni otel ekleme (opsiyonel) 18 | - [ ] API güvenliği, rate limit, veri doğrulama 19 | 20 | --- 21 | 22 | ## 🗂️ Veri Modelleri (Entity'ler) 23 | 24 | Aşağıdaki veri yapıları backend tarafında mutlaka tanımlanmalı: 25 | 26 | ### 👤 `User` 27 | | Alan | Tip | Açıklama | 28 | |-----------------|-----------|-------------------------| 29 | | id | string | UUID | 30 | | name | string | | 31 | | email | string | unique | 32 | | password_hash | string | şifrelenmiş | 33 | | role | string | "user" / "admin" | 34 | 35 | --- 36 | 37 | ### 🏨 `Hotel` 38 | | Alan | Tip | Açıklama | 39 | |-----------------|-----------|-------------------------| 40 | | id | string | UUID | 41 | | name | string | | 42 | | description | string | | 43 | | location | string | | 44 | | image_url | string | | 45 | | price_per_night | number | | 46 | | rating | float | 1–5 arası | 47 | | features | string[] | Havuz, Wi-Fi, Park vb. | 48 | 49 | --- 50 | 51 | ### 📅 `Reservation` 52 | | Alan | Tip | Açıklama | 53 | |-----------------|-----------|-------------------------| 54 | | id | string | UUID | 55 | | user_id | string | foreign key (User) | 56 | | hotel_id | string | foreign key (Hotel) | 57 | | check_in_date | date | | 58 | | check_out_date | date | | 59 | | guest_count | number | | 60 | | total_price | number | | 61 | | status | string | "pending", "paid" | 62 | 63 | --- 64 | 65 | ## 📡 Önerilen API Endpoint'leri 66 | 67 | | Method | Endpoint | Açıklama | 68 | |--------|---------------------------|-----------------------------------| 69 | | POST | `/auth/register` | Kayıt | 70 | | POST | `/auth/login` | Giriş | 71 | | GET | `/hotels` | Tüm otelleri getir | 72 | | GET | `/hotels/:id` | Belirli oteli getir | 73 | | GET | `/hotels?location=...` | Konuma göre filtreleme | 74 | | POST | `/reservations` | Yeni rezervasyon oluştur | 75 | | GET | `/reservations/me` | Kullanıcının rezervasyon geçmişi | 76 | | POST | `/payments/mock` | (Mock ödeme entegrasyonu) | 77 | 78 | > ⚠️ Auth işlemleri için JWT önerilir. API'lere erişim kontrolü `middleware` ile yapılmalıdır. 79 | 80 | --- 81 | 82 | ## 🧱 Altyapıyı Kurmak İçin Gerekli Adımlar 83 | 84 | Aşağıdaki görevler backend tarafının ilk kurulumunu yapabilmek için gereklidir. Bu görevler teknoloji bağımsızdır (Node.js, Django, Supabase vb. tüm stack’lere uyarlanabilir). 85 | 86 | ### 📁 Proje Yapısı ve Organizasyon 87 | - [ ] `backend/` altında kendi framework klasörünü oluştur (örn: `nodejs`, `django`, `supabase`) 88 | - [ ] API dokümantasyonunu yazacağın `README.md` dosyasını bu klasöre ekle 89 | - [ ] Ortak kullanılabilecek mock verileri, seed dosyalarını `mock/` klasörüne ekle 90 | - [ ] Ortam değişkenleri için `.env.example` dosyası oluştur (şifreleme, DB, API key vs.) 91 | 92 | ### 🔐 Kimlik Doğrulama 93 | - [ ] `register`, `login`, `logout` endpoint’lerini oluştur 94 | - [ ] JWT veya oturum (session) yönetimiyle authentication sistemini kur 95 | - [ ] Şifre sıfırlama endpoint’i ekle (email / sms opsiyonel) 96 | - [ ] Parola saklama için hashing yöntemi kullan (örn: bcrypt, argon2) 97 | 98 | ### 🏨 Otel Yönetimi API'si 99 | - [ ] Otel CRUD (admin için) endpoint’lerini oluştur 100 | - [ ] Otelleri listeleyen genel `GET /hotels` endpoint’ini yaz 101 | - [ ] Otel filtreleme (konum, fiyat, tarih aralığı) için query parametre desteği ekle 102 | - [ ] Otel detayını getiren `GET /hotels/:id` endpoint’ini yaz 103 | 104 | ### 📅 Rezervasyon Yönetimi 105 | - [ ] `POST /reservations` endpoint’i ile rezervasyon oluştur 106 | - [ ] `GET /reservations/me` endpoint’i ile kullanıcı geçmiş rezervasyonları getir 107 | - [ ] Tarih çakışmalarına karşı kontrol ekle (check-in / check-out aralığı) 108 | 109 | ### 💳 Ödeme (Mock) 110 | - [ ] `POST /payments/mock` endpoint’i oluştur 111 | - [ ] Gerçek ödeme API’sine geçmeden önce mock ödeme işlemi simüle et 112 | - [ ] Rezervasyonun ödeme durumunu güncelle (örn: "pending" → "paid") 113 | 114 | ### 🧪 Test ve Geliştirici Araçları 115 | - [ ] Postman Collection hazırla ve repo ile birlikte paylaş 116 | - [ ] Mock veri üretmek için `faker`, `seed script` gibi bir yapı kur 117 | - [ ] Swagger / Redoc gibi araçlarla otomatik API dokümantasyonu oluştur (isteğe bağlı) 118 | 119 | ### 🛡️ Güvenlik ve Erişim Kontrolü 120 | - [ ] JWT doğrulama middleware’i oluştur 121 | - [ ] Role-based access (örneğin "admin" rolü) kontrolü ekle 122 | - [ ] Tüm girişler için input validation kur (örnek: `Joi`, `Zod`, `Pydantic`) 123 | - [ ] Rate limiting ve CORS yapılandırmasını ekle 124 | 125 | ### 📦 Dağıtım (devops.md ile bağlantılı) 126 | - [ ] `.env` dosyasındaki değişkenleri `devops.md` içinde açıklamak üzere hazırla 127 | - [ ] Dockerfile ya da basit deploy yönergeleri ekle (isteğe bağlı) 128 | - [ ] `dev` ve `production` ortamlarını ayırt eden yapı kur 129 | 130 | --- 131 | 132 | Bu görevler tamamlandığında backend sistemin temel olarak ayağa kalkmış olacaktır. 133 | İlerleyen aşamalarda loglama, hata yönetimi, CI/CD ve metrik toplama gibi ek görevler `devops.md` içerisinde detaylandırılabilir. 134 | 135 | --- 136 | 137 | ## 🔐 Güvenlik & Doğrulama 138 | 139 | - [ ] JWT tabanlı authentication 140 | - [ ] Role-based authorization (`user` vs `admin`) 141 | - [ ] Rate limiting (örneğin 100 istek/saat) 142 | - [ ] Input validation (örneğin `Joi`, `Zod`, `Pydantic` gibi yapılarla) 143 | 144 | --- 145 | 146 | ## 🧪 Test & Mock Data 147 | 148 | - [ ] Oteller için mock veri üret (`faker` kullanabilirsin) 149 | - [ ] Postman Collection hazırlanmalı 150 | - [ ] API testleri yapılmalı (unit & integration) 151 | 152 | --- 153 | 154 | ## 📋 Katılım Rehberi (Backend Geliştiriciler İçin) 155 | 156 | 1. `backend/` klasöründe kendi stack'ine göre bir alt klasör oluştur. Örneğin: 157 | backend/ 158 | └── nodejs/ 159 | 160 | 2. Issue üzerinden görev al. 161 | 3. Geliştirme yaparken: 162 | - Kodun içine `README` veya `docs/` klasöründe açıklayıcı dökümantasyon yaz. 163 | - Swagger / Postman ile API'yi test edilebilir bırak. 164 | 4. PR açarken, yaptığın işi ve test yöntemini açıkla. 165 | 5. Gerekiyorsa deploy süreci için `devops.md`'e not ekle. 166 | 167 | --- 168 | 169 | ## 🧠 Bonus Öneriler 170 | 171 | - Otel arama özelliği için MongoDB’de `text index`, PostgreSQL’de `ILIKE` gibi yapılar kullanılabilir. 172 | - Fiyat filtreleri için min-max sorgulara dikkat et. 173 | - Her yeni otel/rezervasyon eklemesinde zaman damgası eklenmeli (`created_at`, `updated_at`). 174 | 175 | --- 176 | 177 | ## ✅ Sonuç 178 | 179 | Backend tarafı, projenin veri yönetimi ve iş mantığı kısmını üstlenir. 180 | Güçlü bir API sistemi, mobil geliştiricinin işini kolaylaştırır. 181 | Bu nedenle: 182 | 183 | - CRUD’dan fazlasını düşün 184 | - Temiz ve test edilebilir kod yaz 185 | - Güvenlik, esneklik ve performans konularına özen göster 186 | 187 | Hazırsan bir görev seç, alt klasörünü oluştur ve kodlamaya başla. 🚀 188 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/backend/firebase.md: -------------------------------------------------------------------------------- 1 | # 🔥 Firebase ile Geliştirme – Hotel Booking App 2 | 3 | # Bu doküman, Firebase kullanılarak hem mobil hem de sunucusuz backend geliştirmenin nasıl yapılacağını açıklar. 4 | 5 | --- 6 | 7 | # 🌐 Backend (Firebase Functions) 8 | 9 | firebase/ 10 | functions/ # Express.js tabanlı Cloud Functions 11 | firebase.json # Emulator & deploy ayarları 12 | .firebaserc # Firebase proje bağlantısı 13 | firestore.rules # Güvenlik kuralları 14 | firestore.indexes.json # İndeks ayarları 15 | 16 | Kullanılan modüller: 17 | - Firebase Authentication 18 | - Cloud Firestore 19 | - Cloud Functions 20 | - Firebase Storage 21 | - Firebase Hosting (opsiyonel) 22 | 23 | --- 24 | 25 | # ⚙️ Firebase Emulator Kurulumu 26 | 27 | adımlar: 28 | - Firebase CLI kurulumu: `npm install -g firebase-tools` 29 | - Firebase login: `firebase login` 30 | - Emulator kurulumu: `firebase init emulators` 31 | - Başlat: `firebase emulators:start` 32 | 33 | çalışma portları: 34 | Firestore: http://localhost:8080 35 | Auth: http://localhost:9099 36 | Functions: http://localhost:5001 37 | Emulator UI: http://localhost:4000 38 | 39 | --- 40 | 41 | # 📱 Flutter ile Firebase 42 | 43 | flutter_packages: 44 | - firebase_core 45 | - firebase_auth 46 | - cloud_firestore 47 | - firebase_storage 48 | - firebase_messaging 49 | - flutter_local_notifications 50 | 51 | kurulum_adımları: 52 | 1. Firebase Console’da uygulama oluştur 53 | 2. `google-services.json` ve `GoogleService-Info.plist` ekle 54 | 3. `Firebase.initializeApp()` çağır 55 | 4. Gerekirse emulator bağlantısı ekle 56 | 57 | --- 58 | 59 | # 🛠️ Flutter Emulator Bağlantısı 60 | 61 | dev_mode_init: 62 | firestore: `FirebaseFirestore.instance.useFirestoreEmulator('localhost', 8080)` 63 | auth: `FirebaseAuth.instance.useAuthEmulator('localhost', 9099)` 64 | 65 | uyarı: 66 | - Sadece `kDebugMode` içinde kullanılmalı 67 | - Production ortamda devre dışı bırakılmalı 68 | 69 | --- 70 | 71 | # 🔐 Güvenlik Kuralları 72 | 73 | firestore.rules: 74 | rules_version: '2' 75 | service: cloud.firestore 76 | match: /databases/{database}/documents 77 | izinler: 78 | bookings: 79 | read: request.auth != null 80 | write: request.auth != null 81 | 82 | --- 83 | 84 | # ✅ Sonuç 85 | 86 | özellikler: 87 | - Firebase ile backend kodsuz yazılabilir 88 | - Gerçek zamanlı veri yönetimi mümkündür 89 | - Mobil + backend tek merkezden yönetilir 90 | - Emulator ile yerel geliştirme/test yapılabilir 91 | 92 | not: Firebase MVP projeler ve hızlı geliştirme süreçleri için idealdir. 93 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/backend/nodejs.md: -------------------------------------------------------------------------------- 1 | # 🏨 Hotel Booking Uygulaması – Backend (Node.js) 2 | 3 | Bu belge, hotel booking uygulamasının backend tarafını Node.js kullanarak geliştirmek isteyen geliştiriciler için hazırlanmıştır. Amacımız; modüler, güvenli, genişletilebilir ve test edilebilir bir yapı kurmaktır. 4 | 5 | --- 6 | 7 | ## 📁 Dosya Yapısı 8 | 9 | hotel-backend/ 10 | ├── src/ 11 | │ ├── config/ → ortam ve db ayarları 12 | │ ├── controllers/ → endpoint fonksiyonları 13 | │ ├── models/ → MongoDB şemaları 14 | │ ├── routes/ → endpoint tanımlamaları 15 | │ ├── services/ → business logic 16 | │ ├── middlewares/ → auth, error handler, validation 17 | │ └── utils/ → yardımcı fonksiyonlar 18 | ├── tests/ → birim ve entegrasyon testleri 19 | ├── .gitignore 20 | ├── server.js 21 | └── package.json 22 | 23 | --- 24 | 25 | ## 📦 Kullanılacak Paketler 26 | 27 | npm install express mongoose dotenv cors bcryptjs jsonwebtoken joi 28 | npm install --save-dev nodemon jest supertest 29 | 30 | --- 31 | 32 | ## 🧠 Modüller ve Görevleri 33 | 34 | | Modül | Açıklama | 35 | |------------|-------------------------------------| 36 | | User | Kayıt, giriş, kullanıcı bilgileri | 37 | | Hotel | Otel bilgileri, açıklamalar, konum | 38 | | Booking | Rezervasyon işlemleri | 39 | | Auth | Giriş / yetkilendirme | 40 | | Payment | (Mock) ödeme süreci | 41 | 42 | --- 43 | 44 | ## ✅ Geliştirme Adımları 45 | 46 | 1. Proje klasörü oluştur: 47 | mkdir hotel-backend && cd hotel-backend 48 | npm init -y 49 | 50 | 2. Express ve MongoDB setup: 51 | - server.js içine Express başlangıç kodunu yaz 52 | - src/config/db.js dosyasında mongoose bağlantısını tanımla 53 | 54 | 3. User ve Hotel modellerini oluştur (src/models/) 55 | 4. RESTful route'ları src/routes/ içinde tanımla 56 | 5. JWT tabanlı auth yapısını kur (middleware + login route) 57 | 6. Validation için joi kullan (örnek: kullanıcı girişi) 58 | 7. Test için jest ve supertest yapılandır 59 | 60 | --- 61 | 62 | ## 🧾 Örnek Model: User (MongoDB) 63 | 64 | const mongoose = require('mongoose'); 65 | 66 | const UserSchema = new mongoose.Schema({ 67 | name: String, 68 | email: { type: String, unique: true }, 69 | password: String, 70 | role: { type: String, default: 'user' } 71 | }, { timestamps: true }); 72 | 73 | module.exports = mongoose.model('User', UserSchema); 74 | 75 | --- 76 | 77 | ## 📌 API Yapısı (Örnek) 78 | 79 | | Endpoint | Method | Açıklama | 80 | |----------------------|--------|---------------------------------| 81 | | /api/auth/register | POST | Kullanıcı kaydı | 82 | | /api/auth/login | POST | Giriş yap | 83 | | /api/hotels | GET | Tüm otelleri getir | 84 | | /api/hotels/:id | GET | Belirli bir otelin detayını getir | 85 | | /api/bookings | POST | Yeni rezervasyon oluştur | 86 | | /api/bookings/me | GET | Kullanıcının rezervasyonlarını getir | 87 | 88 | --- 89 | 90 | ## 🚀 Projeyi Çalıştırma 91 | 92 | 1. .env dosyası oluştur, gerekli ortam değişkenlerini gir (PORT, MONGO_URI, JWT_SECRET) 93 | 2. Geliştirme ortamı için: 94 | npm run dev 95 | 96 | 3. Test için: 97 | npm run test 98 | 99 | --- 100 | 101 | ## 🧪 Test Senaryoları 102 | 103 | - Kullanıcı kayıt oluyor mu? 104 | - Giriş sonrası JWT dönüyor mu? 105 | - Rezervasyon yapmadan giriş gerekiyor mu? 106 | - Otel detayları dönüyor mu? 107 | - Aynı tarihe çift rezervasyon engelleniyor mu? 108 | 109 | --- 110 | 111 | ## 🛡️ Güvenlik Notları 112 | 113 | - Şifreler bcrypt ile hashlenmeli 114 | - JWT süresi ve doğrulama kontrol edilmeli 115 | - CORS ve Rate Limit uygulanmalı 116 | - Mongo Injection önlenmeli 117 | - Hassas veriler loglara düşmemeli 118 | 119 | --- 120 | 121 | ## ✅ Sonuç 122 | 123 | - Gerçek projeye uygun, modüler ve güvenli yapı sağlanır. 124 | - Mobil veya web frontend kolayca entegre edilebilir. 125 | - Test, auth, validation, route ve model yapısı hazırdır. 126 | 127 | > Backend sadece kod değil, sürdürülebilir bir sistemdir. -------------------------------------------------------------------------------- /projects/hotel-booking-app/design.md: -------------------------------------------------------------------------------- 1 | # 🎨 Tasarım Rehberi – Hotel Booking App 2 | 3 | Bu doküman, UI Kit'in nasıl kullanılacağı, tasarımı nasıl doğru okuyup yazılıma aktaracağınız ve Figma üzerindeki önemli kuralları içerir. 4 | 5 | --- 6 | 7 | ## 🔗 Figma Tasarımı 8 | 9 | - **Figma URL:** 10 | [Hotel Booking App – Olive Green UI Kit](https://www.figma.com/community/file/1275146473633828854) 11 | 12 | --- 13 | 14 | ## 🖌️ Design System'deki Yapılar 15 | 16 | ### 🎨 Renk Paleti 17 | 18 | - **Primary:** Ana renk grubu (butonlar, öne çıkan alanlar) 19 | - **Secondary:** Yardımcı renk grubu (border, ikon, accent) 20 | - **Tertiary:** Daha yumuşak tonlar (arka planlar, etiketler) 21 | - **Greys / Black / White:** Arayüz dengesi için ideal zemin ve yazı tonları 22 | 23 | > Renklerin hex değerlerini Figma’dan alırken `Inspect` sekmesini kullan. 24 | > UI içinde aynı tonun %10–90 varyantları tercih edilmiş → **opacity ile değil, ayrı renk olarak kodla.** 25 | 26 | --- 27 | 28 | ### 🔡 Tipografi Sistemi 29 | 30 | - Header 1 → Ekran başlığı 31 | - Header 2 → Sekme başlığı, detay sayfası başlığı 32 | - Body 1 → Paragraflar 33 | - Caption → Yardımcı bilgiler (örnek: “giriş yapmak üzeresiniz”) 34 | 35 | > Font stilleri arasında line-height, font-weight farkları var. Bunları mutlaka stil dosyasına yansıt. 36 | 37 | --- 38 | 39 | ### 🧿 Icon Kullanımı 40 | 41 | - **Kategorilere ayrılmış:** Money, Media, UI, Crypto, Navigation vs. 42 | - **Tavsiye edilen format:** `SVG` (vector olarak ölçeklenebilir) 43 | 44 | #### 📤 Export Etme: 45 | 46 | 1. İkona tıkla → Sağ panelde `Export` alanını aç. 47 | 2. Format olarak **SVG** seç → “Export [icon name]” 48 | 3. Uygulamanın `assets/icons/` klasörüne yerleştir. 49 | 4. Kod tarafında asset yönlendirmesi yapılmalı. 50 | > Örnek: `Image.asset('assets/icons/search.svg')` 51 | 52 | --- 53 | 54 | ### 🔲 Butonlar & Inputlar 55 | 56 | - 4 tip buton: düz, ikonlu, sadece ikon, disabled 57 | - Textbox ve dropdown bileşenleri hazır durumda 58 | - Yazı boyutları, padding ve corner-radius değerleriyle birlikte tanımlanmış 59 | 60 | > UI geliştirirken bu komponentleri parçala: 61 | - `Button` → atom 62 | - `TextInputWithLabel` → molecule 63 | - `SearchBar` → organism 64 | 65 | --- 66 | 67 | ## ⚙️ iOS System Default Rehberi 68 | 69 | UI Kit içerisinde yer alan bazı ekranlar **iOS native davranışları** için örneklenmiştir. 70 | Bunları incelerken: 71 | 72 | - Navigation yapısına dikkat et (sol/orta/sağ bölge) 73 | - Segment, checkbox, radio, switch bileşenlerini iOS’a uygun stillerle kodla 74 | - iOS keyboard ve emoji UI’leri referans amaçlıdır 75 | 76 | --- 77 | 78 | ## 🧠 Tasarımı Kodlarken Dikkat Etmen Gerekenler 79 | 80 | ✅ **Pixel-perfect takıntısına gerek yok** – önemli olan uyumlu görünüm 81 | ✅ Auto layout → padding/margin değerlerini öğrenmek için 82 | ✅ Font büyüklüğü ve ağırlığı → responsive stil sistemi kurarken belirleyici 83 | ✅ Komponentlerin tek tek değil, gruplar halinde yazılması (design-to-code disiplini) 84 | ✅ Renk, ikon, yazı stilleri `constants.dart` veya `theme.ts` gibi tek merkezden tanımlanmalı 85 | ✅ Görseller `2x`, `3x` gibi retina destekli boyutlarla eklenmeli 86 | 87 | --- 88 | 89 | ## 🔨 Geliştirici Notları 90 | 91 | - Her bileşen için “reusable” düşün: `HotelCard`, `RatingStars`, `FilterTag` gibi 92 | - Layout kurarken spacing değerlerine dikkat et (Figma'daki spacing’ler önemli!) 93 | - SVG ikonları component gibi çağır → PNG kullanma 94 | - UI ekranları test edilirken tasarımla görsel karşılaştırma yapılmalı 95 | 96 | --- 97 | 98 | ## ✅ Özet 99 | 100 | Figma sadece tasarım dosyası değil, **geliştirme sözleşmesidir.** 101 | 102 | - Anlamadan kopyalama 103 | - Parçala ve gruplandır 104 | - Kod tarafında sistemli bir yapı kur 105 | - Her şeyin kaynağı Figma'dır → iyi okuyarak geliştir 106 | 107 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/devops.md: -------------------------------------------------------------------------------- 1 | # ⚙️ DevOps Rehberi – Hotel Booking App 2 | 3 | Bu doküman, Hotel Booking App gibi tüm projelerde sürdürülebilir, güvenli ve hızlı geliştirilebilir bir sistem altyapısı oluşturmak için rehber olarak hazırlanmıştır. Amacımız; tüm geliştiricilerin kurulumdan dağıtıma kadar aynı yapıda ilerlemesini sağlamak ve CI/CD süreçlerini standartlaştırmaktır. 4 | 5 | --- 6 | 7 | ## 🚀 CI/CD Süreci (En Önemli Katman) 8 | 9 | ### Neden Önemli? 10 | 11 | - Ortam farklarını ortadan kaldırır 12 | - Otomatik test, build ve dağıtım sağlar 13 | - Zaman kazandırır, hata oranını azaltır 14 | - Herkes için aynı kurulum ve dağıtım tecrübesini sunar 15 | 16 | --- 17 | 18 | ### 📦 Backend için CI/CD 19 | 20 | #### Kullanılabilecek Araçlar 21 | - **GitHub Actions:** Otomatik test, build, deploy süreci için 22 | - **Render / Railway / Fly.io / Heroku:** Otomatik deploy ortamları 23 | - **Docker:** Ortamları izole etmek ve taşıması kolay hale getirmek için 24 | 25 | #### Önerilen Akış 26 | 27 | 1. Pull Request açıldığında otomatik testler çalışır 28 | 2. Merge sonrası: 29 | - Build alınır 30 | - Staging ortamına deploy edilir 31 | - Tag veya release sonrası production ortamına otomatik geçiş yapılır 32 | 33 | #### Build Çıktısı 34 | - `dist/`, `build/`, `out/` klasörlerine veya Docker image olarak hazırlanır 35 | - Deploy çıktısı Render, Railway gibi ortamlara aktarılır 36 | 37 | --- 38 | 39 | ### 📱 Mobile için CI/CD 40 | 41 | #### Kullanılabilecek Araçlar 42 | - **GitHub Actions** (her platform için destek sağlar) 43 | - **Fastlane:** Android (.apk) & iOS (.ipa) build alma ve dağıtım işlemleri 44 | - **Firebase App Distribution / TestFlight:** Test kullanıcılarına dağıtım için 45 | 46 | #### Önerilen Akış 47 | 48 | 1. PR merge edilince: 49 | - Versiyon güncellenir (örn: Fastlane `bump`) 50 | - Android/iOS için release build alınır 51 | - TestFlight (iOS) veya Firebase (Android) üzerinden dağıtım yapılır 52 | 53 | #### Build Çıktısı 54 | - Android: `build/app/outputs/flutter-apk/app-release.apk` 55 | - iOS: `build/ios/ipa/app-release.ipa` 56 | 57 | --- 58 | 59 | ## 📦 Ortak İlkeler 60 | 61 | - Ortamlar ayrılmış olmalı: development / staging / production 62 | - CI/CD pipeline dosyaları `.github/workflows/` klasöründe tanımlanmalı 63 | - Her değişiklikte otomatik test ve build akışı çalışmalı 64 | - Build’ler versiyonlanmalı ve otomatik olarak dağıtılmalı 65 | 66 | --- 67 | 68 | ## 🔐 Güvenlik Kuralları 69 | 70 | - API anahtarları, şifreler, token’lar **asla kodda tutulmamalıdır** 71 | - Ortam yapılandırmaları gizli kalmalıdır 72 | - Loglar anonimleştirilmeli, hassas veri içermemeli 73 | - Mobil tarafta güvenli depolama (Keychain, EncryptedStorage) kullanılmalı 74 | - Backend tarafında rate limit, CORS ve input validation kuralları aktif olmalıdır 75 | 76 | --- 77 | 78 | 79 | ## 📂 Dosya Yapısı Önerisi 80 | 81 | hotel-app/ 82 | ├── backend/ 83 | │ ├── .env.example 84 | │ ├── docker-compose.yml 85 | │ └── ... 86 | ├── mobile/ 87 | │ ├── .env.example 88 | │ ├── flutter/ 89 | │ └── ... 90 | └── .github/ 91 | └── workflows/ 92 | └── ci.yml 93 | 94 | --- 95 | 96 | ## ✅ Sonuç 97 | 98 | - Projeye dahil olan herkes kolayca geliştirmeye başlayabilir 99 | - CI/CD sayesinde üretim süreci otomatikleşir 100 | - Güvenlik ve ortam tutarlılığı sağlanır 101 | - Build, test ve dağıtım hataları en aza iner 102 | 103 | > Gerçek bir proje, sadece çalışan kod değil; aynı zamanda herkesin kurup dağıtabildiği bir sistemdir. 104 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/end_project.md: -------------------------------------------------------------------------------- 1 | # 🏁 Projeyi Tamamlayanlar – Developer Board 2 | 3 | # Bu liste, projeyi başarıyla tamamlayan geliştiricilerin adlarını ve proje bağlantılarını içerir. 4 | # Siz de projeyi tamamladıysanız isminizi ve GitHub linkinizi aşağıya ekleyin! 💪 5 | 6 | --- 7 | 8 | # ✅ Katılımcılar 9 | 10 | - **X Y** → [flutter_hotel_book](https://github.com/flutter_hotel_book) 11 | 12 | --- 13 | 14 | # ✍️ Nasıl Eklenir? 15 | 16 | Projeyi tamamladığınızda aşağıdaki formatta bir satır ekleyin: 17 | 18 | - **Adınız Soyadınız** → [proje_adi](https://github.com/kullanici/proje_adi) 19 | 20 | 🧠 Öneri: PR açıklamasında projenizde neleri farklı yaptığınızı, neleri öğrendiğinizi de paylaşabilirsiniz. 21 | 22 | --- 23 | 24 | # 🧩 Bu Dosya Ne İşe Yarar? 25 | 26 | - Kendi ilerlemenizi takip etmenizi sağlar 27 | - Topluluğa katkınızı görünür kılar 28 | - Diğer geliştiricilere ilham olur 29 | - Yeni iş fırsatlarında portföy olarak sunulabilir 30 | 31 | --- 32 | 33 | # 🛠️ Gelecekte 34 | 35 | Bu liste, ilerleyen dönemde **bir leaderboard** ya da topluluk destekli bir vitrin sayfasına dönüştürülebilir. 36 | Daha fazla katılımla birlikte badge sistemi gibi özellikler de eklenecektir. 🚀 37 | 38 | > Unutma, yaptığın her proje seni bir adım ileri taşır. Bırak izini burada! ✨ 39 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/figma-assets/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VB10/real_projects_for_developers/e09023dc2d20eaae83ec67e73ed56a1036a6feaf/projects/hotel-booking-app/figma-assets/cover.png -------------------------------------------------------------------------------- /projects/hotel-booking-app/figma-assets/full_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VB10/real_projects_for_developers/e09023dc2d20eaae83ec67e73ed56a1036a6feaf/projects/hotel-booking-app/figma-assets/full_project.png -------------------------------------------------------------------------------- /projects/hotel-booking-app/figma-assets/link.md: -------------------------------------------------------------------------------- 1 | [Hotel Booking App – Olive Green UI Kit](https://www.figma.com/community/file/1275146473633828854) 2 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/mobile.md: -------------------------------------------------------------------------------- 1 | # 📱 Mobil Geliştirme Rehberi – Hotel Booking App 2 | 3 | Bu doküman, Hotel Booking App projesinin mobil tarafını geliştirecek geliştiriciler için hazırlanmıştır. 4 | Amaç; ekran bazlı düşünmeyen, sistemsel yaklaşan, yeniden kullanılabilir ve ölçeklenebilir bir mobil uygulama geliştirmektir. 5 | 6 | --- 7 | 8 | ## 🎯 Geliştirme Amaçları 9 | 10 | - Gerçek bir UI tasarımını kodla uyumlu hale getirmek 11 | - Component bazlı yapı kurmak 12 | - Navigasyon, state management, veri yönetimini kontrollü ilerletmek 13 | - Backend API ile senkron çalışan bir mobil yapı geliştirmek 14 | 15 | --- 16 | 17 | ## 📱 Ekran ve Modül Yapısı 18 | 19 | ### 🛫 Onboarding & Auth 20 | - Splash 21 | - Onboarding slider 22 | - Login / Register / Forgot password 23 | 24 | ### 🏨 Hotel Discovery 25 | - Hotel listesi (arama + filtreleme dahil) 26 | - Hotel detayları 27 | - Galeri görünümü (slider) 28 | 29 | ### 📅 Booking Akışı 30 | - Tarih & kişi seçimi 31 | - Ödeme bilgileri (mock) 32 | - Rezervasyon özeti 33 | 34 | ### 👤 Kullanıcı Modülü 35 | - Profil bilgileri 36 | - Şifre değiştir 37 | - Rezervasyon geçmişi 38 | - Logout 39 | 40 | --- 41 | 42 | ## 🧩 Komponentleşme Stratejisi 43 | 44 | Tüm UI bileşenleri aşağıdaki mantıkla bölünmeli: 45 | 46 | | Seviye | Örnek | Açıklama | 47 | |-------------|-----------------------------------|--------------------------------------| 48 | | Atom | Button, Icon, Text, Input | En küçük bağımsız birimler | 49 | | Molecule | SearchBar, PriceFilter, HotelTag | 2+ atom birleşimi | 50 | | Organism | HotelCard, ReservationBox | Tam bloklar (liste elemanı vs.) | 51 | | Template | FilterScreenLayout, ProfileLayout | Sayfa yapısı (iç layout) | 52 | | Page | HotelListPage, ProfilePage | Gerçek ekran | 53 | 54 | > UI parçalanırken **design.md** içindeki sistemden referans al. 55 | 56 | --- 57 | 58 | ## 🧭 Navigasyon Sistemi 59 | 60 | - Sayfa yönlendirmeleri merkezi olarak tanımlanmalı (örnek: route config) 61 | - `push` / `replace` / `popUntil` gibi davranışlar net ayrılmalı 62 | - Deep link desteği opsiyonel ama önerilir 63 | - Route isimlendirmeleri: 64 | - `auth/login` 65 | - `hotel/:id` 66 | - `booking/summary` 67 | 68 | --- 69 | 70 | ## ⚙️ State Management (Framework’e göre değişebilir) 71 | 72 | - Sayfa içi state: local 73 | - Ekranlar arası global state: centralized (Provider, Redux, Bloc, vb.) 74 | - Network state: ayrı yapı (örn: repository + service katmanı) 75 | - Reservation gibi kritik akışlarda adım adım state kontrolü önerilir 76 | 77 | --- 78 | 79 | ## 🧰 Geliştirme Kuralları 80 | 81 | - [ ] Tüm sabitler (`colors`, `fonts`, `spacing`) merkezi dosyada 82 | - [ ] Component isimleri net ve anlamlı (örn: `PrimaryButton`, `HotelInfoCard`) 83 | - [ ] Responsive yapı kurulmalı (MediaQuery, LayoutBuilder, GeometryReader vs.) 84 | - [ ] Tüm UI'ler boş/başarısız/loading durumlarını göstermeli 85 | - [ ] Kodda yorumlar minimumda, ama açıklayıcı dosya yapısı şart 86 | 87 | --- 88 | 89 | ## 🌐 API Bağlantısı 90 | 91 | - [ ] `services/` altında API erişimleri yapılandırılmalı 92 | - [ ] HTTP katmanı ayrıştırılmalı (örn: `apiClient.get()`) 93 | - [ ] Token kontrolü otomatik yapılmalı (header interceptor vs.) 94 | - [ ] Tüm veri modelleri `models/` klasöründe tutulmalı 95 | 96 | --- 97 | 98 | ## 🧪 Test Süreci 99 | 100 | - Mock data üzerinden UI testleri (örn: `MockHotelList`) 101 | - Navigasyon testleri (bir ekrandan diğerine geçiş) 102 | - API entegrasyonu varsa test endpoint’leriyle deneme 103 | - Minimum: 104 | - Her component için ekran görüntüsü 105 | - Navigasyon dizisi 106 | - State geçiş kontrolü 107 | 108 | --- 109 | 110 | ## 🛠️ Katılım ve PR Süreci 111 | 112 | 1. `mobile/` altında kendi stack’ine özel klasörde çalış (örn: `flutter/`, `swiftui/`) 113 | 2. Görev almak için issue seç → altına yorum bırak 114 | 3. Branch oluştur: `feature/login-page` 115 | 4. Kodla → test et → ekran görüntüsü al → PR aç 116 | 5. Açıklayıcı commit mesajı + açıklama yaz (örn: "Login ekranı tasarlandı, auth servisi bağlandı") 117 | 118 | --- 119 | 120 | ## 📌 Ek Notlar 121 | 122 | - Tüm UI’ler tasarımla karşılaştırılmalı. %100 pixel-perfect değilse bile oranlar ve genel yapı uyumlu olmalı. 123 | - Tüm component'ler başka ekranda tekrar kullanılabilir şekilde yazılmalı. 124 | - Linter kuralları uygulanmalı. Kod okunabilirliği korunmalı. 125 | 126 | --- 127 | 128 | ## ✅ Sonuç 129 | 130 | Mobil geliştirme yalnızca ekran yapmak değildir. 131 | Bu projede: 132 | 133 | - Kullanıcı akışı düşünülerek yapı kurulur 134 | - Reusable component mantığı benimsenir 135 | - UI tasarımı sistemsel okunur 136 | - Backend ile entegre ve test edilebilir bir yapı kurulur 137 | 138 | > Kalıcı kod yaz, ekran üretme. 139 | > Sistem kur, tekrar kullan. 🔁 140 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/mobile/flutter.md: -------------------------------------------------------------------------------- 1 | # 📱 Flutter Yapısı – Hotel Booking App (MVVM + Modular) 2 | 3 | Bu yapı, `Home` modülünü baz alarak MVVM yapısını `Cubit` ile birlikte uygular. 4 | Ayrıca `envied` ile güvenlik ve `easy_localization` ile çoklu dil desteği sağlanır. 5 | 6 | --- 7 | 8 | # 🧱 MVVM Mimarisi 9 | 10 | ## Katmanlar: 11 | 12 | - **Model** → Veri sınıfları ve dönüşümler 13 | - **View** → UI katmanı 14 | - **Cubit (ViewModel)** → State yönetimi, iş mantığı 15 | - **Widget** → Reusable bileşenler 16 | 17 | --- 18 | 19 | # 🗂️ Klasör Yapısı: 20 | 21 | 22 | lib/ 23 | ├── core/ 24 | │ ├── config/ 25 | │ ├── services/ 26 | │ ├── utils/ 27 | │ └── localization/ 28 | ├── features/ 29 | │ └── home/ 30 | │ ├── model/ 31 | │ ├── cubit/ 32 | │ ├── view/ 33 | │ │ └── widget/ 34 | ├── product/ 35 | │ ├── constants/ # Renkler, yazı tipleri, sabit değerler 36 | │ │ ├── color_constants.dart 37 | │ │ ├── padding_constants.dart 38 | │ │ └── text_constants.dart 39 | │ ├── widgets/ # Ortak bileşenler 40 | │ │ ├── custom_button.dart 41 | │ │ └── loading_indicator.dart 42 | │ ├── utils/ # Genel yardımcı fonksiyonlar 43 | │ │ ├── validators.dart 44 | │ │ └── date_formatter.dart 45 | │ ├── extensions/ # Extension metodlar 46 | │ │ ├── context_extension.dart 47 | │ │ └── string_extension.dart 48 | │ └── theme/ # Tema yönetimi 49 | │ ├── app_theme.dart 50 | │ └── light_theme.dart 51 | ├── main.dart 52 | └── app.dart 53 | 54 | --- 55 | 56 | # ✅ product/ Klasörünün Kullanım Amaçları 57 | 58 | - Tüm modüllerde ortak kullanılacak **UI bileşenleri** buraya yazılır 59 | - `utils/` ile ortak **yardımcı metodlar** merkezi hale getirilir 60 | - `constants/` ile renk, padding, font gibi sabitler modüllerden ayrılır 61 | - `extensions/` ile Flutter'a özel işlevsellik genişletilir 62 | - `theme/` ile dark/light tema geçişi kolaylaşır 63 | 64 | --- 65 | 66 | # 📦 Kullanılacak Paketler 67 | 68 | dependencies: 69 | flutter: 70 | sdk: flutter 71 | 72 | # State Management 73 | flutter_bloc: ^8.1.3 74 | equatable: ^2.0.5 75 | 76 | # Navigation 77 | go_router: ^12.1.1 78 | 79 | # Localization 80 | easy_localization: ^3.0.3 81 | 82 | # Networking 83 | dio: ^5.3.2 84 | 85 | # Security & Environment 86 | envied: ^0.5.0 87 | envied_generator: ^0.5.0 88 | 89 | dev_dependencies: 90 | flutter_test: 91 | sdk: flutter 92 | build_runner: ^2.4.6 93 | envied_generator: ^0.5.0 94 | integration_test: 95 | sdk: flutter 96 | 97 | --- 98 | 99 | # 🌐 Localization Yapısı (easy_localization) 100 | 101 | - `assets/translations/` klasörü oluştur. 102 | - `en.json`, `tr.json` gibi dosyalar ekle. 103 | - `MaterialApp` içine aşağıdaki yapı eklenmeli: 104 | 105 | ```dart 106 | return EasyLocalization( 107 | supportedLocales: [Locale('en'), Locale('tr')], 108 | path: 'assets/translations', 109 | fallbackLocale: Locale('en'), 110 | child: MyApp(), 111 | ); 112 | ``` 113 | 114 | --- 115 | 116 | ## 🔐 Güvenli Ortam Değişkenleri (envied) 117 | 118 | .env dosyası yerine Envied kullanılır. 119 | Aşağıdaki gibi .env değil, env.dart dosyası kullanılır: 120 | 121 | ```dart 122 | 123 | import 'package:envied/envied.dart'; 124 | 125 | part 'env.g.dart'; 126 | 127 | @Envied(path: '.env') 128 | abstract class Env { 129 | @EnviedField(varName: 'BASE_URL') 130 | static const String baseUrl = _Env.baseUrl; 131 | } 132 | ``` 133 | 134 | --- 135 | 136 | ## 🎯 Modül Kurulumu – home 137 | 138 | features/home/ ├── cubit/ 139 | │ └── home_cubit.dart 140 | ├── model/ 141 | │ └── hotel_model.dart 142 | ├── view/ 143 | │ ├── home_view.dart 144 | │ └── widget/ 145 | │ └── hotel_card.dart 146 | 147 | --- 148 | 149 | ## ✅ Örnek Akış 150 | 151 | View → Cubit → API → Model → Cubit → View 152 | 153 | Localization → easy_localization 154 | 155 | Güvenli veri → envied 156 | 157 | Navigation → go_router 158 | 159 | --- 160 | 161 | ## ✨ Ekstra 162 | 163 | Responsive yapı için LayoutBuilder, MediaQuery, flutter_screenutil tercih edilebilir. 164 | 165 | UI component'ları widget/ klasöründe ayrı tutulmalı. 166 | 167 | Cubit'lerde sadece state ve veri akışı olmalı, business logic buraya taşınmamalı. 168 | 169 | Bu yapı; modüler, güvenli, sürdürülebilir ve gerçek projelerde uygulanabilir bir temel sunar. 170 | --- 171 | 172 | İstersen bu içeriği `.yaml`, `.md` veya `.txt` olarak çıktı haline getirebilirim. 173 | Hazırsan `home_cubit.dart`, `env.dart`, ya da örnek bir view dosyası oluşturarak devam edebiliriz. -------------------------------------------------------------------------------- /projects/hotel-booking-app/project.md: -------------------------------------------------------------------------------- 1 | # 🏨 Hotel Booking App – Proje Tanımı 2 | 3 | Bu proje, kullanıcıların mobil cihazları üzerinden otel arayabildiği, filtreleyebildiği, detaylarını görüntüleyip rezervasyon yapabildiği modern bir rezervasyon uygulamasını kapsamaktadır. 4 | 5 | Amaç; hazır bir UI kit üzerinden ilerleyerek, bir uygulamanın fikirden ürüne dönüşme sürecini gerçek bir proje gibi deneyimlemektir. 6 | 7 | --- 8 | 9 | ## 🎯 Proje Hedefleri 10 | 11 | - Gerçekçi bir otel rezervasyon uygulaması geliştirmek 12 | - Tasarıma sadık kalarak kullanıcı deneyimi yüksek bir ürün ortaya koymak 13 | - Mobil ve backend tarafını paralel götürerek ekip çalışması örneği oluşturmak 14 | - Yeni geliştiricilere proje yönetimi, görev takibi ve açık kaynak geliştirme alışkanlıkları kazandırmak 15 | 16 | --- 17 | 18 | ## 🧩 Proje Özeti 19 | 20 | - Kullanıcı onboarding & giriş/kayıt 21 | - Otel listeleme ve filtreleme 22 | - Otel detay sayfası 23 | - Rezervasyon oluşturma 24 | - Ödeme akışı (test ortamı) 25 | - Profil yönetimi ve geçmiş rezervasyonlar 26 | 27 | ## ⏱️ Süre ve İş Gücü Tahmini 28 | 29 | Bu proje uçtan uca tamamlanmak istendiğinde, tasarımdan yayına kadar birçok süreci içerir: 30 | 31 | ### Dahil Olan Adımlar 32 | - Tasarım analiz ve bileşen planlama 33 | - Mobil uygulama kurulumu, MVVM yapı, sayfa geliştirmeleri 34 | - Backend kurulumu (Node.js veya Firebase), API endpoint geliştirmeleri 35 | - Ortam değişkenleri, localizasyon, auth sistemi 36 | - Test altyapısı (unit/widget/postman/firebase emulator) 37 | - CI/CD pipeline kurulumu 38 | - Dokümantasyon ve deploy 39 | 40 | --- 41 | 42 | ### 📊 Geliştirici Profiline Göre Tahmini Süre (Adam/Gün) 43 | 44 | | Geliştirici Profili | Mobil (Flutter) | Backend (Node.js/Firebase) | Ortak İşler (test, ci, dokümantasyon) | Toplam | 45 | |----------------------------|------------------|-----------------------------|----------------------------------------|--------| 46 | | 👨‍🎓 Öğrenci / Yeni Başlayan | 50–60 gün | 20–25 gün | 10–15 gün | **85–100 gün** | 47 | | 👨‍💻 Deneyimli Geliştirici | 15–20 gün | 9–12 gün | 5–7 gün | **30–40 gün** | 48 | 49 | > Bütçelerinizi adam gün çarpı asgari ücret olarak hesaplayabilirsiniz başlangıçta. 50 | > Süreler full-time çalışmaya göredir. Part-time ilerlemede 2 kat süre alabilir. 51 | > Ortak işler; test yazma, CI/CD entegrasyonu, dokümantasyon, refactor, task yönetimi gibi görevleri içerir. 52 | 53 | --- 54 | 55 | ### 🔄 Geliştirme Akışı Önerisi 56 | 57 | 1. 🎯 Tasarım inceleme & bileşen çıkarımı 58 | 2. 📱 Mobil sayfa & navigasyon yapısı 59 | 3. 💻 Backend (auth, db, booking sistemi) 60 | 4. 🧪 Test ve validasyon 61 | 5. 📦 Paketleme & pipeline kurulumu 62 | 6. 📖 Dokümantasyon & teslim 63 | 64 | --- 65 | 66 | 📌 **Notlar:** 67 | - Gerçek dünyada bu tarz proje MVP olarak 1–1.5 ayda çıkarılabilir. 68 | - Test ve CI/CD süreçleri ihmal edilmemelidir. 69 | - Bu planlama, “öğrenerek geliştiren” kişiler için optimize edilmiştir. 70 | 71 | --- 72 | 73 | ## 🔧 Genel Yapılacaklar (Framework bağımsız) 74 | 75 | - [ ] Tasarım ekranlarının analizi 76 | - [ ] Navigasyon akışı ve ekran sıralaması 77 | - [ ] Sayfa arayüzlerinin kodlanması 78 | - [ ] Otel verisinin modellenmesi 79 | - [ ] Filtreleme ve sıralama mantığının kurulması 80 | - [ ] Rezervasyon oluşturma sistemi 81 | - [ ] Kimlik doğrulama (Login / Register / Şifre sıfırlama) 82 | - [ ] Ödeme ekranı (mock / sandbox) 83 | - [ ] Profil yönetimi 84 | - [ ] Backend API uç noktaları ve testler 85 | - [ ] Dokümantasyonların hazırlanması 86 | 87 | --- 88 | ## 📋 Görev Yönetimi (GitHub Issues) 89 | 90 | Tüm görevler GitHub’daki **Issues** sekmesinden takip edilir. 91 | Her görev bir “Issue” olarak açılır ve aşağıdaki gibi yazılır: 92 | 93 | #### Örnek Issue: 94 | 95 | **Başlık:** Otel Listeleme Kartı UI 96 | **Açıklama:** 97 | - Ekran: Figma - Screen #14 98 | - Yapılacaklar: 99 | - Otel adı, fiyat, puan, görsel ve konum bilgisi gösterilecek 100 | - Responsive olmalı 101 | - Zorluk: Orta 102 | - Süre: 1 gün 103 | 104 | --- 105 | 106 | ## 🧠 Görev Alma ve Katkı Süreci 107 | 108 | 1. **Bir görev almak istiyorsan:** 109 | - İlgili issue altına "Bu görevi alıyorum" yorumunu yap. 110 | - Görev sana atanacak (veya kendi çatalladığın repoda sen almış sayılırsın). 111 | 112 | 2. **Branch oluştur:** 113 | git checkout -b feature/otel-karti-ui 114 | 115 | 3. **Kod geliştir:** 116 | - Küçük commit’lerle ilerle 117 | - Açıklayıcı commit mesajları yaz: 118 | ``` 119 | feat: otel kartı UI tasarlandı 120 | fix: kart padding hatası giderildi 121 | ``` 122 | 123 | 4. **Pull Request (PR) oluştur:** 124 | - Ana dala değil, proje içindeki ilgili dala PR aç. 125 | - Açıklama kısmına: 126 | - Hangi issue’yu kapattığını belirt (`Closes #23`) 127 | - Ne yaptığını özetle 128 | - Ekran görüntüsü ya da test senaryosu varsa ekle 129 | 130 | 5. **Gözden geçirme (review) sonrası birleşme (merge)** 131 | - PR incelendikten sonra `main` ya da `develop` dalına alınır. 132 | - Merge işlemi sonrası ilgili issue kapatılır. 133 | 134 | --- 135 | 136 | ## ⏱️ Önerilen Takvim 137 | 138 | Bu proje 1 hafta içinde tamamlanabilir şekilde planlanmıştır. 139 | Kendi zamanına göre uyarlayabilirsin. 140 | 141 | | Aşama | Süre | 142 | |---------------------------|----------| 143 | | Tasarım analizi | 1 gün | 144 | | Sayfa yapılarının çıkarılması | 1 gün | 145 | | UI geliştirme | 2 gün | 146 | | Backend model & API | 1 gün | 147 | | Entegrasyon & test | 1 gün | 148 | | Son düzenleme | 1 gün | 149 | 150 | --- 151 | 152 | ## 🔗 Figma Tasarımı 153 | 154 | UI Kit: **Hotel Booking App – Olive Green** 155 | Figma Link: [Figma UI Kit](https://www.figma.com/file/XXXXXX) 156 | 157 | --- 158 | 159 | Hazırsan bir issue seç, dalını oluştur ve katkı sağlamaya başla. 160 | Bu proje seni sadece kod yazmaya değil, birlikte üretmeye de alıştıracak. 🙌 161 | -------------------------------------------------------------------------------- /projects/hotel-booking-app/test.md: -------------------------------------------------------------------------------- 1 | # ✅ Test Stratejisi – Hotel Booking App 2 | 3 | Bu doküman, Hotel Booking App projesi için uygulanan test stratejilerini, kullanılacak test araçlarını ve test süreçlerinde dikkat edilmesi gereken noktaları kapsamaktadır. Amaç, hata oranını azaltmak, kullanıcı deneyimini artırmak ve sürüm güvenliğini sağlamaktır. 4 | 5 | --- 6 | 7 | ## 🧪 1. Genel Test Türleri 8 | 9 | | Test Türü | Açıklama | 10 | |---------------|----------| 11 | | Smoke Test | Sistem genelinin ayakta olduğunu kontrol eder. Temel senaryolar test edilir. | 12 | | A/B Testi | Kullanıcıların farklı varyantlarla karşılaştırılması ve geri bildirim alınması. | 13 | | Unit Test | Bireysel fonksiyonların doğru çalışıp çalışmadığını test eder. | 14 | | Integration Test | Servislerin birbiriyle uyumlu çalışıp çalışmadığını kontrol eder. | 15 | | End-to-End (E2E) Test | Kullanıcının tüm yolculuğu simüle edilir. | 16 | | Regression Test | Yeni geliştirmeler sonrası eski işlevlerin bozulmadığı test edilir. | 17 | | UAT (User Acceptance Test) | Son kullanıcıların onayına sunulan test süreci. | 18 | 19 | --- 20 | 21 | ## 🧭 2. Test Sürecinde Dikkat Edilmesi Gerekenler 22 | 23 | - Gerçek kullanıcı senaryoları üzerinden test senaryoları hazırlanmalı 24 | - Otomasyon + manuel testler bir arada düşünülmeli 25 | - Her modül kendi içinde test edilebilir olmalı (modüler yapı) 26 | - Çıkan bug'lar issue olarak açılmalı, detaylı açıklanmalı 27 | - Test edilen endpointler ve varyantlar dökümante edilmeli 28 | - Test isimleri anlamlı olmalı, testler izlenebilir ve tekrar edilebilir olmalı 29 | 30 | --- 31 | 32 | ## 🖥️ 3. Backend Testleri 33 | 34 | ### Amaç: 35 | - API uçlarının doğru çalıştığını garanti etmek 36 | - Input / output validasyonlarını test etmek 37 | - Hatalı isteklerde doğru error mesajı ve statü kodu dönmesini sağlamak 38 | 39 | ### Araçlar: 40 | - Jest 41 | - Supertest 42 | - Postman (Manual testler için) 43 | - Swagger (API dokümantasyonu test senaryoları için) 44 | 45 | ### Örnekler: 46 | - `/api/auth/login` → yanlış şifre girildiğinde 401 dönmeli 47 | - `/api/bookings` → login olmayan kullanıcı POST yapamamalı 48 | - `/api/hotels` → veritabanındaki tüm oteller dönmeli 49 | 50 | --- 51 | 52 | ## 📱 4. Mobile Testleri 53 | 54 | ### Amaç: 55 | - Kullanıcı arayüzü ve deneyiminin kusursuz olmasını sağlamak 56 | - Form validasyonları, hata senaryoları, yönlendirmeler test edilmeli 57 | 58 | ### Araçlar: 59 | - Flutter için: `flutter_test`, `integration_test` 60 | - Android Studio: Emulator testleri 61 | - Firebase Test Lab: Gerçek cihaz testleri 62 | - Manual testler: Farklı ekran çözünürlükleri ve cihazlarla yapılmalı 63 | 64 | ### Örnekler: 65 | - Giriş ekranında boş email → hata gösterilmeli 66 | - Rezervasyon sonrası "başarılı" mesajı gösterilmeli 67 | - Geri butonu kullanıcıyı ana ekrana yönlendirmeli 68 | 69 | --- 70 | 71 | ## 🛠️ 5. Test Araçları ve Çerçeveleri 72 | 73 | | Araç / Çerçeve | Kullanım Alanı | 74 | |------------------------|-----------------------------| 75 | | Jest | Backend unit ve integration test | 76 | | Supertest | Express API endpoint testi | 77 | | Postman | Manuel backend testi | 78 | | Flutter integration_test | Mobil cihaz UI testi | 79 | | Firebase Test Lab | Cihazlar arası test | 80 | | GitHub Actions | CI test otomasyonu | 81 | 82 | --- 83 | 84 | ## 📌 6. Ek Notlar 85 | 86 | - Testler sürekli entegrasyon sistemine (CI) bağlı olmalı 87 | - Pull Request’ler otomatik testle onaylanmalı 88 | - Coverage raporu alınmalı (örnek: `jest --coverage`) 89 | - Her yeni özellik için en az 1 test yazılmalı 90 | 91 | --- 92 | 93 | ## ✅ Sonuç 94 | 95 | Doğru test sistemi, sürüm kalitesini belirler. 96 | Hatalar erken bulunur, kullanıcı memnuniyeti artar. 97 | Testler sadece yazılımı değil, kullanıcıyı da güvenceye alır. 98 | 99 | > Yazılım geliştirmenin en kritik adımı: Test etmektir. -------------------------------------------------------------------------------- /script/project_create.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Yeni proje adını giriniz:" 4 | read project_name 5 | 6 | # Ana klasör altına projeler klasörünü ve proje klasörünü oluştur 7 | mkdir -p projects/"$project_name"/figma-assets 8 | cd projects/"$project_name" || exit 9 | 10 | # Dosyaları oluştur 11 | touch README.md project.md mobile.md backend.md devops.md design.md 12 | 13 | # README.md içine örnek içerik yaz 14 | cat < README.md 15 | # 📱 $project_name Projesi 16 | 17 | Bu klasör **$project_name** projesine aittir. 18 | 19 | İlgili belgeler: 20 | - 📘 project.md – Genel proje açıklaması 21 | - 📱 mobile.md – Mobil uygulama geliştirme detayları 22 | - 🖥️ backend.md – Backend mimarisi ve görevleri 23 | - ⚙️ devops.md – Deployment, CI/CD, çevresel değişkenler 24 | - 🎨 design.md – Tasarım sistemi, UI kit notları, Figma bağlantısı 25 | 26 | Ana dil: Türkçe 🇹🇷 27 | EOF 28 | 29 | echo "✅ $project_name projesi başarıyla oluşturuldu." 30 | --------------------------------------------------------------------------------