Inspiration
The inspiration for Conditioning came from recognizing that traditional app blockers are too binary - they either block everything or nothing. I wanted to create a system that could harness the power of positive habits to unlock digital rewards. Instead of just blocking Instagram, why not unlock it after completing a Duolingo lesson? This creates a positive reinforcement loop that builds better digital habits while still allowing users to enjoy their favorite apps.
What it does
Conditioning is an iOS app that implements "conditional app blocking" - users can set up rules that block distracting apps until they complete positive activities. For example, "Block Instagram until I complete my daily Duolingo lesson" or "Block TikTok until I read in the Kindle app for 15 minutes." The app integrates with Screen Time APIs to enforce these blocks and automatically unlocks apps when conditions are met. It features a RevenueCat-powered subscription system with a generous 3-month trial to let them experience the app before they commit.
How we built it
Built entirely in Swift and SwiftUI using modern iOS development patterns including Point-Free's Dependencies framework for dependency injection and @Observable for reactive state management. The app leverages Apple's Screen Time API for app blocking, integrates with external APIs (like Duolingo's public API) for activity verification, and uses RevenueCat's SDK for subscription management. The architecture uses @Shared state management for persistence and includes comprehensive testing infrastructure. Deployed via TestFlight for beta testing and published to the App Store.
Challenges we ran into
The biggest challenge was navigating Apple's Family Controls entitlement process - the app couldn't be distributed via TestFlight without special permission from Apple, which required creating a website and formal application. Integrating with external APIs like Duolingo while maintaining user privacy was complex, requiring careful API design and username validation. Building a robust app picker interface that works reliably across iOS versions proved technically demanding, requiring deep understanding of Screen Time framework limitations.
Accomplishments that we're proud of
Successfully created a working app that's now live on the App Store with real users! The RevenueCat integration was implemented efficiently, going from concept to working subscription system in just one hour. Built a clean, testable architecture with comprehensive unit tests and end-to-end testing. Achieved seamless integration with multiple external systems (Screen Time, Duolingo API, RevenueCat) while maintaining excellent user experience. Most importantly, created something that genuinely helps users build better digital habits.
What we learned
Learned the power of systematic project management and time tracking - this project taught me to scope realistically and prioritize ruthlessly. Discovered that Apple's developer ecosystem requires significant lead time for features requiring special permissions. RevenueCat's SDK exceeded expectations in terms of ease of integration and handling complex App Store Connect workflows. Most importantly, learned that building a sustainable habit-forming app requires balancing user autonomy with helpful constraints.
What's next for Conditioning
Planning to expand the range of supported "unlock conditions" - integration with fitness apps, meditation apps, and productivity tools. Want to add social features where users can share their habit progress with accountability partners. Exploring AI-powered suggestions for optimal habit pairings based on user behavior patterns.
Built With
- revenuecat
- swift

Log in or sign up for Devpost to join the conversation.