Inspiration
My family plays a lot of card games together, and due to a strict quarantine my family has been under, we have been playing many card games. However, my girlfriend hasn't been able to participate, but there's no reason that she shouldn't be able to. That's where the idea of Cardigan came from!
What it does
Cardigan is a multiplayer online card game platform that allows users to play against computers or their family, or both! It is cross platform, so you can use it on iOS, Android, and Web!
How I built it
We used Go and a Postgres database to build our backend, with websockets to communicate between all of the platforms. We also have a small REST API for a small portion of the app. For deployment, we have a Docker/docker-compose set up for reproducibility.
To make the games, we made use of Go's fancy implicit interfaces, and a somewhat novel approach to making games using Finite State Automota. FSAs are super easy to maintain, build, and allow for very quick evolutions of game logic, and allow us to quickly create different games.
Challenges I ran into
Websockets can be a bit tricky, and managing connections is super hard. So far the hardest part has been dealing with stateful connections. Also, FSAs are really simple in a synchronous environment, but when it becomes asynchronous and faulty, things can go haywire.
Accomplishments that I'm proud of
The user interface for the app is GORGEOUS and I am super proud of it. It is extremely easy to use, has a distinct brand, and even has a dark mode! The FSAs are also a huge accomplishment as they have allowed us to get this game finished instead of having huge messy amounts of logic.
What We learned
We've learned that websockets are no fun, FSAs are useful for problems outside of theoretical computer science applications, and card games can bring people together in these hard times.
What's next for Cardigan
We plan on releasing Cardigan to production, so we will be buying a domain, setting up an LLC, and seeing if we can monetize it with some sort of ads. We just want to be able to pay for servers, as the most important part of this project is that people are able to play with their friends and family.
Log in or sign up for Devpost to join the conversation.