Ken - LeetCode Progress Widgets for iOS
A productivity-focused iOS app that helps users track their daily LeetCode problem-solving progress through home screen widgets built with SwiftUI WidgetKit.
Timeline
Ongoing
Role
Solo iOS Developer
Team
Solo
Status
In-progressTechnology Stack
Key Challenges
- Sharing live progress data between the main app and the widget in real time without a backend
- Designing widget layouts that stay legible and useful across small, medium, and large sizes
- Keeping widget data fresh under WidgetKit's limited background refresh budget
Key Learnings
- Structuring an app around App Groups and shared UserDefaults for cross-target data sharing
- Building timeline providers that balance freshness against WidgetKit's refresh budget
- Designing SwiftUI views that adapt cleanly across widget size classes
Ken - LeetCode Progress Widgets for iOS
Overview
Ken is a productivity-focused iOS app that helps users track their daily LeetCode problem-solving progress directly from their home screen. Instead of opening an app to check your streak or stats, Ken surfaces them as a widget you glance at throughout the day.
Key Features
- Home screen widgets built with SwiftUI WidgetKit, showing live stats and quick actions without opening the app
- App Groups + UserDefaults for secure, real-time data sharing between the main app and the widget extension
- Adaptive layouts for small, medium, and large widget sizes using SwiftUI's dynamic views
- Timeline-based background refresh so widgets display the latest data with minimal latency
Tech Stack
| Layer | Technology |
|---|---|
| UI | SwiftUI |
| Widgets | WidgetKit |
| Reactive state | Combine |
| Data sharing | App Groups, UserDefaults |
Challenges
Getting widget data to feel "live" without a backend meant leaning on App Groups and UserDefaults for fast, secure sharing between the app and the widget extension, and designing timeline providers that request refreshes often enough to feel current while respecting WidgetKit's background execution budget.