Technologies
The project uses a number of technologies. Here are some of the most important ones:
- NodeJS + Express (Back-End, using TypeScript)
- MongoDB (Database)
- Socket.IO (Client-Server Communication)
- React (Front-End, using TypeScript)
- Git + GitHub (version control)
Learning Checklist
In order to contribute to the project, it will be helpful to learn a bit about some of the tools you will be using. It can be somewhat overwhelming to try to learn so many things at once, so try to take it one step at a time. It will also be imperative that you can learn while updating project code.
- Fill in any knowledge gaps with this JavaScript Tutorial
- Learn how TypeScript works with this quick guide
- Also know that all JavaScript is TypeScript already, so don't worry too much about the type stuff
- Recognize the basic parts of a full-stack web application:
- back-end: the server - what happens behind the scenes (Node.js for this project)
- front-end: the client - what the user sees (React for this project)
- database: the storage location for all information (MongoDB for this project)
- communication layer: how the client and server communicate (Socket.IO for this project)
- Practice using the command line by playing this game
- Learn how JavaScript/TypeScript to build web servers with Node.js and Express
- See how to store and access data with MongoDB
- Also, see how to integrate with Node.js by using Mongoose
- Learn the basics of React with this tutorial
- Get into the React mindset
- Go deeper with the full guide, starting here
- Explore the available Material UI components that can make an app look good right out of the box
- Learn how to communicate with this live chat SocketIO tutorial
- Get comfortable with version control by following this Intro to Git & GitHub Workshop content
- Practice branching with this game
It is not necessary to have a full grasp of all of these concepts to start developing. In fact, even the architect of this project (aka the person writing this, aka Joseph) is nowhere near an expert on any of this! It's more about building a product and learning as you go.