Softiel müşterilerinin devam eden projelerini takip edebileceği universal mobil + web uygulaması.
- ✅ Proje ilerleme takibi
- 📋 Aşamalar (phases) ve görevler (tasks)
- 📢 Güncellemeler (updates)
- 📁 Dosya paylaşımı
- ✅ Onay/revizyon süreçleri
- 💬 Gerçek zamanlı mesajlaşma
- 📊 Analiz & timeline
- 🔔 Bildirimler
- 📦 Final teslim paketi
- Expo (React Native) - Universal app framework
- TypeScript - Type safety
- Nativewind - Tailwind CSS for React Native
- Firebase - Backend (Auth, Firestore, Storage)
- Zustand - UI state management
- React Query - Server state management
- Expo Router - File-based routing
npm installÖNEMLİ: Bu proje mevcut Softiel website Firebase database'inizi kullanır. Yeni bir Firebase projesi oluşturmanıza gerek yok!
- Mevcut Firebase Console'unuza gidin: https://console.firebase.google.com/
- Authentication'ın etkin olduğundan emin olun (Email/Password)
- Firestore Database'in aktif olduğundan emin olun
- Storage'ın aktif olduğundan emin olun
.env.exampledosyasını.envolarak kopyalayın- Mevcut Firebase projenizin config değerlerini
.envdosyasına ekleyin
cp .env.example .envDetaylı bilgi için: FIREBASE_INTEGRATION.md dosyasını okuyun.
ÖNEMLİ: Mevcut security rules'larınız korunur, sadece yeni Client Hub rules'ları eklenir.
- Firebase Console → Firestore Database → Rules
firebase/security.rules.clienthubdosyasının içeriğini kopyalayın- Mevcut rules'larınızın üzerine yapıştırın (mevcut rules korunur, sadece yeni rules eklenir)
Detaylı bilgi için: FIREBASE_INTEGRATION.md dosyasını okuyun.
ÖNEMLİ: İlk kullanım için Firebase Console'dan manuel olarak veri oluşturmanız gerekiyor.
NOT: Bu uygulama Firebase Auth kullanmıyor, custom authentication kullanıyor. Mevcut users koleksiyonunu kullanıyoruz.
Firebase Console → Firestore → users koleksiyonuna yeni doküman ekleyin:
- Doküman ID: Unique bir ID (örneğin:
client-user-1) - Fields:
{ "uid": "client-user-1", // Doküman ID ile aynı olabilir "email": "client@example.com", "name": "Client User", "displayName": "Client User", "role": "client", // ÖNEMLİ: 'client' olmalı "password": "client123", // Production'da hash kullanılmalı "isActive": true, // ÖNEMLİ: true olmalı "loginAttempts": 0, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z", "bio": "", "lastLoginAt": null }
ÖNEMLİ:
rolefield'ı'client'olmalı (sadece client kullanıcılar giriş yapabilir)isActivefield'ıtrueolmalıuidfield'ı unique olmalı
Firebase Console → Firestore → projects koleksiyonuna yeni doküman ekleyin:
- ÖNEMLİ:
clientIdfield'ı zorunludur! Bu field olmadan proje Client Hub'da görünmez. - Fields:
{ "clientId": "client-user-1", // users koleksiyonundaki uid ile eşleşmeli "name": "Proje Adı", "status": "active", "progress": 0, "dueDate": "2024-12-31T00:00:00Z", "lastUpdate": "2024-01-01T00:00:00Z", "createdAt": "2024-01-01T00:00:00Z" }
Detaylı bilgi için: FIREBASE_INTEGRATION.md dosyasını okuyun.
# Development server
npm start
# iOS
npm run ios
# Android
npm run android
# Web
npm run webapp/
├─ _layout.tsx # Root layout
├─ index.tsx # Entry point
├─ login/ # Login screen
├─ dashboard/ # Dashboard
└─ projects/ # Projects
├─ index.tsx # Project list
└─ [id]/ # Project detail
├─ index.tsx # Overview
├─ phases.tsx
├─ tasks.tsx
├─ updates.tsx
├─ chat.tsx
├─ files.tsx
├─ approvals.tsx
├─ analytics.tsx
└─ deliverables.tsx
components/ # Reusable components
firebase/ # Firebase config & helpers
hooks/ # Custom hooks
stores/ # Zustand stores
lib/ # Utilities
types/ # TypeScript types
styles/ # Global styles
- Primary Color: #0056b8
- Secondary Color: #ff9700
- Background: #f8f9fb
- Surface: #ffffff
- Text: #1f1f1f
npm run build:webnpx expo prebuild
# iOS için Xcode'da build alın
# Android için Android Studio'da build alın- Softiel Client Hub yalnızca proje takibi içindir
- Tüm ödemeler ve sözleşmeler Upwork üzerinden yapılır
Private - Softiel