Inspiration
Most Pomodoro timers are cold stopwatches that users abandon after a few days because there is no emotional incentive to keep going. We wanted to build a workspace where focus feels rewarding rather than exhausting. CatModoro was created to blend structured productivity with the warmth of raising a virtual companion and designing a cozy personal room.
What It Does
CatModoro turns every focused minute into tangible in-game progression:
- Gamified Focus Timer: Users choose from four Pomodoro intervals ranging from 15-minute quick sessions to 60-minute deep work blocks. Completing focus sessions rewards users with PomoCoins and builds daily focus streaks.
- Interactive Virtual Cat: The companion cat sleeps peacefully while the user focuses and wakes up during breaks to ask for food or affection. Users feed their cat with dry kibble, canned wet food or fresh fish to maintain satiety.
- Isometric Workspace Decoration: Users spend earned PomoCoins in the shop to purchase furniture and decor. Wall colors, wallpapers, floor patterns and curtains can be customized to build a dream office.
- Real-Time Multiplayer Study Cafe: Users join live study rooms with friends worldwide using a room code. Up to four members sit together in an isometric library, sharing real-time countdowns and study tags.
- Ambient Focus Audio: Built-in lofi music tracks combine with dynamic weather soundscapes including rain, thunder and snow.
RevenueCat Monetization
CatModoro uses RevenueCat as its core subscription infrastructure to power CatModoro Pro:
- Paywall and Purchase Flow: Integrated via
react-native-purchasesandRevenueCatUI.presentPaywall(), allowing users to preview packages and subscribe with a single tap. - CatModoro Pro Entitlement:
- Unlocks exclusive VIP cat breeds such as the British Shorthair and the Turkish Van.
- Completely removes all advertisements.
- Automatically grants a 1.5x PomoCoin bonus on all completed Pomodoro sessions without requiring rewarded video ads.
- Cross-Platform Sync: RevenueCat links entitlements directly to the user's Firebase UID, ensuring subscriptions restore instantly across devices.
How We Built It
CatModoro is developed with React Native and Expo SDK 54 on the New Architecture:
- Rendering Engine: Built with
@shopify/react-native-skiaandreact-native-reanimatedfor smooth graphics. - Monetization: RevenueCat SDK handles in-app purchases, customer info listeners and paywall presentation.
- Backend and Networking: Firebase Realtime Database powers the multiplayer study cafe, while Firestore stores encrypted player state.
- Security: Local cache data is protected with AES-256 encryption via hardware-backed keystores.
Challenges We Ran Into
- Global Clock Synchronization: Devices in different time zones experienced drift during multiplayer study sessions. We resolved this using Firebase server time offsets to guarantee synchronized countdowns.
- Clock Tampering Prevention: To prevent artificial coin farming by manually changing system time, we implemented a dual-clock check comparing system wall time with monotonic time. If tampering is detected, the app automatically falls back to hardware elapsed time.
- Isometric Layering: Dynamic depth sorting was required to ensure rotating furniture, rugs, wall fixtures and cats render without visual clipping.
What We Learned
Integrating RevenueCat taught us how clean subscription logic can be when abstracted from native store APIs. Using RevenueCat UI reduced days of custom paywall development into a few lines of code while providing production-ready receipt validation and entitlement management.
What's Next for CatModoro
- New multiplayer study cafe environments including a rainy greenhouse and an evening coffee shop.
- Collaborative focus goals and group streak challenges.
- Widgets for iOS and Android to track focus sessions at a glance.
Built With
- admob
- android
- crypto-js
- expo-audio
- expo-haptics
- expo-router
- expo.io
- firebase
- firebase-app-check
- firebase-auth
- firebase-realtime-database
- firebase-remote-config
- firestore
- i18n
- in-app-purchases
- lottie
- react-native
- react-native-reanimated
- revenuecat
- shopify-skia
- skia
- typescript
Log in or sign up for Devpost to join the conversation.