I’m quite excited for my next personal project! I will be creating an online multiplayer Texas Hold ‘Em poker app with NPC support. The app will be fully playable in a standard web browser using React and hosted on an AWS Kubernetes deployment. Progress will move very slowly, as my primary focus is continuing education for my new job and completing my part-time job (which is scheduled to end in October 2018).

A True TDD

I’ve decided that I want this environment to be truly test-driven. I’ve completed several helper functions that will be needed, such as shuffling a deck of cards, dealing to all players, dealing table cards, determining the resulting hands based on the 7 available cards, and ultimately determining the winner. All of these functions had full test suites written before a single line of actual code was complete. I intend for the rest of the development cycle to follow suit.

Let’s Get Agile

In addition to the TDD environment, I’ve setup an Agile board. Even with a team of only myself, it will teach me Agile methodologies and provide a clear workpath for anyone who might join the development at a later time. Why were certain decisions made? I can tell you! Do you have a snapshot of exactly where you’re at? Actually, yes I do! Since I will be putting this project down for days at a time and returning to it later, this is an excellent way for me to remember exactly where I left off, what comes next, and why.

Trello Agile Board

React Front End Design

The front end will be completed with the popular React library. The directory structure will be incredibly important and has already been primarily mapped for components, tests, server files, and helpers, etc. While the entire app will have mock-ups, individual components will need to be properly diagrammed and documented prior to implementation. The goal is to document all aspects of each component so any future development is easy. Tests should also be completed for all components in Jest.

Player Component Template Player Component

Redux State Handling

If I could go back in time, I would have attempted to learn how to properly use Redux for the Arthur project. His state management was the most complex logic I’d written at the time, and I had no idea that Redux was created to solve the exact problems I was experiencing. The poker app will use Redux for state handling this time around, using the standard Duck format for types, actions, and sagas. I had also considered using react-easy-state, and I’m not fully set on Redux at the moment.

Let’s Play!

I’m excited to show more poker as we go, but I wanted to announce the project! I’m not just sitting back and relaxing now that I have a new job – I’m pushing forward, forcing myself to learn new techniques, libraries, and even languages (the back-end might ultimately be hosted in Java instead of nodeJS). I’ll have more to share over time!