{"id":32767552,"url":"https://github.com/astrion-studio/farelens","last_synced_at":"2026-05-05T14:04:39.498Z","repository":{"id":319193225,"uuid":"1077930927","full_name":"astrion-studio/FareLens","owner":"astrion-studio","description":"iOS flight deal alert app with iOS 26 @Observable patterns + FastAPI backend","archived":false,"fork":false,"pushed_at":"2025-11-27T08:18:20.000Z","size":27633,"stargazers_count":0,"open_issues_count":80,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-27T21:38:43.030Z","etag":null,"topics":["fastapi","flight-deals","ios","ios26","python","swift","swiftui","travel"],"latest_commit_sha":null,"homepage":null,"language":"Swift","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/astrion-studio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"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}},"created_at":"2025-10-17T00:42:06.000Z","updated_at":"2025-11-25T05:57:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"4944ad68-d463-4f4f-906e-18051fa540a1","html_url":"https://github.com/astrion-studio/FareLens","commit_stats":null,"previous_names":["astrion-studio/farelens"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/astrion-studio/FareLens","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrion-studio%2FFareLens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrion-studio%2FFareLens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrion-studio%2FFareLens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrion-studio%2FFareLens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astrion-studio","download_url":"https://codeload.github.com/astrion-studio/FareLens/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astrion-studio%2FFareLens/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32652514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["fastapi","flight-deals","ios","ios26","python","swift","swiftui","travel"],"created_at":"2025-11-04T07:02:02.250Z","updated_at":"2026-05-05T14:04:39.493Z","avatar_url":"https://github.com/astrion-studio.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FareLens ✈️\n\n\u003e iOS flight deal alert app with iOS 26 @Observable patterns + FastAPI backend\n\n[![CI](https://github.com/astrion-studio/FareLens/actions/workflows/ci.yml/badge.svg)](https://github.com/astrion-studio/FareLens/actions/workflows/ci.yml)\n[![CodeQL](https://github.com/astrion-studio/FareLens/actions/workflows/codeql.yml/badge.svg)](https://github.com/astrion-studio/FareLens/actions/workflows/codeql.yml)\n[![Swift](https://img.shields.io/badge/Swift-5.9+-orange.svg)](https://swift.org)\n[![iOS](https://img.shields.io/badge/iOS-17.0+-blue.svg)](https://www.apple.com/ios/)\n[![License](https://img.shields.io/badge/license-Proprietary-red.svg)](LICENSE)\n\nFareLens is a modern iOS application that helps travelers discover and track flight deals in real-time. Built with SwiftUI and iOS 26's new `@Observable` macro, it demonstrates cutting-edge iOS development patterns and best practices.\n\n## Features\n\n- **Real-time Flight Deal Alerts** - Get notified when prices drop on your favorite routes\n- **Smart Queue System** - Intelligent background processing for deal updates\n- **Beautiful UI** - Modern design system with liquid glass aesthetics\n- **iOS 26 Patterns** - Built with `@Observable`, `@Bindable`, and `@Environment`\n- **Type-Safe Architecture** - Leverages Swift's type system for robust code\n- **Comprehensive Testing** - Unit tests with high coverage\n\n## Screenshots\n\n_Coming soon_\n\n## Requirements\n\n- **iOS 17.0+**\n- **Xcode 15.0+**\n- **Swift 5.9+**\n- **macOS 14.0+** (for development)\n\n## Getting Started\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/astrion-studio/FareLens.git\n   cd FareLens\n   ```\n\n2. **Open in Xcode**\n   ```bash\n   open ios-app/FareLens.xcodeproj\n   ```\n\n3. **Build and Run**\n   - Select your target device or simulator\n   - Press `Cmd + R` to build and run\n\n### Running Tests\n\n```bash\ncd ios-app\nxcodebuild test -scheme FareLens -destination 'platform=iOS Simulator,name=iPhone 15 Pro'\n```\n\nOr use Xcode's Test Navigator (`Cmd + 6`) and click the play button.\n\n## Architecture\n\nFareLens follows a clean, modular architecture:\n\n```\nios-app/FareLens/\n├── App/              # App entry point and configuration\n├── Core/             # Core utilities, networking, storage\n├── Data/             # Data layer (repositories, models)\n├── DesignSystem/     # Reusable UI components and theme\n├── Features/         # Feature modules (Deals, Alerts, etc.)\n└── Resources/        # Assets, localization\n```\n\n### Key Architectural Principles\n\n- **iOS 26 @Observable Pattern** - Modern state management without `ObservableObject`\n- **Dependency Injection** - Via `@Environment` for testability\n- **Repository Pattern** - Abstracted data access layer\n- **Smart Queue Service** - Background task processing\n- **Type-Safe Networking** - Async/await with structured concurrency\n\nFor detailed architecture documentation, see [ARCHITECTURE.md](ARCHITECTURE.md).\n\n## iOS 26 @Observable Patterns\n\nThis project uses iOS 26's new observation framework:\n\n```swift\n@Observable\nfinal class DealsViewModel {\n    var deals: [Deal] = []\n    var isLoading = false\n\n    func fetchDeals() async {\n        isLoading = true\n        // Automatic UI updates, no @Published needed!\n        deals = await repository.fetchDeals()\n        isLoading = false\n    }\n}\n```\n\n**Key Differences from ObservableObject:**\n- ✅ Use `@Observable` instead of `ObservableObject`\n- ✅ Use `@Bindable` for two-way bindings\n- ✅ Use `@State` for local state\n- ❌ No `@Published` properties\n- ❌ No `@StateObject` or `@ObservedObject`\n\nSee [iOS_26_PATTERNS.md](iOS_26_PATTERNS.md) for comprehensive examples.\n\n## Code Quality\n\nWe maintain high code quality standards:\n\n- **SwiftLint** - Enforces Swift style guidelines\n- **SwiftFormat** - Automatic code formatting\n- **CI/CD** - Automated checks on every PR\n  - No force unwraps (`!`) in production code\n  - No print statements (use OSLog)\n  - No SwiftUI previews with hardcoded data\n- **Code Review** - Automated review via Codex\n- **Security Scanning** - Dependabot, secret scanning, CodeQL\n\n### Local Development\n\n```bash\n# Format code\nswiftformat ios-app/FareLens/\n\n# Lint code\nswiftlint lint --path ios-app/FareLens/\n\n# Run tests\nxcodebuild test -scheme FareLens -destination 'platform=iOS Simulator,name=iPhone 15 Pro'\n```\n\n## Contributing\n\nWe welcome contributions! Please follow these guidelines:\n\n1. **Fork the repository**\n2. **Create a feature branch** (`git checkout -b feature/amazing-feature`)\n3. **Follow code style** - Use SwiftFormat and SwiftLint\n4. **Write tests** - Maintain or improve code coverage\n5. **Follow iOS 26 patterns** - See [iOS_26_PATTERNS.md](iOS_26_PATTERNS.md)\n6. **Commit with conventional commits** - See [Conventional Commits](#conventional-commits)\n7. **Open a Pull Request** - Fill out the PR template completely\n\n### Conventional Commits\n\nWe use [Conventional Commits](https://www.conventionalcommits.org/) for clear commit history:\n\n```\nfeat: Add price alert notifications\nfix: Resolve deal refresh crash\ndocs: Update architecture documentation\ntest: Add tests for SmartQueueService\nrefactor: Simplify DealsRepository\nchore: Update dependencies\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.\n\n## Documentation\n\n- **[ARCHITECTURE.md](ARCHITECTURE.md)** - Detailed architecture overview\n- **[iOS_26_PATTERNS.md](iOS_26_PATTERNS.md)** - iOS 26 @Observable patterns\n- **[WORKFLOW.md](WORKFLOW.md)** - Development workflow guide\n- **[API.md](API.md)** - Backend API documentation\n- **[TOOLING_SETUP.md](TOOLING_SETUP.md)** - Development tools setup\n- **[GOLDEN_STANDARD_TODO.md](GOLDEN_STANDARD_TODO.md)** - GitHub best practices checklist\n\n## Tech Stack\n\n### iOS App\n- **Language**: Swift 5.9+\n- **UI Framework**: SwiftUI\n- **State Management**: @Observable (iOS 26)\n- **Networking**: URLSession + async/await\n- **Testing**: XCTest\n- **Code Quality**: SwiftLint, SwiftFormat\n\n### Backend (Planned)\n- **Framework**: FastAPI (Python)\n- **Database**: PostgreSQL\n- **Cache**: Redis\n- **APIs**: Flight search APIs\n\n## Roadmap\n\n- [x] iOS app core architecture\n- [x] Deal listing and detail views\n- [x] Smart queue background processing\n- [x] Unit tests\n- [x] CI/CD pipeline\n- [ ] Backend API integration\n- [ ] Push notifications\n- [ ] Price tracking and alerts\n- [ ] User authentication\n- [ ] Favorites and saved searches\n- [ ] App Store release\n\n## License\n\nCopyright (c) 2024-2025 Astrion Studio. All Rights Reserved.\n\nThis is proprietary software. See the [LICENSE](LICENSE) file for details.\n\n**Note:** This repository is temporarily public to utilize free GitHub security features during development. This does NOT grant any rights to use, modify, or distribute the code.\n\n## Acknowledgments\n\n- Built with iOS 26 @Observable patterns\n- Inspired by modern flight deal tracking services\n- Designed with Apple's Human Interface Guidelines\n\n## Contact\n\n- **GitHub**: [@astrion-studio](https://github.com/astrion-studio)\n- **Issues**: [GitHub Issues](https://github.com/astrion-studio/FareLens/issues)\n\n---\n\n**Made with ❤️ by Astrion Studio**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrion-studio%2Ffarelens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastrion-studio%2Ffarelens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastrion-studio%2Ffarelens/lists"}