-
Landing page
-
Home page
-
My rooms page
-
Explore rooms page
-
Game room example 1
-
Game room example 1 participants
-
Game room example 2
-
Game room insert cards
-
Game room insert cards step 2
-
My decks page
-
Explore decks page
-
Deck page example
-
Deck page example about
-
Deck page create card
-
Deck page bulk edit cards
-
Help page
-
Help page example
-
GIF
Drag and drop example
Inspiration
One thing I love to do is sit down around the table and play card games with my friends and family. However, during the pandemic we have all been quarantining at home. I wanted to bring the same feeling to the virtual world and let people play any card game with their friends from anywhere and with any device.
What it does
Jest gives people the ability to create, share, and play with custom decks. Once you create or find a deck you like, you can start playing with their friends. Starting a game on Jest is easy. All you need to do is create a game room, import whatever decks you want to use, and invite your friends.
How I built it
I wanted to make Jest accessible on as many devices as possible, that is why I decided to start off by creating a web application. I built the backend using NodeJS, GraphQL, PostgreSQL, and Cloud Storage and the frontend using ReactJS, Redux, and Ant Design. I choose these tools so that I could built/ iterate quickly and give users a exciting and friendly experience.
Challenges I ran into
Since I wanted to make the way you play open to interpretation I had to make my database schema as flexible as possible. Designing the relationships between database entities proved more challenging than I initially imagined, but I finally managed to come up with a design that is intuitive, fast, and scalable.
Accomplishments that I'm proud of
I am super happy to see people actually using my application and I have gotten a lot of great feedback from both friends and strangers. In addition I learned so much during my development journey. I went in wanting to learn A LOT of new things (perhaps too many at the same time), however, I came out with a significantly better understanding of those tools and I can't wait to use them in my future projects.
What I learned
Five of the things I wanted to learn when developing Jest was GraphQL, Redux, React functional components/hooks, NodeJS, and Docker/Kubernetes.
While I have created several websites built on Rest APIs this was my first time creating a website built on GraphQL. I loved how GraphQL was able to turn multiple request into one concise statement.
I am pretty experienced with React, however, I mostly worked with non-functional components and tried to avoid Redux (since I didn't want to turn over that stone). However, after using Redux, functional components, and hooks I was able to pull most of the logic out of my components making them more scalable and reusable.
Before, developing Jest I primarily programmed my backends in Python (Django/Flask) and Java/Kotlin (Spring). I wanted to try out a new language so I choose NodeJS (since it was a very popular language leveraged my many other applications). I found that NodeJS was very easily to program with and made the development process very quick.
Finally (but definitely not last), I really wanted to learn how to use Docker and Kubernetes. I have never containerized my applications before and I didn't even know what container orchestration was. I deployed my previous applications using AWS EC2 or Heroku. However, I wanted to allow Jest Games to be as scalable as possible and I knew containerizing my application so I could split it out into microservices would help. Docker was significantly easier to learn than Kubernetes, however, after reading (and re-reading) the Kubernetes documentation I finally started to piece things together. Now that I have things set up Kubernetes is really easy to work with and use.
What's next for Jest Games
Jest is still under active development and I am improving it every day. I hope to see Jest become a inviting place where people can just sit down and play their favorite card games with their friends. I also hope to team up with a printing company to allow creators to print their custom decks.
Log in or sign up for Devpost to join the conversation.