Watch the 30 seconds teaser to get a glimpse of the ultimate Westeros quiz.
Inspiration
Almost two years ago I have left the 9-5 world and tried to enter solopreneur universe but it turned out I cannot drive this spaceship on my own. After university my role at my first job was Java developer so the following 10 years of my carrier was built around it. Support Engineer (of Java applications), DevOps Engineer (in Java projects), Key Developer/Team Lead/Technical Architect and yet all around Java.
When I started to build something on my own, I soon realised that technology has much more than public static void main() (or Spring, or the whole Java ecosystem) can offer. This was the first time when I met Svelte. I started to create my personal projects with it exponentially faster than before. I followed Svelte developers, joined subs on Reddit and other communities about Svelte, and in one of them I learned about Convex. When I saw there is a hackathon going on about Convex, I thought this is the best testament of its promise: If I can build up and ship something judgeable with it within 2 weeks then Convex can really help me in delivering my projects faster.
What it does
3Eyed-Raven Quiz is a web based online quiz game about the world of Westeros. Players can practice their skills in single-player mode, or in competitive modes where only players with knowledge and quick reaction time may win.
How we built it
Project frontend is built with SvelteKit and TailwindCSS (and shadcn-svelte re-usable components) so it all started with completing the Svelte Quickstart from Convex. For authentication I decided to use AuthJS as I loved it in many of my previous projects, and unfortunately the authentication providers officially supported or offered by Convex are not working well together (yet) with Svelte.
Challenges we ran into
And that was also the first challenge which I had to overcome: authentication. Convex offers well documented and supported solutions for React, but in Svelte I had to implement my own ConvexAuthProvider component which was pretty fun by the way.
Accomplishments that we're proud of
Apart from being able to use an authentication provider which is not (fully) officially documented my other big achievement is having a multiplayer game with lobby and game logic within two weeks, with a semi-automated development environment with test and production environments without any hustle with dockefiles or other scripts. Everything just works. A commit into develop branch, and the staging instance at https://develop.3eyed-raven.com is changed, a merge into the main branch, and https://3eyed-rave.com is up-to-date. With this, and Svelte+Convex the development experience is great as everything is at hand.
What we learned
It could be part of the previous chapter too as my biggest lesson was to understand how Convex forces developers to think about data. Previously in my understanding business logic was driving application behaviour and modify data accordingly but with Convex it is enough to mutate your data, and the application will react.
What's next for 3Eyed-Raven
As this project have started two weeks before the deadline, time did not allow me to fully use all features from Convex, but the application allows more room for them. At the time of writing this only 100 questions are stored in the database as a static data, so an improvement could be if certain battle instances could add brand new questions into it. These 100 questions have already been generated with the help of AI, so an AI call could add more questions on the fly.
Crediting System
This is already a "game" but gamification always brings in (or keeps) more users. An achievement system could encourage players to spend more time on the site. Given the users are motivated, a crediting system could be introduced and limit certain game modes (like battle). These credits could be both earned and bought with the help of Stripe integration and spent on unlocking limited features.
Advanced Match-Making System
Additionally game making system is very simple at the moment as there is no (or little) player base but as soon as the number of players is growing it would be worth considering introducing a better match making system. It could draw players with similar skills together so the competition would be more challenging. Vector search is something to consider here, given all the necessary data is collected.
Scaling
Finally if everything works as it should, copycat it. There are many topics which are having huge fun base like Starwars, Star Trek, Stargate, Starcraft just to star-t. Every topic could open a new opportunity for fanatics to show their knowledge. (Although I am not sure about copyrights...) Either it is me who are hosting these new instances, or just "sell" the code for different communities and ask a certain share from their income.
Built With
- authjs
- convex
- shadcn-svelte
- svelte
- sveltekit
- tailwindcss
Log in or sign up for Devpost to join the conversation.