DEV Community

Cover image for Scream2Wish: Break a genie lamp by screaming to wish
Rajnish Mehta
Rajnish Mehta

Posted on • Edited on

Scream2Wish: Break a genie lamp by screaming to wish

April Fools Challenge Submission ☕️🤡

This is a submission for the DEV April Fools Challenge

What I Built

I built Scream2Wish, an Android app where you have to literally scream at your phone to make a wish.

The app forces you through a fake login, then shows a genie lamp. The louder you scream, the more the lamp breaks. If you stop even for a second, it fully resets. Once you finally break it, a random character comes out (including mermaids… from a genie lamp, obviously).

You can then type a wish and a note. That data gets sent through a Cloudflare Worker → GitHub Actions pipeline and stored permanently in a public GitHub repo. In return, you receive a random stranger’s note.



It solves nothing. It wastes your voice. It permanently stores your questionable wishes online.

Demo

📱 Try It Yourself
Download the app, scream at your phone, and see what happens.

🧞 Download APK 🧜🏻‍♀️

🌐 Wishes Board:

Scream2Wish — Live Wishes Board

Every wish screamed into the void appears here in real time. Read what strangers wished for.

favicon rajnishkmehta.github.io

Code

The project is entirely open-source under the MIT license.

Main repo (App + Worker + Website):

GitHub logo RajnishKMehta / Scream2Wish

An Android app where you scream to break a genie lamp and send your wish to GitHub

What Is This?

Scream2Wish is a completely 100% useful👀, mildly chaotic Android app that forces you to scream as loud as you can to break a genie's lamp and only then lets you make a wish.

Your wish gets sent to the internet via a Cloudflare Worker → GitHub Actions pipeline and lives forever in a public repo. In return, you get to read a random stranger's note. Whether that's comforting or unsettling is entirely up to you.

It is a fun project made for timepass and learn.


Download

Download APK

Install on Android 10+ devices (sideloading required enable "Install from unknown sources" in settings).


The Full Experience

Step 1 — Permissions Gate

The app opens with an animated permission screen asking for microphone access (to detect your screams) and…

If you're reading the code carefully, you might notice something… off 👀

🧩 Hidden Bug Challenge

I intentionally left a tiny bug in this project.

Most users won’t notice it. But if you do, you can’t unsee it.

Status: 🟡 Not fixed yet

(Will update this section once someone finds and fixes it)

Your mission:

  1. Find it
  2. Fix it
  3. Open a PR

If you get it right, I’ll merge it.

No rewards. Just glory.

(Hint: It works when you enter it… but not when you come back.)

How I Built It

Technical Pipeline

  1. App (Expo + React Native) Detects user screams in real time using microphone amplitude.
  2. API Layer (Cloudflare Worker) Receives wish + note + name and securely forwards it.
  3. Trigger (GitHub API) Worker fires a repository_dispatch event.
  4. Processing (GitHub Actions) Generates a unique ID, saves the wish as JSON, and updates index.json.
  5. Display (Website) Wishes become publicly visible via GitHub Pages + Vite.

Tech Stack

  • App: Expo + React Native
  • Backend/API: Cloudflare Workers
  • Website: Vanilla TypeScript + Vite (GitHub Pages)
  • Storage: GitHub (via Actions pipeline)
  • Local Storage: react-native-mmkv
  • Audio: expo-audio (scream detection) & expo-speech (genie voice)

Good luck to your vocal cords. You’ll need it.

Top comments (2)

Collapse
 
mydream4147bl profile image
D

Nice
but why it is unauthorised?

Collapse
 
rajnishkmehta profile image
Rajnish Mehta

Your comment came in at almost the same time when I fixed this and added the new release v1.3.1 😄