Staj başvurularını takip eden, iş ilanlarını listeleyen ve şirket konumlarını haritada gösteren iOS uygulaması.
| Özellik | Açıklama |
|---|---|
| 📝 Başvuru Takibi | Staj başvurularını duruma göre takip edin: Beklemede, Mülakat, Teklif, Red |
| 🌐 İş İlanları | Remotive Public API üzerinden gerçek zamanlı uzaktan ilanlar |
| 🔔 Bildirimler | Yeni ilan algılandığında otomatik local notification |
| 🗺️ Harita | Apple Maps ile şirket konumu görüntüleme ve yol tarifi |
| 💾 Kalıcı Depolama | SwiftData ile cihaz üzerinde yerel veri saklama |
| 🧪 Test Bildirimi | "Test bildirimi gönder" butonu ile bildirim sistemini deneme |
- Dil: Swift 5.9
- UI Framework: SwiftUI
- Veri Katmanı: SwiftData
- Ağ: URLSession
- Harita: MapKit & Apple Maps
- Bildirimler: UserNotifications Framework
- Mimari: Clean Architecture + MVVM
- Minimum iOS: iOS 17
Proje Clean Architecture prensiplerine uygun, katmanlı bir yapıda geliştirilmiştir:
┌─────────────────────────────────────┐
│ Presentation Layer │
│ SwiftUI View + ViewModel │
├─────────────────────────────────────┤
│ Domain Layer │
│ Use Cases + Protocols │
├─────────────────────────────────────┤
│ Data Layer │
│ Repository + Remote + Local │
└─────────────────────────────────────┘
- View: Yalnızca UI bileşenlerini barındırır, iş mantığı içermez
- ViewModel:
@Observableile reaktif veri akışını yönetir - Repository: Yerel (SwiftData) ve uzak (Remotive API) veri kaynaklarını soyutlar
- Xcode 15+
- iOS 17+ simülatör veya gerçek cihaz
- macOS Ventura veya üzeri
# 1. Repoyu klonlayın
git clone https://github.com/devberatzengin/IntershipTrackerDemo.git
# 2. Proje dizinine girin
cd IntershipTrackerDemo
# 3. Xcode ile açın
open "Internship Tracker.xcodeproj"Xcode → Target → Info bölümüne aşağıdaki anahtarı ekleyin:
| Key | Value |
|---|---|
NSLocationWhenInUseUsageDescription |
Şirket konumlarını haritada göstermek ve yol tarifi oluşturmak için konumunuzu kullanıyoruz. |
Uygulama açılışında notification izni istenir.
Nasıl çalışır?
- İlk API çekişinde mevcut ilanlar "görülmüş" kabul edilir — bildirim gönderilmez
- Sonraki yenilemede yeni ilan id'leri tespit edilirse local notification tetiklenir
- Test için: Staj İlanları ekranı → "Test bildirimi gönder" → Uygulamayı arka plana alın → ~2 saniye sonra bildirim gelir
💡 Bildirim geçmişini sıfırlamak için "İlan bildirim geçmişini sıfırla" butonunu kullanabilirsiniz.
Bu proje Remotive Public API kullanmaktadır.
GET https://remotive.com/api/remote-jobs
- Ücretsiz, kayıt gerektirmez
- Gerçek zamanlı uzaktan çalışma ilanları döner
Internship Tracker/
├── App/
│ └── InternshipTrackerApp.swift
├── Presentation/
│ ├── Applications/ # Başvuru listesi ve detay ekranları
│ ├── Jobs/ # Remotive ilanları ekranı
│ ├── Map/ # Harita ekranı
│ └── Settings/ # Ayarlar
├── Domain/
│ ├── Models/ # Uygulama modelleri
│ └── UseCases/ # İş mantığı
├── Data/
│ ├── Remote/ # API servisleri
│ └── Local/ # SwiftData repository
└── Core/
└── Extensions/ # Yardımcı uzantılar
- GitHub: @devberatzengin
- GitHub: @omer-damar
"I know, I misspelled it, it should have been internship, but oh well." 😄