Aura battles are already a viral game. AURADUEL turns them into a sport, with rules that protect the people who play it.

Categories we are entering

Timestamps refer to the demo video.

  • RevenueCat Peace Prize. The rules are written into the code, starting with an anti-humiliation law: losing costs little, on purpose, because a duel gives the same XP whether you win or lose, your rank never goes down and the losing sphere only dims (1:09–1:21). Why it matters: bullying is common. In the US, 19% of high school students said they were bullied at school in the past year (CDC, YRBS 2023). In Latin America and the Caribbean, 1 in 4 students aged 13 to 17 said they were bullied in the past month (UNICEF & PAHO, 2026; school surveys from 2009 to 2019).
  • RevenueCat Design Award. Your real body draws the aura: pose and hand gestures are read live on the phone, with no video servers, and an AR layer paints the aura over the real battle (0:35–0:53). One shape runs through everything: the orb and its 12-segment ring are the app icon, the in-battle HUD and the rank badge.
  • Best Game Award. A full-body battle game played in the real world, where no two battles are alike because the content is you, your rival and your crowd, who vote from their own phones in the two-phone duel (0:53–1:08). Your XP builds a 12-step rank, win or lose, and we only sell cosmetics: you can buy how your aura looks, never the win (1:22).

Inspiration

Scroll any feed today and you'll find two videos next to each other: teenagers doing aura battles, and adults filming themselves laughing at them. I kept watching that second video, and I kept thinking: we have seen this exact scene before. Breaking was "kids spinning on cardboard." Skateboarding was "vandalism with wheels." Parkour was "they're going to kill themselves." Every generation invents its own way to gather, shaped by whatever it has at hand — a corner, a wall, a beat — and every generation gets mocked for it before it gets a name, a league, and sometimes an Olympic medal.

What this generation has at hand is a phone and an audience. So it invented a battle you win with presence.

I grew up on the other side of that joke. I was bullied a lot as a kid, and it affected me deeply, emotionally and psychologically. Therapy taught me to love myself, and training and competing freed me from the fear of being seen. The thing I have never been able to stand is a game whose fun depends on destroying someone. That is the part of the trend that worried me: an aura battle with no rules is one step away from a humiliation clip. So I did not want to defend the trend with arguments. I wanted to give it what turns any street activity into a sport: clear rules, a way to measure it, and an anti-humiliation law, so that whoever loses still walks out standing.

AURADUEL is that: movement, healthy competition and a group to belong to. It is designed around two things that research on young people, sport and physical activity links to a better self-image and a stronger sense of belonging: being physically active (Liu et al., 2015) and a focus on your own progress rather than on comparison (Harwood et al., 2015), which is why a duel gives the same XP whether you win or lose. And it is meant to be played face-to-face, with friends and a crowd around you. What training and competing did for me is what I want AURADUEL to offer teens: a place to lose the fear of being themselves in public, to show who they really are and to live more freely, while they build their relationships with others. That is our design goal, not a measured result: we have not measured AURADUEL's effect yet, and we don't claim it.

I built it solo. I'm Venezuelan: I emigrated to Spain in 2021 and to Switzerland in 2025, where I work in construction. I build AURADUEL at night, after work.

What it does

Two phones, one battle. Each phone reads its own challenger — body pose and hand gestures, live and on the device — and an AR layer draws the aura over the real battle: charge, energy, sparks, verdict. You see your rival's aura live.

How a battle works

  1. Charge. Hands in front of your body, flap them up and down fast, alternating: one goes up while the other goes down. Your movement fills the orb, and it releases on its own.
  2. Unleash. Spins, presence, drama. The engine measures your energy live: speed, reach and dramatic pauses count.
  3. The crowd. Friends scan a QR, join the stands from their own phones and vote. Their support is weighted into the verdict, but it can never overturn a performance measured at more than double its rival's.
  4. Verdict. Both phones compare what they measured, and both challengers see the same result.
  5. Rank. You earn it battle by battle, across twelve steps: Bronze, Silver, Gold, Legend. A loss only costs you the win: you take the same XP home, and your rank never goes down.

You can also play solo (Measure your aura) or with one phone as the referee (Face-to-face duel). In the two-phone Mirror duel, the phones link with a QR or a 6-character code, and what travels across the network is a random ID, your nickname, your rank tier, the cosmetics you have equipped (as catalogue IDs) and the numbers of the score. Your camera and your body never do.

Competing is free, and the Mirror duel will stay free forever.

The rules we refuse to break

These are not the fine print — they are the product, and they are enforced in code and in the database rules, not in a policy page:

  • Paying never improves your competitive result. Everything we sell today is cosmetic. No loot boxes, no buying votes, no betting, no ads. Aura points are never money and cannot be transferred.
  • Biometrics stay on the device. Movement analysis runs 100% on-device with MediaPipe. No landmark ever leaves the phone.
  • A consent screen every time you enter the arena, before the camera turns on. Today no video leaves the phone at all; if a reel of yours is ever published, you will be able to request its removal from the app.
  • Anti-humiliation by design. Losing costs little, on purpose: a duel gives the same XP whether you win or lose, your rank never goes down, and the losing sphere only dims. You can lose a duel. The app will never build a highlight reel of your worst moment.
  • Accounts and two-phone online duels ask players to be 14+ or to have a parent's permission (self-declared). The App Store rating is 13+.

Monetization, powered by RevenueCat

Competing is free. What you can buy changes how your aura looks, never how it scores.

  • 12 cosmetics (avatars, auras, trails & sparks, pets) as one-time purchases at USD 2.99 each.
  • AURADUEL Premium, monthly (USD 4.99) or yearly (USD 39): every cosmetic unlocked while it's active. If you cancel, you go back to your free cosmetics, and anything you bought on its own stays yours.
  • Built on the official RevenueCat Capacitor SDK: remote offerings (read from both current and all), purchases, customer info, identity tied to the player's account (logIn / logOut), and Restore Purchases at both points of sale.
  • Our own paywall, with the rule printed on it: "Premium never improves your result." Premium also keeps the in-person arena free and ad-free for everyone.

How we built it

React 18 + Vite + TypeScript + Tailwind as an installable PWA, wrapped with Capacitor for iOS. @mediapipe/tasks-vision (GestureRecognizer + PoseLandmarker) does the seeing; pixi.js v8 draws the aura at up to 30 fps; Firebase (anonymous and email sign-in, Realtime Database, Hosting) runs player accounts and cloud saves, the mirror duel and the stands page; RevenueCat runs every purchase.

Two things we built ourselves instead of buying: a mocap pipeline that captured our own catalogue of 11 signature moves with the same PoseLandmarker the game uses, and an asset pipeline that cuts our challengers out of video with a MediaPipe segmenter on the same vision runtime — so the auras in our marketing are drawn by the game's own engine, from poses measured with that same PoseLandmarker.

Quality is enforced by a team of specialised AI agents — security, data and brand guardians with veto power, plus a legal reviewer — and by 1,114 unit tests and 92 end-to-end tests running against the real production build, with the real CSP, the camera denied, and a slow mobile network.

Challenges we ran into

Judging a fight fairly on a mid-range phone. Running pose and hands at once is expensive, so the vision loader falls back from GPU to CPU — at startup if the GPU delegate fails to create, and mid-duel after 20 consecutive inference failures — instead of freezing the fight.

Multiplayer without surveillance. The obvious way to build a remote duel is to stream video. We refused, and rebuilt the duel so only a random ID, a nickname, a few cosmetic IDs and a handful of numbers cross the wire.

Designing the loss. This was the hardest one, and the most personal. A competitive game needs stakes, but stakes are exactly how a game becomes a bullying machine. Designing a loss that doesn't humiliate was not a compromise — it is the feature.

What we learned

That "aura" is measurable, but not always where you expect: at play distance the phone can barely see your fingers, so the charge is read from how your wrists pump up and down.

That privacy constraints make better products. Being unable to send video forced a design that is faster, cheaper to run, and safer for a 16-year-old.

That the critics in those reaction videos are not the enemy. They are just describing their own teenage years from the other side of the camera.

What's next

AURADUEL 1.0 has been live on the App Store since September 5, 2026, and version 1.1 — where the stands page shows the final result — was approved by Apple and has been live since September 15. Next: online duels with anti-cheat rules, and a pilot city in Latin America, where the trend is loudest, phones are mid-range, and a free sport goes a long way.

Built With

  • canvas
  • capacitor
  • firebase
  • firebase-hosting
  • gesture-recognition
  • ios
  • mediapipe
  • on-device-ml
  • pixijs
  • playwright
  • pose-estimation
  • pwa
  • react
  • realtime-database
  • revenuecat
  • tailwindcss
  • typescript
  • vite
  • vitest
  • webassembly
  • webgl
Share this project:

Updates

Submission history