lyricit · real‑time game built on song lyrics
Period —
In lyricit, players see lyric keywords each round and guess the song in real‑time chat. The game uses lyrics from popular Korean songs over the years, crawled and processed in a distributed setup. I handled most of the backend work and set up the servers and CI/CD alone. I configured several deployment scenarios in Jenkins and kept refining usability through repeated QA rounds.
Backend lead for real‑time chat, game messaging and infrastructure
- Live room info updates and chat
- Room creation, game preparation and start, game mode settings
- First correct answer in chat wins the round
- Lyrics data search
One real‑time message channel per page
- Problem
- The game had many message channels, increasing resource use, channel management and development work. I had to choose between a channel per component and a channel per page, and the choice had to be simple enough to keep development costs down.
- Solution
- Combined the message channels into one per page. Responses share a common format, with message types distinguishing situations, which made channels simpler to manage. Resource use went down, and new features were added as new message types.
Dropped sessions
- Problem
- Players were marked offline when their socket session dropped, not when they logged out, so room and game state in Redis had to be updated at the same time. Timeouts also caused disconnections.
- Solution
- An interceptor checked STOMP commands and handled each connection state, and when a player dropped mid‑game, the game and room data were deleted and updated. The channel interceptor passed work to an event listener to avoid circular references. Heartbeat ping and pong frames at fixed intervals stopped timeout disconnections.
Architecture





