Pusula Fon; Ionic, Angular ve Capacitor ile geliştirilmiş, Android ve iOS projeleri birlikte gelen mobil fon takip demosudur. Gerçek API anahtarı veya JWT istemez. Cihaz içinde çalışan kontrollü simülasyon, fon fiyatlarını yaklaşık 2,8 saniyede bir değiştirir.
Bu proje yatırım tavsiyesi vermez. Fon değerleri ve portföy sonuçları yalnızca arayüz demosudur.
| Platform | Proje | Özellikler |
|---|---|---|
| Android | android/ |
Kamera, local notification, Android 13+ bildirim izni |
| iOS | ios/ |
Kamera, local notification, Xcode/SPM projesi, iOS 15+ |
| Web | Angular geliştirme sunucusu | Simüle veriler, uygulama içi bildirim olayı, kamera/dosya girdisi |
Android kaldırılmamıştır. Depo iki native platformu da içerir.
- 12 fonluk token gerektirmeyen canlı piyasa simülasyonu
- Portföy özeti, takip listesi ve dönemsel getiri sıralaması
- Fon detayında canlı SVG grafik, performans, risk ve varlık dağılımı
- Kalıcı takip listesi ve fiyat alarmı kuralları
- Capacitor Local Notifications ile Android/iOS sistem bildirimi
- Capacitor Camera ile orta alt düğmeden doğrudan kamera açma
- Ionic kart, chip, segment, searchbar, modal, toast, refresher, toggle ve listeleri
- GitHub Actions üzerinde web, Android APK ve iOS Simulator derlemeleri
Ana ekrandaki Fon ara düğmesi, fon keşif ekranını açar. Arama kutusu simülasyondaki fonları şu üç metin alanında aynı anda arar:
- Fon kodu:
AFA,KZL,TI2gibi kısa kodlar - Fonun tam adı: örneğin
Amerika,Altın KatılımveyaPara Piyasası - Portföy yönetim şirketi: örneğin
Ak Portföy,İş PortföyveyaKuveyt Türk
Örnekler:
| Yazılan metin | Beklenen eşleşme |
|---|---|
AFA |
AFA kodlu fon |
altın |
Adında altın geçen fonlar |
Ak Portföy |
Şirketi Ak Portföy olan fonlar |
para |
Para Piyasası adlı fonlar |
Arama Türkçe büyük/küçük harfe duyarsızdır, kelime başlangıçlarını eşleştirir ve yazdıkça filtrelenir. Bu nedenle Ak Portföy araması OYAK Portföyü yanlışlıkla eşleştirmez. Ayrıca kategori chip’leriyle sonuçlar daraltılabilir. Bugün, 1 Hafta ve 1 Ay segmentleri arama alanı değildir; bulunan fonları seçilen dönemin getirisine göre büyükten küçüğe sıralar.
Bu sürümde arama yalnızca cihazdaki demo fon listesini tarar. İnternette, TEFAS’ta veya kullanıcının rehberinde arama yapmaz. Gerçek servise geçildiğinde aynı ekran bir API adaptörüne bağlanabilir.
Alt çubuğun ortasındaki Kamera düğmesi başka bir sayfaya gitmez; doğrudan cihaz kamerasını açar:
- Android’de sistem kamera uygulaması açılır.
- iOS’ta sistem kamera arayüzü açılır ve ilk kullanımda izin istenir.
- Web önizlemede tarayıcının desteklediği kamera veya dosya seçimi kullanılır.
- Çekilen fotoğraf geçici önizlemede gösterilir; yeniden çekilebilir veya silinebilir.
- Fotoğraf sunucuya gönderilmez ve uygulama kapanınca kaybolur.
Bu demo fotoğraftan fon kodu okuma, OCR veya yapay zekâ analizi yapmaz. Böyle bir özellik istenirse kamera çıktısı daha sonra açık kullanıcı onayıyla ayrı bir OCR/AI servisine bağlanmalıdır.
Gereksinimler:
- Node.js 22
- npm
- Android için JDK 21 ve Android Studio/SDK
- iOS için macOS ve güncel Xcode
npm ci
npm startWeb uygulaması varsayılan olarak http://localhost:4200 adresinde açılır.
Android Studio’yu açmak için:
npm run cap:androidYalnızca senkronizasyon ve debug APK derlemesi:
npm run build
npx cap sync android
cd android
./gradlew assembleDebugWindows PowerShell’de son komut ./gradlew.bat assembleDebug olarak çalıştırılabilir. APK yolu:
android/app/build/outputs/apk/debug/app-debug.apk
iOS projesi depoda ios/App/App.xcodeproj olarak hazırdır. macOS üzerinde:
npm ci
npm run cap:iosXcode açıldıktan sonra:
Apphedefini seçin.- Signing & Capabilities bölümünden Apple Developer takımınızı seçin.
- Gerekirse
com.pusulafon.mobilebundle kimliğini size ait benzersiz bir değerle değiştirin. - Simulator veya fiziksel iPhone seçip çalıştırın.
- Kamera ve bildirim izinlerini cihazdaki sistem pencerelerinden verin.
CI, kod imzası istemeyen iOS Simulator derlemesi alır. App Store veya fiziksel cihaz dağıtımı için Apple sertifikası ve provisioning profile gerekir; bunlar depoya eklenmemelidir.
iOS kamera açıklamaları ios/App/App/Info.plist içinde NSCameraUsageDescription ve NSPhotoLibraryUsageDescription olarak tanımlıdır.
Projeyi boş bir GitHub deposuna göndermek için proje kökünde:
git init
git add .
git commit -m "feat: add Pusula Fon Android and iOS app"
git branch -M main
git remote add origin https://github.com/KULLANICI_ADINIZ/pusula-fon-mobile.git
git push -u origin mainGitHub deposunu oluştururken README veya .gitignore ekletmeyin; ikisi de projede hazırdır. node_modules, derleme klasörleri, Android local ayarları ve Xcode kullanıcı ayarları .gitignore içindedir.
Push sonrasında .github/workflows/ci.yml otomatik olarak:
- Angular üretim derlemesini,
- Android debug APK derlemesini,
- iOS Simulator derlemesini
çalıştırır. APK ve Simulator .app çıktısı Actions sayfasında artifact olarak indirilebilir.
src/app/core/data/ Demo fonlar
src/app/core/services/ Simülasyon, kamera, bildirim ve takip listesi
src/app/pages/market/ Ana ekran ve Fon ara girişi
src/app/pages/discover/ Fon arama, filtreleme ve sıralama
src/app/pages/fund-detail/ Grafik, performans, dağılım ve alarm
src/app/pages/alerts/ Native bildirim ayarları ve geçmiş
src/app/pages/tabs/ Piyasam, Kamera ve Alarmlar alt çubuğu
android/ Capacitor Android projesi
ios/ Capacitor iOS/Xcode projesi
.github/workflows/ci.yml GitHub Actions doğrulamaları
- Kamera fotoğrafı bellekte tutulur, kalıcı depolamaya veya sunucuya yazılmaz.
- Takip listesi ve alarm kuralları cihazın yerel web depolamasında tutulur.
- Projede gerçek token, API anahtarı veya kullanıcı hesabı yoktur.
- Üretim sırları eklenirse GitHub Actions Secrets gibi güvenli bir yöntem kullanılmalıdır.