Inspiration
Travel makes time feel slippery. Flights, layovers, jet lag, and changing time zones can make it way too easy to miss something important, especially medication that needs to be taken on a consistent schedule.
I wanted to build something that solved a real problem I could personally relate to: keeping reminders reliable while traveling while following the theme of Hack The Galaxy!!
What it does
CosmoCare is a travel-safe reminder app designed to help users stay on track with medication while moving across time zones.
Users can:
- create reminders with a medication name, interval, first dose time, home timezone, and notes
- see all reminders from a landing page with a quick summary
- open each reminder for a full overview
- calculate the next dose and upcoming doses based on a UTC-anchored schedule
- remove reminders they no longer need
- keep reminders saved locally on the device
- enable local device notifications on native builds
The core idea is that the reminder schedule is anchored in UTC, then displayed in the user's current timezone. That way, travel does not break the schedule.
How I built it
I built CosmoCare as a mobile-first app using Expo, React Native, and TypeScript.
For the reminder logic, I used Luxon to handle timezone-safe calculations. I store each reminder with:
- a first dose time in UTC
- an interval in hours
- a home timezone for context
From there, the app calculates the next dose and upcoming doses in a way that stays stable even when the user changes time zones.
I also used:
- Expo Notifications for local reminders on device
- AsyncStorage for local persistence
- Expo Linear Gradient and custom fonts to create a playful galaxy-inspired interface that matches the hackathon theme
The UI includes:
- a home screen with a welcome message and reminder summary
- a detail screen for each reminder
- a create screen for scheduling a new reminder
Challenges I ran into
One of the biggest challenges was making the time logic feel trustworthy. Reminder apps are easy to build if everything stays in one timezone, but travel changes that completely. I had to think carefully about how to store time in a stable format and then present it in a way that still made sense to the user.
Another challenge was balancing scope. I started with several feature ideas, but with limited hackathon time I had to narrow the project down to one strong core feature instead of building too many half-finished ones.
I also ran into some environment issues while working with Expo, simulator setup, and testing across web versus native notifications.
Accomplishments that I'm proud of
I'm proud that I stayed focused on one meaningful problem and built a working solution around it.
I'm also proud that CosmoCare feels like an actual product instead of just a technical demo. It has:
- a clear use case
- a complete flow from creating to viewing to deleting reminders
- timezone-aware scheduling logic
- local persistence
- a themed galaxy-inspired UI that fits Hack the Galaxy
What I learned
I learned a lot about designing around time-based edge cases, especially how important it is to separate storage logic from display logic. Anchoring schedules in UTC made the app much more reliable.
I also learned how much product decisions matter in a hackathon. Choosing a smaller, sharper scope made it possible to actually finish something cohesive.
On the technical side, I learned more about Expo Notifications, local persistence with AsyncStorage, and how to quickly iterate on a themed React Native UI under time pressure.
What's next for CosmoCare
There are a lot of directions I’d love to take this next:
- easier date/time input instead of raw UTC entry
- editing existing reminders
- automatic trip and timezone detection
- medication history and adherence tracking
- AI-assisted reminder setup from natural language
- pharmacy and medication support features for travelers in different countries
The long-term goal would be to turn CosmoCare into a truly useful travel health companion, starting with reminders people can trust anywhere in the world.
Built With
- asyncstorage
- ios
- javascript
- luxon
- react
- typescript
- web
Log in or sign up for Devpost to join the conversation.