A SwiftUI + MVVM assignment demonstrating modern declarative UI, clean architecture, and state management.
Mobily is a demo iOS application that displays a user’s cellular usage details (data, minutes, SMS) and showcases promotional packages and subscription plans.
The project follows MVVM architecture with a clear separation of concerns, reactive state updates, and a responsive SwiftUI interface.
- Displays:
- Data usage:
2.3 GB of 5 GB - Minutes:
340 of 1000 - SMS:
120 of 500 - Renewal date and remaining days
- Data usage:
- Progress bars visualize each category
- Auto-refresh simulates live usage updates every few seconds
- Carousel banners for available offers
- Each banner includes title, description, and “Know More” / “Subscribe” button
- Smooth transitions and light/dark mode support
- List of subscription plans with:
- Name, price, data/minutes/SMS limits
- Mock “Subscribe” action (shows success alert)
- Clean and scalable card-based layout
- Toggle local notifications
- Schedule a “Low Balance Reminder”
- Simple app info section
| Layer | Description |
|---|---|
| Model | Defines data structures: Usage, Plan, Promotion |
| ViewModel | Manages business logic, publishes reactive state |
| View | SwiftUI screens bound to ViewModels |
| Services | UsageService, PlanService, PromotionService with MockDataService implementation |
| DI Container | AppContainer injects all dependencies |
| Notifications | NotificationManager schedules local reminders |
- Language: Swift 5.9
- Framework: SwiftUI (iOS 17+)
- Architecture: MVVM + Dependency Injection
- Data Source: Local mock data (in-memory)
- Testing: Unit test for ViewModel progress logic
Usage values auto-increment periodically to simulate live cellular usage updates.
This behavior is disabled in SwiftUI Previews to prevent preview crashes.
- macOS 14+
- Xcode 15+
- iOS 17 Simulator or real device