-
-
From an original drawing to a recurring hero and an illustrated adventure.
-
Draw an original character with canvas, brushes, and tools designed for young creators.
-
Turn a drawing into a storybook hero who can return in future adventures.
-
Create a World with its own setting and visual identity for stories your family can revisit.
-
Parents choose which story will be approved next.
-
Read an illustrated adventure starring your child's own hero, with every story approved by a parent.
-
Parent Gate asks for a parent's PIN before a child starts a creation that uses credits.
-
Parents manage shared family credits and track verified purchases in one place, with one-time packs and no subscriptions.
-
App icon
Inspiration
A child's drawing can be the beginning of an entire world. Too often, it becomes a one-off moment: a picture, a story, and then a fresh start next time.
I wanted families to keep building on that imagination. A character a child draws should be someone they can meet again, in a World they recognize, with a new adventure to read together.
I also wanted parents to remain part of the experience. EvaniaAI follows a shared creative loop: children imagine, draw, and read; parents guide the experience and approve the stories that enter the child's library.
What it does
EvaniaAI is a parent-managed AI storytelling app for families with children ages 0–15. Parents control profiles, safety, purchases, story approval, and access to Child space.
App provides:
- Recurring characters, Worlds, and connected stories.
- Personalization by age, reading level, interests, and tone.
- Parent approval before stories reach children.
Children draw a character in the app and turn it into a reusable storybook hero. Families can create a persistent World, choose a theme, and generate a four-page illustrated adventure. The same hero and World can return in later stories, supported by memory of approved adventures and relevant context.
Parents set reading level, interests, learning goals, tone, and themes to avoid. Every story draft waits for parent review before it appears in Child Space. Parents can approve it, edit pages, or request a replacement draft with instructions such as “make this less scary.” They can also see completed pages and stories in the parent dashboard.
Character chat lets children ask questions grounded in an approved story. Parent Gate authorizes the chat before its first paid reply, and each generated reply uses a Chat credit. Moderation and validation apply to generated content.
App supports up to 3 children profiles per one family account. The app implements a PIN-protected Parent Gate: it returns from Child Space to Parent Space and confirms protected paid actions. Consumables and unapproved stories do not accessible while in the child space of the App.
The app supports English, Ukrainian, and Vietnamese. Family content is private, with parent controls for consent, export, and deletion. Parents purchase specific creative credits through RevenueCat and Apple in-app purchases, without an auto-renewing subscription.
How I built it
I built the mobile app with Expo, React Native, and TypeScript. A Next.js API checks family ownership, consent, Parent Gate authorization, and available credits before admitting generation work to a PostgreSQL-backed queue.
A separate worker handles OpenAI text, vision, image generation, moderation, and embeddings. Prisma connects the application to PostgreSQL. Hybrid retrieval combines pgvector similarity with lexical matches, relevant approved stories, character traits, parent feedback, and versioned World context. That gives returning adventures continuity without treating every prompt as a blank slate.
RevenueCat powers the Apple purchase integration and localized product pricing. EvaniaAI verifies signed purchase events and applies eligible transactions to a server-side credit ledger. Purchase reconciliation, duplicate-event handling, and credit reservations keep purchase fulfillment separate from long-running AI work. The worker rechecks authorization and billing before paid execution.
Challenges I ran into
The first challenge was continuity. A child should recognize the hero they created in the next adventure. I combined reusable character references with structured story memory and versioned World descriptions. These guide both writing and illustration.
The second challenge was connecting five AI workflows (stories, characters, worlds, revisions, and chat) to their own credit packs, each covering different generation costs. I built a shared accounting system that turns verified purchases into family credits and reserves the appropriate credit before each workflow starts. It handles delayed or duplicate purchase notifications, settles credits when work completes or fails, and limits replacement attempts so retries cannot create unlimited AI costs.
Another challenge was offering free credits without opening the door to unlimited AI costs. I tied welcome credits to a verified parent email and retained a secure fingerprint so deleting and recreating an account with the same email cannot reset the allowance. Credits and usage limits are enforced server-side across the family, so adding child profiles cannot multiply them. Duplicate requests reuse existing work, while bounded replacement attempts and spending caps prevent repeated failures from generating unlimited AI charges. The goal was to let families experience the app while keeping free access sustainable.
Accomplishments that I'm proud of
- Connecting a child's own drawing to a reusable hero, a persistent World, and an illustrated story the family can revisit.
- Making parent review a real publication boundary, alongside age and theme controls.
- Bringing English, Ukrainian, and Vietnamese into the same private family experience.
- Integrating RevenueCat consumable purchases with server-side fulfillment and recovery.
- Making the creative loop continue through approved stories, parent feedback, and visible reading progress.
What I learned
Trust in a creative AI app comes from the whole experience: what is remembered, who approves a story, when a credit is used, and what happens when something fails.
I chose consumable credits because families can create at different rhythms. A clear purchase for a specific kind of creative work fits that use better than assuming a recurring commitment.
I also learned to design around what a family can return to. A familiar hero and World give the next story a purpose beyond producing another image. Whether that becomes sustained family value is something I want to measure through real use and parent feedback.
What's next for EvaniaAI
These is still a lot to do. I will keep improving UX, character and World continuity, refine the iPad drawing and reading experience, and reduce friction between the first drawing and the first approved story.
I plan to measure where families need help, which credit packs they choose, and whether they return to create with the same heroes. I will use that evidence to improve onboarding, packaging, and generation reliability.
For Shipaton, I am highlighting the drawing-to-story interaction for the RevenueCat Design Award, the shared multilingual family experience for the Peace Prize, and intentional consumable purchases for HAMM.
Built With
- amazon-web-services
- clerk
- expo.io
- next.js
- openai
- pgvector
- postgresql
- prisma
- react-native
- react-native-reanimated
- react-native-skia
- revenuecat
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.