Inspiration

We think we know our partner, friends, and the people around us, but do we really? Beneath everyday conversations lies a world of thoughts and secrets waiting to be discovered. We created an app that gamifies getting to know each other through bold, daring, and revealing questions. Players earn points, compete on a leaderboard, and battle for the win using a Kahoot-inspired format with four answer options. But our questions go deeper: they're provocative, unexpected, and deeply personal. The winner is the one who knows the others best. But it's not just about winning: it's about bringing people together and discovering sides of people you never knew existed.

What it does

Choose from 9 different modes tailored to every social situation: whether you're with your partner, at a party, or hanging out with friends.

  • Round 1: Every player privately answers a series of questions by choosing from 4 possible answers. The questions vary depending on the mode you selected. No two players have the same question.

  • Round 2: The real game, now the competition begins! Players take turns guessing what the others answered, with a 20-second limit for each question. To score points, you need to get the correct answer. The faster you answer, the more points you are awarded.

The winner is the player who guessed the most answers correctly and the fastest wins, proving they know the group better than anyone else. Ties are also possible.

In 4 out of the 9 modes, answers are taken by randomly sampling other player's names for a more fun and engaging experience.

How we built it

The frontend was developed using Swift and SwiftUI on Xcode. We leveraged ChatGPT and Claude for the design assistance, and some parts of the code.

The backend was developed with Supabase, using database functions and Postgres table triggers for the main API functions. The realtime features were implemented using Supabase's realtime channels and custom table triggers. User avatars are stored in a Supabase storage bucket, while a custom edge function was deployed for the user account deletion. Row-level security policies were set as restrictive as possible and tested thoroughly to ensure data safety.

Firebase's remote config was also used, to allow for a remote configuration of the Supabase URL and public key. This allows an effortless potential migration in the future, without needing to update client-side apps.

Challenges we ran into

Real-time synchronisation: The game requires all player answers to sync instantly to the backend, which added significant complexity. Also, managing multiple real-time features was technically demanding, and the constant realtime connections could quickly drain storage and rack up costs. To solve this, we implemented a feature that pauses the realtime sync when players leave the game page, put the app in the background mode or finish a game, and automatically unpauses when and only when necessary.

Backend design: The data and its access through our API had to be modelled out carefully, with all the necessary game constraints implemented. Questions with answers only being a random sample of maximum 4 players, question timers, players leaving during a game (or kicked out by its creator) and maintaining an order between players where all cases that had to be accounted for and tested. Additionally, careful row locking were added in the API functions to ensure latest data retrieval, avoid race conditions with PostgreSQL's MVCC, while still allowing for maximum throughput. A lot of research was done and lots of lessons were learned!

Content quality: The app's success depends entirely on having engaging, emotion-evoking questions that keep players hooked. We needed to generate over 1,000 questions, each with 4 answer choices. While we used AI to create this content at scale, we had to manually filter out weak or boring questions to maintain quality and keep the game addictive. This required fine-tuning and manual filtering.

Accomplishments that we're proud of

We're proud of creating a truly original concept: there are no direct competitors in this space. The product design is polished and the user flow feels intuitive and engaging.

What we're most proud of is the technical execution. Building a multiplayer social app with real-time synchronisation is quite challenging. Managing live data across multiple players, ensuring seamless gameplay, an engaging and pretty UI, and keeping everything synced and fast without breaking the experience required solving complex problems - and we pulled it off despite only being two students, only one of which is a programmer (the CTO).

What we learned

We learned to use tools we didn't know existed when we started (like for realtime data), to leverage AI (Claude, ChatGPT and Cursor) to build faster UI and help debug code, and we learned to focus on building the features that matter most for the user experience. We also learned not to trust AI too much for code generation: although AI did help debug our code and build easier parts, it could not replace manual programming for the many complex tasks.

The CEO learned about UI and UX design, how to create engaging questions and answers, and how to create an overall engaging flow of the app.

The CTO learned a lot about designing a backend infrastructure and API, data storage, realtime synchronisation, building a frontend app and integrating the frontend with the backend.

What's next for Trilo - Social Quiz App

Now that the app is finished and working great, our next priority is getting our first paying users. We will do this through organic growth on TikTok and Instagram, paid ads (TikTok and Meta), and working with influencers, in the US and French Market.

Built With

Share this project:

Updates