Inspiration

What if the ordinary words you share with other people could help a fantasy world grow?

Wizzr starts with familiar actions: posting, encouraging someone, and having a conversation. In Wizzria, those everyday interactions have a place in an adventure. A post becomes a Wizz, encouragement contributes to magic power, and the people behind the feed can meet in town. The aim is to give everyday words a shared purpose and people a reason to return to each other.

What it does

Wizzr is a mobile social RPG, available on iOS in English and Japanese. Its central loop is social activity → character growth and magic power → shared adventure.

  • Share a Wizz. Write an everyday thought, earn experience, and grow your character.
  • Encourage another traveler. Send a Heal to contribute to their magic power, or use Replies to continue the conversation.
  • Meet the people behind the feed. Walk through a shared town and chat. Campfire provides group conversation, separate from replies to an individual Wizz.
  • Take that progress into an adventure. Prepare companions, choose a calamity, and enter battle. Social activity contributes to the magic power you bring; starting a battle and attacking remain deliberate player actions.

Character paths, quests, companion collection, and a monster bestiary give that journey continuity. The connection between people and progression is the core of Wizzr: encouragement received in a social interaction can matter later in an adventure.

How it was built

The mobile app uses React Native and Expo. A TypeScript monorepo shares domain rules and Zod API contracts with a Hono backend on Cloudflare Workers. Cloudflare D1 stores persistent state, R2 stores media, and Durable Objects support real-time communication.

RevenueCat powers purchases and restoration in the Jeweler, the app's single entry point for real-money purchases. The model combines consumable Rebirth Stone packs with Royal Pass and Residency subscriptions, connecting optional purchases to companion collection, appearance items, and seasonal progression.

The native SDK supplies store prices and starts purchase and restore operations. Server-side webhooks apply currency grants and subscription state, while Subscriber API reconciliation brings restored purchases back into sync. Transaction identities prevent duplicate currency grants, and sandbox and production entitlement sources remain separate.

Challenges

The main design challenge is making the relationship between social activity and combat understandable. Players need to see how a Wizz, encouragement, and character progression connect, while keeping control over when to enter a battle. Shared domain functions keep the displayed progression and combat rules consistent.

Purchases have a similar boundary: completing checkout and receiving an in-game benefit are different events. Purchase feedback waits for confirmed server state, and restoration triggers reconciliation. Shared chat also has to handle a message arriving through both an API response and a WebSocket without displaying it twice.

Accomplishments

Wizzr has moved from release preparation to a public iOS launch. The app brings the social feed, a walkable town, character progression, companions, and combat into one fantasy world, with English and Japanese interfaces.

The work also covers less visible parts of that experience: purchase restoration, refund handling, duplicate event processing, and consistent application state across asynchronous updates.

What we learned

Familiar actions make an unfamiliar world easier to enter. The fantasy works best when players can understand what they are doing and how it helps their journey.

The engineering also makes a second lesson concrete: a purchase experience extends beyond the checkout screen. Delivery, waiting states, restoration, and recovery need to be part of the same design.

What's next

Following launch, the focus is refining the first journey: write a Wizz, encourage another traveler, and understand how those actions connect to an adventure. Player feedback will guide improvements to the explanations and transitions between social activity and combat.

Built With

Share this project:

Updates

Submission history