Inspiration
We love Halloween, but most “spooky filters” feel generic. We wanted a playful way to flex costumes that actually feels interactive.
Two twists make it memorable: AI captions that match the vibe, and a “DSA gate” that playfully nudges devs to solve a quick challenge before saving.
We extended it beyond a single photo: turn a set of images into a short, haunted narrative.
What it does
4 in 1 Platform to apply halloween filters, generate sassy captions, generate a gif and even create a custom story based on user images! Perfect for trying with friends and uploading for social media
Here is the user flow:
- Upload photos and preview instantly.
- Apply spooky filters (Vampire, Zombie, Ghost, Pumpkin, Witch, Demon, Skeleton, Possessed).
- Generate AI captions with adjustable “sass level.”
- Create a gif from a single photo
- Auto‑compose a spooky story from multiple photos
- Save/Share: Users can download the final video—after passing a fun DSA challenge.
How we built it
- Frontend: React + TypeScript (Vite), Tailwind + shadcn/ui + Radix for polished, fast UI.
- AI captions: Google Generative Language API (Gemini) via VITE_GEMINI_API_KEY, prompting with the chosen theme and sass level.
- Gif generation: HTML Canvas + MediaRecorder to render frames and produce a smooth WebM/MP4 blob in‑browser; jumpscare frames and transitions layered on top. Story mode: Sequences multiple uploaded images with theme‑aware transitions and caption pacing to form a short narrative.
Challenges we ran into
- Making calls to Gemini API
- Debugging certain errors and making feature changes
Accomplishments that we're proud of
- Being able to protype fast, build really cool features that are functional
- Working well together as a team
What we learned
- AI truly multiples engineering productivity
What's next for Halloween costume Flex
Possession Mode Live Filter: WebGL shader that “possesses” faces in real time with morphing eyes/teeth and dynamic ambient SFX tied to mic input.
Built With
- css
- express.js
- google-gemini-api
- javascript
- node.js
- postgresql
- react
- tailwind
- typescript

Log in or sign up for Devpost to join the conversation.