Engage in the ultimate caption showdown and discover the true meme lord with this entertaining game!
Players unleash their wit by crafting unique and imaginative captions for each blank meme, and then cast their votes for the most outstanding captions across all matches.
The crowning glory awaits the victor at the end of all contests, unofficially bestowing upon them the coveted title of Meme-Lord!
- A memer gets a new picture, and your task is to create the most creative and humorous caption that can crack even the most serious person in the room.
- Voter! Your role is to rate the caption using a 5-point system. Be fair in your scoring, as everyone's counting on your judgment when you step into the shoes of the memer :)
git clone --recurse-submodules https://github.com/ntdkhiem/caption-this
- Make sure to have
.env.dev
file in your project's root directory
- It should have
SECRET_KEY
,IMAGE_DIRECTORY
(use default:/usr/src/app/images
)
make all-up
The system is architected as a set of loosely coupled services deployed on Kubernetes, enabling horizontal scaling, resilience, and real‑time collaboration between players.
Under the hood, the backend is built with Flask and exposed via REST and WebSocket APIs. A Redis‑backed service powers low‑latency, real‑time events—such as new caption submissions and live voting updates. Each core domain (image service, frontend service, scoring/voting service) is isolated as its own containerized microservice, managed and load‑balanced with NGINX.