Inspiration
Planning a trip with friends feels like a group project nobody wants to run. One person wants a nonstop flight, another has a hard $600 cap, and everyone's must-haves get lost in the group chat. We wanted an app that does the negotiating for you, and that makes you open it and think "Where are we going?"
That's how Artemis was born. It takes everyone's private preferences, finds where they overlap, and carries the trip from a globe on your home screen to a paper ticket in your pocket.
What it does
- Cinematic discovery: a dot-matrix globe shows where you are and your next trip, and destinations open as full-bleed photo pages.
- Private preferences, one shared answer: each traveler marks their limits MUST, PREFER or NICE. Nothing is visible until everyone submits. Artemis then shows where you overlap: SHARED, FLEXIBLE or CONFLICT.
- Explains every match: for example, “$53 under your $600 limit” and “1 stop — Sofia prefers nonstop, you're fine with it.”
- Group ranking: everyone ranks the flights that fit, and Artemis combines the rankings into one group order. Traveling alone? Plan solo works too.
- Artemis Trust Engine: every booking passes identity → policy → financial checks. Routine bookings are auto-approved, and exceptions are blocked or sent to you.
- Trip Ticket & Trip Mode: after booking, cut a paper ticket and keep the stub in My Trips. Then follow your plane across the same globe.
How we built it
- App: React Native, Expo (SDK 57) and TypeScript, with Expo Router, Reanimated and Gesture Handler. It runs in Expo Go.
- Globe & ticket: React Native Skia draws the globe, the plane and the paper ticket.
- Domain engine: matching, the Trust Engine, itineraries and time zones are pure TypeScript with no UI code, covered by 150 automated tests.
- Group preference logic: hard limits remove options, and softer preferences only order what's left. Rankings are combined with a Borda count.
- State: Zustand, saved on the device.
Challenges we ran into
- Group decisions aren't an average. A strict budget and a "nonstop, please" can't be averaged, so we separated hard limits from flexible preferences.
- Making the ticket feel like paper on Skia. 3D flips don't reach Skia canvases, so we built the flip and cut ourselves.
- Flight times across time zones. Every time is shown in the local time of its airport, using our own daylight-saving rules.
Accomplishments that we're proud of
- One continuous journey that works end to end: globe → group preferences → booking → ticket → the plane on that same globe.
- A privacy-first design: preferences stay hidden until everyone submits, and no real card or ID data is used.
- A Trust Engine you can watch run, including the blocked and approval-required cases.
What we learned
- Drawing and animating with Skia and Reanimated 4.
- How Expo SDK 57 sharing works with Expo Go and EAS Update.
- Handling time zones without relying on the phone's settings.
What's next for Artemis - You choose where you want to go. Artemis handles the rest.
- Real providers: live flights and hotels, with price monitoring and split payments.
- Real accounts and invitations: each traveler answers on their own phone.
- An AI agent behind the Trust Engine: it plans and books, while the Trust Engine decides what it can do alone.
Built With
- expo-router
- expo.io
- gesture-handler
- react-native
- react-native-skia
- reanimated
- typescript
- zustand
Log in or sign up for Devpost to join the conversation.