Skip to content

Memardo

Live Visit Live

Meme battles with friends, in Spanish.

Next.js 16React 19TypeScriptTailwind CSS 4@pxlkitUpstash RedisVercel AI SDKGIPHY APIIdeogram v2FLUX.1ElevenLabs TTS

The Problem

Every meme party game out there is in English. If you're playing with friends who speak Spanish, the prompts don't land, the humor is lost, and you end up explaining the joke instead of laughing at it.

The Solution

A multiplayer meme battle game entirely in Spanish. Players join a room with a 4-character code, get a funny prompt, and compete by finding the perfect GIF or generating an AI image. Everyone votes, the best meme wins. Built it because the ones that existed were in English, and honestly, it was just fun to make.

Two Game Modes

GIF mode lets players search GIPHY for the perfect reaction to a prompt. AI mode flips it: players write a creative description and the app generates an image using AI (Ideogram v2 or FLUX as fallback). Both modes end with anonymous voting where you pick the funniest submission.

Real-Time Multiplayer via Redis

Game state lives in Upstash Redis using hashes and sorted sets. Clients poll every 2 seconds for state changes. Phases auto-advance when all players submit or the timer runs out. No WebSocket complexity, just simple polling that works reliably across devices.

The Narrator

A narrator system commentates on game moments with pre-recorded Spanish phrases and dynamic text-to-speech via ElevenLabs. Over 70 pre-generated audio clips for common events, with on-the-fly generation for custom phrases. Mobile autoplay restrictions are handled by unlocking a shared Audio element on first user gesture.

Preview

Game Room
Memardo game room with meme prompt and player submissions
Voting
Memardo voting phase with meme submissions

Key Technical Decisions

Polling over WebSockets

A party game with 2-8 players doesn't need sub-second latency. 2-second polling against Redis REST API keeps the architecture dead simple: no connection management, no reconnection logic, no stale socket state. It just works on every device and network condition.

Dual AI image providers with fallback

Ideogram v2 (via FAL) produces the best images but can be slow or unavailable. FLUX.1-schnell (via TogetherAI) is the fallback: faster but lower quality. The provider is selected via environment variable, so switching is a config change, not a code change.

70+ pre-recorded narrator phrases

Generating TTS on every game event would add latency and cost. Pre-recording the most common phrases as MP3s and only using live ElevenLabs TTS for custom or rare phrases keeps the experience snappy while still feeling dynamic.

Pixel art aesthetic with @pxlkit

The retro pixel-art UI using @pxlkit components and Press Start 2P font sets the tone immediately: this is a game, not an app. The visual language tells players to have fun before they even read the first prompt.