Inspiration
Most goal apps hand you a checkbox. Tap it, get a star, feel good for five seconds, and the app never actually knows if you did anything real. I wanted a goal companion that could tell the difference between someone who showed up and someone who's just tapping a button to feel productive. Hatua started from one question: what if the only thing that could move your progress forward was telling the truth?
What it does
You type one goal. Hatua, built around the Swahili word for "a step," turns it into a short path of quests and a small world to walk through, complete with a hero, lanterns that light up as you go, and realms to explore. Every day you check in with a short, honest description of what you actually did. An AI reads that check-in for real specificity, not just whether you typed something, and only counts it as progress if it's genuine. Vague, generic, or copy-pasted answers get told so, kindly but honestly. If a goal is unrealistic, Hatua will push back before you even start. The hero only grows from real days. Achievements are computed from actual history, never handed out. Everything lives on the player's phone.
How we built it
Hatua is an Expo and React Native app written in TypeScript, with Zustand for state, persisted on-device with AsyncStorage. The hero, the realms, and every bit of art are hand-built with react-native-svg and animated with react-native-reanimated, no stock illustration packs. The AI judge runs on Groq, called from a small server so the API key never ships inside the app. RevenueCat powers the subscription model: every new player gets a 30-day free trial with everything unlocked, then chooses Monthly or Yearly, with progress, XP, and levels never for sale at any price.
Challenges we ran into
Keeping the AI judge honest without making it cruel was the hardest design problem, finding the line between skeptical and discouraging took real iteration on the prompt. Building entirely from a phone through a GitHub Codespace added its own friction: tunnels expiring mid-session, native modules needing a rebuild before they'd actually work, and real debugging done from my phone. Getting the low-poly art style right took a few full redesigns before it looked intentional instead of generic.
Accomplishments that we're proud of
The judging genuinely works, it isn't handing out XP for effort, it's reading what someone actually wrote and deciding if it's real. The whole visual identity, the hero, the realms, the lanterns, is original, built in code, not pulled from a template. And the entire thing was built and shipped from a phone.
What we learned
That the hardest part of "AI-powered" isn't calling an API, it's deciding what the AI should refuse to reward. And that a tight, honest scope beats a long feature list every time crunch hits.
What's next for Hatua
Step tracking and a richer photo-verification flow for goals where proof matters, a public web page, and expanding the realm and achievement system now that the core judging loop is proven.
Built With
- asyncstorage
- expo.io
- github
- groq
- react
- revenue-cat
- typescript
Log in or sign up for Devpost to join the conversation.