Work/Entertainment
2024 Seoul Global Movie Awards
Live Popularity Vote
An official vote for hundreds of thousands, accurate to the close
The Popularity Award at the 2024 Seoul Global Movie Awards was decided by an official vote in the Celebcard app. ZEROPLUSONE built the voting screens in the app and the voting server, and carried eight days of voting by hundreds of thousands of fans through to the close.
- Candidate 1
- Candidate 2
- Candidate 3
- Candidate 4
- Candidate 5
- Candidate 131%
- Candidate 224%
- Candidate 319%
- Candidate 414%
- Candidate 512%
Overview
An official vote between fandoms
Ten actors with huge fandoms, including Jung Hae-in, Cha Eun-woo, Byeon Woo-seok, Han So-hee and Go Youn-jung, were nominated, and the results were announced at the ceremony on December 5. For Celebcard this was more than an event — it was a chance to show it can be trusted with an official vote.
Approach
A system that produces an official result has to be right before it is fast.
In a fandom vote a single miscounted vote becomes a fairness dispute, and the dispute spreads to the platform’s credibility. So from the start we treated showing rankings quickly and finalizing results accurately as two separate problems.
01/03
Pick a category and vote, right in the app
We built the voting screens for both categories in Flutter inside the Celebcard app. The server double-checks the voting period and rules, and one team built both app and server so they follow the same rules.
- Candidate 1
- Candidate 2
- Candidate 3
- Candidate 4
- Candidate 5
Your vote has been counted
Best Actor · Candidate 2
- 1Candidate 131%
- 2Candidate 224%
- 3Candidate 319%
02/03
No stalls, even in the final rush
Votes peak right before the deadline. The voting servers scale out as needed, and incoming records are queued and processed in order, so the vote kept running even with hundreds of thousands arriving at once.
03/03
Live rankings and official results, kept apart
The live ranking fans watch refreshes lightly at short intervals, while the official result was finalized against a ledger that records every vote. The final results were announced at the ceremony on December 5.
- Candidate 131%
- Candidate 224%
- Candidate 319%
- Candidate 414%
- Candidate 512%
- Candidate 128%
- Candidate 226%
- Candidate 320%
- Candidate 415%
- Candidate 511%
- Voting closedDone
- Ledger checkMatch
- Announcement12.05 Ceremony
Highlights
- 01One team for screens and server
One team owned everything from the Flutter screens to the voting server, so the app and server never disagreed on the rules.
- 02One vote counts exactly once
Even with retries or repeated taps, the server blocks duplicates so the same vote is never counted twice.
- 03Closed exactly on schedule
Voting closed on December 3 as announced, and the results were officially announced at the ceremony on December 5.
- Flutter
- Stateless API
- Message Queue
- In-memory Counter
- RDB
Next
All work