{"id":34694370,"url":"https://github.com/bilgicalpay/azuredevops-mobile","last_synced_at":"2025-12-24T22:29:19.454Z","repository":{"id":329243250,"uuid":"1118398801","full_name":"bilgicalpay/azuredevops-mobile","owner":"bilgicalpay","description":"AzureDevOps Mobile Task Management","archived":false,"fork":false,"pushed_at":"2025-12-21T19:56:20.000Z","size":200630,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-12-22T17:21:06.169Z","etag":null,"topics":["agile","approve","azuredevops","azuredevops-server","azuredevops-services","cab","change","changemanagement","devops","mdm","release","releasemanagement","remote-cab-approve","stakeholders","task-management"],"latest_commit_sha":null,"homepage":"https://www.higgscloud.com","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bilgicalpay.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"bilgicalpay","thanks_dev":null,"custom":null}},"created_at":"2025-12-17T17:37:03.000Z","updated_at":"2025-12-21T19:53:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bilgicalpay/azuredevops-mobile","commit_stats":null,"previous_names":["bilgicalpay/azuredevops-onprem-clean","bilgicalpay/azuredevops-server-mobile"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/bilgicalpay/azuredevops-mobile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bilgicalpay%2Fazuredevops-mobile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bilgicalpay%2Fazuredevops-mobile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bilgicalpay%2Fazuredevops-mobile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bilgicalpay%2Fazuredevops-mobile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bilgicalpay","download_url":"https://codeload.github.com/bilgicalpay/azuredevops-mobile/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bilgicalpay%2Fazuredevops-mobile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28010883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agile","approve","azuredevops","azuredevops-server","azuredevops-services","cab","change","changemanagement","devops","mdm","release","releasemanagement","remote-cab-approve","stakeholders","task-management"],"created_at":"2025-12-24T22:29:18.855Z","updated_at":"2025-12-24T22:29:19.444Z","avatar_url":"https://github.com/bilgicalpay.png","language":"Dart","readme":"# Azure DevOps Server 2022 Mobile App\n\n**Geliştirici:** Alpay Bilgiç  \n**Versiyon:** 1.0.16+111  \n**Tarih:** 24-12-2025\n\n## 📱 Genel Bakış\n\nBu uygulama, Azure DevOps Server 2022 on-premise kurulumları için mobil erişim sağlar. Kurumsal MDM (Mobile Device Management) sistemleri ile entegre edilerek güvenli bir şekilde dağıtılabilir. Flutter framework kullanılarak geliştirilmiştir ve hem Android hem iOS platformlarını destekler.\n\n## ✨ Özellikler\n\n### Work Item Yönetimi\n- ✅ Work Item görüntüleme ve yönetimi\n- ✅ Custom field düzenleme (selectbox, combobox, tickbox desteği)\n- ✅ Boolean field'lar Switch/Toggle olarak gösteriliyor (Azure web arayüzüne benzer)\n- ✅ Gizli field'lar otomatik filtrelenir\n- ✅ Discussion/Comments özelliği (yorum ekleme ve görüntüleme)\n- ✅ Work Item Attachments (dosya ekleme ve görüntüleme)\n- ✅ HTML desteği (Description ve diğer HTML alanları)\n- ✅ Query çalıştırma ve sonuç görüntüleme\n\n### Bildirim Sistemi\n- ✅ Push notification desteği\n- ✅ **Bildirim Ayarları Özelleştirmesi:**\n  - İlk atamada bildirim (sadece size ilk atandığında)\n  - Tüm güncellemelerde bildirim (atanmış work item'lar güncellendiğinde)\n  - Sadece Hotfix filtresi (yalnızca Hotfix tipindeki work item'lar için)\n  - Grup bildirimleri (belirtilen gruplara atama yapıldığında)\n  - Tüm ayarlar background servislerde aktif olarak çalışır\n- ✅ **Akıllı Saat Bildirimleri:**\n  - Android Wear OS ve iOS watchOS desteği\n  - Xiaomi, Huawei, Samsung, Apple Watch desteği\n  - Saat uygulamasında özel uygulama seçimi ile bildirim iletimi (Mi Fit, Xiaomi Wear, Samsung Galaxy Watch, Apple Watch)\n  - Sadece ilk atamada akıllı saat bildirimi (titreşim, ses, ekran)\n  - Etkileşimli butonlar ile state değiştirme (dropdown menü)\n  - Dinamik state listesi (work item'ın mevcut state'leri)\n  - Bildirimden \"Telefonda Aç\" ile work item detay sayfasına yönlendirme\n- ✅ **Nöbetçi Modu:**\n  - Telefon ve akıllı saat için ayrı ayrı aktif edilebilir\n  - Agresif bildirimler (maksimum öncelik, daha fazla titreşim, daha yüksek ses)\n  - Okunmayan bildirimler 3 kez otomatik yenilenir (30 saniye aralıklarla)\n- ✅ **Tatil Modu:**\n  - Telefon ve akıllı saat için ayrı ayrı aktif edilebilir\n  - Tatil modunda hiçbir bildirim gelmez\n  - Polling interval kontrolü ile çalışır (hem telefon hem saat için aktifse hiçbir work item kontrolü yapılmaz)\n- ✅ Gerçek zamanlı güncellemeler (WebSocket)\n- ✅ Background task ile periyodik kontrol\n\n### Kimlik Doğrulama\n- ✅ Personal Access Token (PAT) kimlik doğrulama\n- ✅ Active Directory (AD) kimlik doğrulama (local user desteği)\n- ✅ Güvenli token saklama (FlutterSecureStorage - AES-256)\n- ✅ Otomatik token kontrolü\n- ✅ 30 günlük otomatik logout (inaktivite)\n\n### Wiki ve İçerik\n- ✅ Wiki içerik görüntüleme\n- ✅ Markdown rendering desteği\n\n### Boards ve Work Item Yönetimi\n- ✅ Boards: Projeler → Work Item Types → Work Items hiyerarşik görünüm\n- ✅ Work Items: Tüm work item'ları listeleme ve oluşturma\n- ✅ Create Work Item: Proje ve work item type seçimi, dinamik field rendering\n- ✅ Work Item Types ve Field Definitions API entegrasyonu\n\n### Build Yönetimi\n- ✅ Builds: Projeler → Builds hiyerarşik görünüm\n- ✅ Build detayları: Timeline, stages, jobs görüntüleme\n- ✅ Build işlemleri: Start, Cancel, View details\n- ✅ Build logs görüntüleme\n- ✅ Build authorization kontrolü\n\n### Release Yönetimi\n- ✅ Releases: Projeler → Release Definitions → Releases hiyerarşik görünüm\n- ✅ Release Definitions: Klasör yapısında listeleme\n- ✅ Release detayları: Environment'lar, approvals, status tracking\n- ✅ Release işlemleri:\n  - Deploy Multiple: Tüm deploy edilebilir environment'lara toplu deploy\n  - Deploy Stage: Belirli environment seçerek deploy\n  - Cancel: Çalışan deployment'ları iptal etme\n  - Redeploy: Cancel sonrası tekrar deploy etme\n  - Create New Release: Release definition altından yeni release oluşturma\n- ✅ Release logs: Environment bazında log görüntüleme\n- ✅ Approval işlemleri: Release approval/reject\n- ✅ Azure DevOps Services (cloud) ve On-Premise desteği\n\n### Market Özelliği\n- ✅ IIS static dizininden APK ve IPA dosyalarını indirme\n- ✅ Klasör yapısı desteği (Product → Version → Files)\n- ✅ Otomatik dosya filtreleme (APK, IPA, AAB)\n\n### UI İyileştirmeleri\n- ✅ Ana sayfada 4 grid/box: Boards, Work Items, Builds, Releases\n- ✅ Dinamik şirket logosu/ismi: Server URL'den otomatik tespit veya custom ayar\n- ✅ Settings'te logo display modu: Auto, Custom, Hide\n- ✅ Versiyon bilgisi Azure DevOps logosunun altında gösteriliyor\n- ✅ Azure DevOps logosuna tıklanınca GitHub repository adresi açılıyor\n- ✅ Build detail screen scroll iyileştirmeleri - Tüm içerik düzgün şekilde scroll edilebiliyor\n- ✅ Settings'e RDC Hizmetleri bölümü eklendi (https://rdc.com.tr linki ile)\n- ✅ İlk açılış welcome dialog: \"RDC Partner tarafından AzureDevOps kullanıcılarına sunulmuştur.\" mesajı (3 saniye, bir kez gösterilir)\n\n### Güvenlik\n- ✅ Certificate Pinning (SHA-256)\n- ✅ Root/Jailbreak Detection\n- ✅ Security Logging\n- ✅ Encrypted Storage (AES-256)\n- ✅ MDM entegrasyonu\n- ✅ Uzaktan silme desteği\n\n### Belgeler\n- ✅ Belgeler ekranı (Güvenlik, Altyapı, MDM dokümantasyonları)\n\n## 🏗️ Mimari Topoloji\n\n### Mimari Katmanlar\n\n```\n┌─────────────────────────────────────────────────────────┐\n│              Presentation Layer (UI)                    │\n│  ┌──────────┐  ┌──────────┐  ┌──────────┐            │\n│  │  Screens │  │ Widgets  │  │ Provider │            │\n│  └──────────┘  └──────────┘  └──────────┘            │\n└─────────────────────────────────────────────────────────┘\n                        ↓\n┌─────────────────────────────────────────────────────────┐\n│           Business Logic Layer (Services)              │\n│  ┌──────────┐  ┌──────────┐  ┌──────────┐            │\n│  │   Auth   │  │ WorkItem │  │  Wiki    │            │\n│  └──────────┘  └──────────┘  └──────────┘            │\n│  ┌──────────┐  ┌──────────┐  ┌──────────┐            │\n│  │  Notify  │  │ Background│ │ Realtime │            │\n│  └──────────┘  └──────────┘  └──────────┘            │\n└─────────────────────────────────────────────────────────┘\n                        ↓\n┌─────────────────────────────────────────────────────────┐\n│              Data Layer                                 │\n│  ┌──────────────┐  ┌──────────────┐                    │\n│  │ Secure Store │  │ Preferences  │                    │\n│  │ (Encrypted)  │  │  (Plain)     │                    │\n│  └──────────────┘  └──────────────┘                    │\n│  ┌──────────────┐  ┌──────────────┐                    │\n│  │  HTTP Client │  │  WebSocket   │                    │\n│  └──────────────┘  └──────────────┘                    │\n└─────────────────────────────────────────────────────────┘\n                        ↓\n┌─────────────────────────────────────────────────────────┐\n│            Platform Layer                               │\n│  ┌──────────────┐  ┌──────────────┐                    │\n│  │   Android    │  │     iOS      │                    │\n│  │   APIs       │  │    APIs      │                    │\n│  └──────────────┘  └──────────────┘                    │\n└─────────────────────────────────────────────────────────┘\n                        ↓\n┌─────────────────────────────────────────────────────────┐\n│              Network (HTTPS/TLS 1.2+)                  │\n└─────────────────────────────────────────────────────────┘\n                        ↓\n┌─────────────────────────────────────────────────────────┐\n│         Azure DevOps Server (API v7.0)                  │\n└─────────────────────────────────────────────────────────┘\n```\n\n### Servis Mimarisi\n\n**Core Services:**\n- **AuthService**: PAT ve AD kimlik doğrulama, token yönetimi\n- **StorageService**: Güvenli veri saklama (FlutterSecureStorage, SharedPreferences)\n- **WorkItemService**: Work item CRUD, custom fields, attachments, comments\n- **WikiService**: Wiki içerik çekme ve rendering\n- **NotificationService**: Local notification gönderme\n- **BackgroundTaskService**: Periyodik work item kontrolü ve bildirim\n- **RealtimeService**: WebSocket ile gerçek zamanlı güncellemeler\n- **MarketService**: IIS static dizin listeleme ve dosya indirme\n- **TurkishCultureService**: Rastgele Türk kültürü bilgileri\n- **SecurityService**: Root/jailbreak tespiti, güvenlik loglama\n- **CertificatePinningService**: SHA-256 certificate pinning\n\n### Veri Akışı\n\n1. **Authentication Flow:**\n   - Kullanıcı kimlik bilgilerini girer\n   - AuthService API'ye istek gönderir\n   - Token alınır ve FlutterSecureStorage'da şifrelenmiş olarak saklanır\n   - Token tüm API isteklerinde kullanılır\n\n2. **Work Item Flow:**\n   - Kullanıcı work item listesini görüntüler\n   - WorkItemService API'den work item'ları çeker\n   - Custom field definition'ları alınır\n   - Veriler UI'da gösterilir\n   - Kullanıcı değişiklik yaparsa API'ye gönderilir\n\n3. **Notification Flow:**\n   - BackgroundTaskService periyodik olarak çalışır\n   - Yeni/güncellenmiş work item'lar kontrol edilir\n   - Bildirim ayarlarına göre filtreleme yapılır\n   - Uygun bildirimler gönderilir\n\nDetaylı mimari bilgisi için [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) dosyasına bakın.\n\n## 🔧 Teknik Özellikler\n\n### Platform Desteği\n- **Android:** Minimum 5.0 (SDK 21), Target 14 (SDK 34)\n- **iOS:** Minimum 12.0, Target 17.0\n\n### Teknoloji Stack\n- **Framework:** Flutter 3.24.0\n- **Language:** Dart\n- **State Management:** Provider\n- **UI Components:** Material Design, Cupertino\n- **HTTP Client:** Dio\n- **Storage:** FlutterSecureStorage (AES-256), SharedPreferences\n- **Real-time:** WebSocket Channel\n\n### Güvenlik Özellikleri\n- **Certificate Pinning:** SHA-256 fingerprint doğrulama\n- **Encryption:** AES-256 şifreleme (FlutterSecureStorage)\n- **Root Detection:** Root/jailbreak tespiti\n- **Security Logging:** Merkezi güvenlik loglama\n- **Auto Logout:** 30 günlük inaktivite sonrası otomatik logout\n- **MDM Integration:** MDM sistemleri ile entegrasyon\n\n### API Entegrasyonu\n- **Azure DevOps Server REST API:** v7.0\n- **Protocol:** HTTPS/TLS 1.2+\n- **Real-time:** WebSocket (WSS)\n- **Authentication:** PAT veya AD (Basic Auth)\n\n## 📋 Sistem Gereksinimleri\n\n### Azure DevOps Server\n- Azure DevOps Server 2022 veya üzeri\n- API Versiyonu: 7.0\n- HTTPS erişimi (TLS 1.2+)\n\n### Mobil Cihazlar\n- **Android:** Minimum 5.0 (SDK 21), Target 14 (SDK 34)\n- **iOS:** Minimum 12.0, Target 17.0\n\n## 🚀 Kurulum\n\n### Geliştirme Ortamı\n\n```bash\n# Bağımlılıkları yükle\nflutter pub get\n\n# Android APK oluştur\nflutter build apk --release\n\n# iOS IPA oluştur\nflutter build ipa\n```\n\n### MDM Üzerinden Dağıtım\n\n1. APK/IPA dosyasını hazırlayın\n2. MDM sisteminize yükleyin\n3. Yapılandırma profilini oluşturun\n4. Dağıtım grubunu seçin\n5. Uygulamayı dağıtın\n\nDetaylar için [docs/MDM_INTEGRATION.md](docs/MDM_INTEGRATION.md) dosyasına bakın.\n\n## ⚙️ Yapılandırma\n\n### Gerekli Ayarlar\n- Azure DevOps Server URL'si\n- Personal Access Token (PAT) veya AD kimlik bilgileri\n- Collection adı (opsiyonel)\n- **Market URL (opsiyonel):** IIS static dizin URL'si (APK ve IPA dosyalarını indirmek için)\n\n### İlk Kurulum\n\n1. Uygulamayı açın\n2. **Ayarlar** sayfasına gidin\n3. **Server URL** alanına Azure DevOps Server URL'sini girin\n4. Kimlik doğrulama yöntemini seçin (PAT veya AD)\n5. Giriş yapın\n\n### Bildirim Ayarları\n\n1. **Ayarlar** → **Bildirim Ayarları**\n2. İstediğiniz bildirim seçeneklerini aktif edin:\n   - İlk atamada bildirim\n   - Tüm güncellemelerde bildirim\n   - Sadece Hotfix filtresi\n   - Grup bildirimleri (grup adları ekleyin)\n3. **Akıllı Saat Bildirimleri:**\n   - **Önce saat uygulamanızda Azure DevOps uygulamasını etkinleştirin:**\n     - **Android saatler (Xiaomi, Huawei, Samsung):** Mi Fit / Xiaomi Wear / Samsung Galaxy Watch uygulamasında **Bildirimler** → **Özel Uygulama Seçimi** → **Azure DevOps** aktif edin\n     - **Apple Watch:** iPhone Watch uygulamasında **Bildirimler** → **Azure DevOps** aktif edin\n   - **Uygulama içinde:** Ayarlar → Bildirim Ayarları → **Akıllı Saat Bildirimleri** toggle switch'ini aktif edin\n   - Sadece ilk atamada akıllı saat bildirimi gönderilir\n   - Etkileşimli butonlar ile state değiştirme yapılabilir\n   - Bildirimden \"Telefonda Aç\" seçeneği ile work item detay sayfasını açabilirsiniz\n4. **Nöbetçi Modu:**\n   - Telefon için nöbetçi modu: Agresif bildirimler, okunmayan bildirimler 3 kez yenilenir\n   - Akıllı saat için nöbetçi modu: Agresif bildirimler\n5. **Tatil Modu:**\n   - Telefon için tatil modu: Hiçbir bildirim gelmez\n   - Akıllı saat için tatil modu: Hiçbir bildirim gelmez\n6. Ayarları kaydedin\n\n### Market Özelliği\n\nMarket özelliği, IIS static dizininden APK ve IPA dosyalarını indirmenizi sağlar.\n\n#### IIS Yapılandırması\n\n1. **IIS'te static dosya servisini aktif edin**\n2. **Directory browsing'i aktif edin**\n3. **Market dizin yapısını oluşturun:**\n   ```\n   C:\\inetpub\\wwwroot\\_static\\market\\\n   ├── ProductA\\\n   │   ├── 1.0.0\\\n   │   │   ├── ProductA-1.0.0.apk\n   │   │   └── ProductA-1.0.0.ipa\n   │   └── 1.0.1\\\n   └── ProductB\\\n       └── 2.0.0\\\n   ```\n\n4. **web.config dosyası oluşturun:**\n   \n   Ana market dizinine (`C:\\inetpub\\wwwroot\\_static\\market\\`) `web.config` dosyası ekleyin:\n   \n   ```xml\n   \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n   \u003cconfiguration\u003e\n       \u003csystem.webServer\u003e\n           \u003cstaticContent\u003e\n               \u003cmimeMap fileExtension=\".IPA\" mimeType=\"application/octet-stream\" /\u003e\n               \u003cmimeMap fileExtension=\".APK\" mimeType=\"application/octet-stream\" /\u003e\n           \u003c/staticContent\u003e\n       \u003c/system.webServer\u003e\n   \u003c/configuration\u003e\n   ```\n\n5. **HTTPS erişimini sağlayın**\n\n#### Uygulama İçi Yapılandırma\n\n1. **Ayarlar** sayfasına gidin\n2. **Market URL** alanına IIS static dizin URL'sini girin\n   - Örnek: `https://uygun_iis.com/_static_files/market`\n3. **Kaydet** butonuna tıklayın\n\n#### Kullanım\n\n1. Ana sayfada **Market** ikonuna tıklayın\n2. Klasör yapısı görüntülenir (Product → Version → Files)\n3. İstediğiniz dosyaya tıklayın\n4. Dosya otomatik olarak indirilir:\n   - **Android:** Downloads klasörüne kaydedilir\n   - **iOS:** Files app'te görünür (Documents dizini)\n\n## 📖 Kullanım Kılavuzu\n\n### Work Item Yönetimi\n\n#### Work Item Görüntüleme\n1. Ana sayfada **Work Items** bölümüne gidin\n2. Work item listesini görüntüleyin\n3. Bir work item'a tıklayarak detaylarını görüntüleyin\n\n#### Custom Field Düzenleme\n1. Work item detay ekranında **Custom Fields** bölümüne gidin\n2. Düzenlemek istediğiniz field'a tıklayın\n3. Değeri değiştirin:\n   - **Selectbox/Combobox:** Dropdown'dan seçin\n   - **Checkbox/Tickbox:** Checkbox'ı işaretleyin/kaldırın\n   - **Date:** Tarih seçiciyi kullanın\n   - **Text/HTML:** Metin alanını düzenleyin\n4. **Kaydet** butonuna tıklayın\n\n#### Attachment Ekleme\n1. Work item detay ekranında **Attachments** bölümüne gidin\n2. **Attach File** butonuna tıklayın\n3. Dosyayı seçin\n4. Dosya yüklenir ve work item'a eklenir\n\n#### Yorum Ekleme\n1. Work item detay ekranında **Discussion** bölümüne gidin\n2. Yorum alanına metninizi yazın\n3. **Add Comment** butonuna tıklayın\n4. Yorum work item'a eklenir\n\n### Query Çalıştırma\n\n1. Ana sayfada **Queries** ikonuna tıklayın\n2. Query listesini görüntüleyin\n3. Bir query'ye tıklayın\n4. Query sonuçları görüntülenir\n5. Sonuçlardan bir work item'a tıklayarak detaylarını görüntüleyebilirsiniz\n\n### Wiki Görüntüleme\n\n1. Ana sayfada **Wiki** bölümüne gidin\n2. Wiki içeriği görüntülenir\n3. Markdown formatı desteklenir\n\n### Bildirim Yönetimi\n\n#### Bildirim Ayarları\n\n**Ayarlar Ekranı Görünümü:**\n- Ayarlar ekranında **Bildirim Ayarları** bölümü bulunur\n- **Kontrol Sıklığı** ayarı ile polling interval'i ayarlayabilirsiniz (5-300 saniye arası)\n- Hızlı (10s), Normal (15s), Yavaş (30s) gibi önceden tanımlı seçenekler mevcuttur\n\n**Bildirim Türleri:**\n1. **Ayarlar** → **Bildirim Ayarları** bölümüne gidin\n2. İstediğiniz bildirim seçeneklerini aktif edin:\n   - **İlk Atamada Bildirim:** Sadece size ilk atandığında bildirim alın\n     - Toggle switch'i aktif edin\n     - Bu seçenek aktifken, sadece ilk atamada bildirim gelir, sonraki güncellemelerde gelmez\n   - **Tüm Güncellemelerde Bildirim:** Atanmış work item'lar güncellendiğinde bildirim alın\n     - Toggle switch'i aktif edin\n     - Bu seçenek aktifken, tüm güncellemelerde bildirim gelir\n   - **Sadece Hotfix:** Yalnızca Hotfix tipindeki work item'lar için bildirim alın\n     - Toggle switch'i aktif edin\n     - Bu seçenek aktifken, sadece Hotfix tipindeki work item'lar için bildirim gelir\n   - **Grup Bildirimleri:** Belirtilen gruplara atama yapıldığında bildirim alın\n     - Toggle switch'i aktif edin\n     - Grup adı eklemek için **+** butonuna tıklayın\n     - Grup adı silmek için **X** butonuna tıklayın\n\n**Akıllı Saat Bildirimleri:**\n\nAkıllı saatlerinizde Azure DevOps bildirimlerini almak için önce saat uygulamanızda Azure DevOps uygulamasını etkinleştirmeniz gerekir.\n\n**Android Saatler (Xiaomi, Huawei, Samsung, vb.):**\n\n1. **Mi Fit / Xiaomi Wear / Samsung Galaxy Watch uygulamasını açın**\n2. **Profil** veya **Ayarlar** bölümüne gidin\n3. **Bildirimler** veya **Uygulama Bildirimleri** seçeneğini bulun\n4. **Özel Uygulama Seçimi** veya **Uygulama Bildirimleri** bölümüne gidin\n5. **Azure DevOps** uygulamasını bulun ve aktif edin\n6. Bildirim ayarlarını kontrol edin:\n   - **Bildirimleri Göster**: Açık\n   - **Titreşim**: Açık (isteğe bağlı)\n   - **Ses**: Açık (isteğe bağlı)\n\n**Apple Watch (watchOS):**\n\n1. iPhone'unuzda **Watch** uygulamasını açın\n2. **Bildirimler** sekmesine gidin\n3. **Azure DevOps** uygulamasını bulun\n4. Bildirim stilini seçin:\n   - **Bildirimleri Göster**: Açık\n   - **Bildirimlerde Ses Çal**: Açık (isteğe bağlı)\n   - **Titreşim**: Açık (isteğe bağlı)\n\n**Uygulama İçi Ayarlar:**\n\n1. **Ayarlar** → **Bildirim Ayarları** bölümüne gidin\n2. **Akıllı Saat Bildirimleri** toggle switch'ini aktif edin\n3. Bu özellik aktifken:\n   - Sadece ilk atamada akıllı saatte bildirim gelir\n   - Bildirimde titreşim, ses ve ekran bildirimi olur\n   - Etkileşimli butonlar ile work item state'i değiştirilebilir\n   - State listesi dinamik olarak work item'ın mevcut state'lerinden oluşur\n   - Dropdown menü ile state seçimi yapılabilir\n\n**Bildirimden Work Item Açma:**\n\nAkıllı saatte bildirim geldiğinde:\n1. Bildirime dokunun veya kaydırın\n2. **\"Telefonda Aç\"** veya **\"Open on Phone\"** seçeneğini seçin\n3. Telefondaki Azure DevOps uygulaması otomatik olarak açılır\n4. İlgili work item detay sayfası gösterilir\n\n**Not:** Bu özellik için telefon ve akıllı saatin eşleşmiş olması ve Bluetooth bağlantısının aktif olması gerekir.\n\n**Nöbetçi Modu:**\n- **Nöbetçi Modu** bölümünde telefon ve akıllı saat için ayrı ayrı ayarlar bulunur\n- **Telefon için Nöbetçi Modu:**\n  - Toggle switch'i aktif edin\n  - Bildirimler daha agresif olur (maksimum öncelik, daha fazla titreşim, daha yüksek ses)\n  - Okunmayan bildirimler 30 saniye aralıklarla 3 kez otomatik yenilenir\n- **Akıllı Saat için Nöbetçi Modu:**\n  - Toggle switch'i aktif edin\n  - Akıllı saatte bildirimler daha agresif olur\n\n**Tatil Modu:**\n- **Tatil Modu** bölümünde telefon ve akıllı saat için ayrı ayrı ayarlar bulunur\n- **Telefon için Tatil Modu:**\n  - Toggle switch'i aktif edin\n  - Bu mod aktifken telefonda hiçbir bildirim gelmez\n- **Akıllı Saat için Tatil Modu:**\n  - Toggle switch'i aktif edin\n  - Bu mod aktifken akıllı saatte hiçbir bildirim gelmez\n\n**Ayarlar Ekranı Özellikleri:**\n- Tüm ayarlar gerçek zamanlı olarak kaydedilir\n- Ayarlar cihazda kalıcı olarak saklanır\n- Uygulama yeniden başlatıldığında ayarlar korunur\n\n#### Bildirim Geçmişi\n- Bildirim gönderilmiş work item'lar için tekrar bildirim gönderilmez\n- Uygulama yeniden kurulduğunda bile bildirim geçmişi korunur\n- İlk atamada bildirim gönderilmiş work item'lar için sonraki güncellemelerde bildirim gelmez (eğer sadece \"ilk atamada bildirim\" seçeneği aktifse)\n\n## 🔒 Güvenlik\n\n### Güvenlik Özellikleri\n\n- ✅ **Token Şifreleme:** `flutter_secure_storage` kullanılıyor (Production'da aktif)\n- Android: EncryptedSharedPreferences\n  - iOS: Keychain Services\n  - AES-256 şifreleme\n\n- ✅ **Certificate Pinning:** Sertifika pinning uygulandı (Production Ready)\n  - SHA-256 fingerprint doğrulama\n  - Production build'lerde otomatik aktif (`PRODUCTION=true`)\n  - Setup guide: `scripts/setup_certificate_pinning.md`\n\n- ✅ **Root/Jailbreak Tespiti:** Root/jailbreak tespiti eklendi\n  - Uygulama başlangıcında otomatik kontrol\n  - Güvenlik olayları loglanıyor\n\n- ✅ **Otomatik Logout:** Otomatik logout mekanizması eklendi\n  - 30 gün kullanılmadığında otomatik logout\n  - Son aktivite takibi\n  - Uygulama açıldığında kontrol edilir\n\nDetaylı güvenlik bilgileri için [docs/SECURITY.md](docs/SECURITY.md) dosyasına bakın.\n\n## 📚 Dokümantasyon\n\n### Ana Dokümantasyon\n- **[ARCHITECTURE.md](docs/ARCHITECTURE.md)** - Mimari topoloji dokümantasyonu\n  - Mimari katmanlar\n  - Bileşen diyagramları\n  - Veri akışı\n  - Güvenlik mimarisi\n  - Deployment topolojisi\n\n### Güvenlik ve Altyapı\n- **[SECURITY.md](docs/SECURITY.md)** - Güvenlik dokümantasyonu\n  - Güvenlik mimarisi\n  - Kimlik doğrulama\n  - Veri güvenliği\n  - Ağ güvenliği\n  - Güvenlik açıkları ve önlemler\n\n- **[INFRASTRUCTURE.md](docs/INFRASTRUCTURE.md)** - Altyapı dokümantasyonu\n  - Sistem gereksinimleri\n  - Ağ yapılandırması\n  - Sertifika yönetimi\n  - Dağıtım adımları\n  - İzleme ve bakım\n\n- **[MDM_INTEGRATION.md](docs/MDM_INTEGRATION.md)** - MDM entegrasyon kılavuzu\n  - Microsoft Intune entegrasyonu\n  - VMware Workspace ONE entegrasyonu\n  - Yapılandırma profilleri\n  - Uyumluluk politikaları\n\n- **[SECURITY_FEATURES.md](docs/SECURITY_FEATURES.md)** - Güvenlik özellikleri detayları\n\n## 🛠️ Geliştirme\n\n### Bağımlılıklar\n- `flutter_secure_storage` - Güvenli token saklama\n- `dio` - HTTP istekleri\n- `provider` - State yönetimi\n- `shared_preferences` - Yerel depolama\n- `flutter_local_notifications` - Bildirimler\n- `file_picker` - Dosya seçimi\n- `web_socket_channel` - WebSocket bağlantıları\n\n### Build\n```bash\n# Debug APK\nflutter build apk --debug\n\n# Release APK\nflutter build apk --release\n\n# iOS IPA\nflutter build ipa\n```\n\n### Proje Yapısı\n```\nlib/\n├── main.dart                    # Uygulama giriş noktası\n├── screens/                     # Ekranlar\n│   ├── login_screen.dart\n│   ├── home_screen.dart\n│   ├── work_item_detail_screen.dart\n│   ├── work_item_list_screen.dart\n│   ├── queries_screen.dart\n│   ├── settings_screen.dart\n│   ├── wiki_viewer_screen.dart\n│   ├── documents_screen.dart\n│   └── market_screen.dart\n├── services/                    # Servisler\n│   ├── auth_service.dart\n│   ├── storage_service.dart\n│   ├── work_item_service.dart\n│   ├── wiki_service.dart\n│   ├── notification_service.dart\n│   ├── background_task_service.dart\n│   ├── realtime_service.dart\n│   ├── market_service.dart\n│   ├── turkish_culture_service.dart\n│   ├── security_service.dart\n│   └── certificate_pinning_service.dart\n└── assets/                      # Assets\n└── images/\n        └── logo.png\n\ndocs/                            # Dokümantasyon\n├── ARCHITECTURE.md\n├── SECURITY.md\n├── INFRASTRUCTURE.md\n├── MDM_INTEGRATION.md\n├── SECURITY_FEATURES.md\n└── README.md\n```\n\n## 📝 Release Notes\n\n### v1.1.4+43 (21-12-2025)\n\n#### Yeni Özellikler\n- ✅ Türk Kültürü Popup (ana sayfada pull-to-refresh ile rastgele bilgiler)\n- ✅ Work Item Attachments (dosya ekleme ve görüntüleme)\n- ✅ Custom field düzenleme iyileştirmeleri\n- ✅ Discussion/Comments özelliği\n- ✅ Bildirim ayarları özelleştirmesi\n\n#### İyileştirmeler\n- ✅ Steps alanı kaldırıldı\n- ✅ HTML desteği (Description ve diğer alanlar)\n- ✅ AD login local user desteği\n- ✅ Bildirim filtreleme mantığı iyileştirildi\n\nDetaylı release notları için [RELEASE_NOTES.md](RELEASE_NOTES.md) dosyasına bakın.\n\n## 📞 Destek\n\n**Teknik Destek:**\n- Geliştirici: Alpay Bilgiç\n- E-posta: bilgicalpay@gmail.com\n\n**Güvenlik Sorunları:**\n- E-posta: bilgicalpay@gmail.com\n- Repository: https://github.com/bilgicalpay/azuredevops-mobile\n\n## 📄 Lisans\n\nBu uygulama açık kaynak kodlu olarak geliştirilmiştir ve özel bir lisans altında dağıtılmaktadır.\n\n### Lisans Koşulları\n\n**İzin Verilenler:**\n- ✅ Yazılımı özgürce kullanabilirsiniz\n- ✅ Yazılımı değiştirebilir ve geliştirebilirsiniz\n- ✅ Yazılımı ticari olmayan amaçlarla dağıtabilirsiniz\n- ✅ Eğitim ve kişisel kullanım için serbest\n\n**Kesinlikle Yasak Olanlar:**\n- ❌ **TİCARİ SATIŞ YASAKTIR**: Yazılımı veya türev eserlerini ticari amaçlarla satamazsınız\n- ❌ **TİCARİ DAĞITIM YASAKTIR**: Yazılımı veya türev eserlerini ticari ürünlere dahil edemezsiniz\n- ❌ **TİCARİ LİSANSLAMA YASAKTIR**: Türev eserleri sahipli veya ticari lisanslar altında lisanslayamazsınız\n- ❌ **YENİDEN SATIŞ YASAKTIR**: Herhangi bir ticari dağıtım, yeniden satış veya ticarileştirme biçimi yasaktır\n\n**Gereksinimler:**\n- 📝 Kullanımda orijinal telif hakkı bildirimini ve atıfı korumalısınız\n- 📝 Türev eserler aynı lisans koşulları altında dağıtılmalıdır\n- 📝 Kaynak kodu kullanılabilir olmalıdır\n\n**Ticari Kullanım:**\n**ÖNEMLİ**: Ticari kullanım, satış, lisanslama veya dağıtım için **AÇIK YAZILI İZİN GEREKLİDİR**.\n\nTicari kullanım için lütfen iletişime geçin:\n- E-posta: bilgicalpay@gmail.com\n\n**Detaylı lisans metni (Türkçe ve İngilizce) için [LICENSE](LICENSE) dosyasına bakın.**\n\n---\n\n**Geliştirici:** Alpay Bilgiç  \n**Son Güncelleme:** 24-12-2025  \n**Versiyon:** 1.0.16+111\n","funding_links":["https://buymeacoffee.com/bilgicalpay"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbilgicalpay%2Fazuredevops-mobile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbilgicalpay%2Fazuredevops-mobile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbilgicalpay%2Fazuredevops-mobile/lists"}