Inspiration
When you help look after someone, the work that slips is never the big stuff. It is the small moments: did she drink water, did anyone actually check in, who is visiting on Sunday. One person in a family quietly becomes the organiser, usually the one who lives closest, and carries all of it in their head. Collos exists to make that invisible work visible, and shareable.
What it does
Collos turns care into a short daily plan. Each person you care for gets a plan of small moments: a morning check-in, a water break, fresh air, an evening note. You confirm or skip each one, and the plan remembers it on device, instantly, across restarts.
The idea the app is built around: skipping is not losing. A skipped moment offers to move itself to tomorrow, and the next day it comes back wearing a "Moved here" chip, so nothing you meant to do falls off the plan. Moments can repeat on their own days (every day, weekdays, weekends), so the plan can be one person's real week. The free plan keeps one shared note a day per person; Collos Pro lifts that limit.
How we built it
One React Native (0.86) + Expo (SDK 57) + TypeScript codebase running native on iOS and Android, and exported to web with react-native-web. Care state is device-local with no account and no server copy; every confirmation survives a restart. Behaviour is covered by 29 tests (node:test) and CI on every push.
RevenueCat integration. react-native-purchases is initialised per
platform. The paywall renders live packages from the default offering with
real prices and a per-month breakdown, annual preselected. purchasePackage,
getCustomerInfo and restorePurchases are all implemented; the
collos_pro entitlement is checked on launch and after every purchase, and
cancelled and failed purchases are handled separately from success. The
purchase you see in the demo video is real: it completes through RevenueCat's
Test Store, which records the transaction without charging anyone, and the
app labels that store honestly in Settings rather than pretending it is the
App Store. When no store key is configured the app degrades to a clearly
labelled preview mode, so the public demo never dead-ends.
Challenges we ran into
Two stand out. First, a blank white page in production: a floating
transitive dependency (@expo/vector-icons pulling expo-font: "*") dragged
in a copy of expo-modules-core without registerWebModule, killing the app
before first render. The fix was pinning exact versions and adding an
overrides entry. Lesson: wildcard peer ranges are load-bearing in a pinned
SDK tree.
Second, the project was upgraded across three SDK majors (51 → 54 → 57) to
match what Expo Go carries. Every breakage landed in the same three places
(file-system APIs moving behind /legacy, absoluteFillObject removed in
RN 0.86, and the expo-font override), and no state-engine code was touched
to make any of it pass.
What we learned
That honesty is a feature. Labelling the Test Store as the Test Store, saying plainly that there is no account and no server copy, and letting the reset button describe exactly what it deletes all made the product feel more trustworthy, not less impressive.
What's next
A backend so a care circle can genuinely share between phones, scheduled reminders, and store releases for iOS and Android.
Built by a student for the RevenueCat Shipaton Next Gen Award. The repository is public and MIT licensed.
Built With
- expo.io
- github-actions
- node.js
- react
- react-native
- react-native-purchases
- react-native-web
- revenuecat
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.