# Monadical Study Guide
Here's some documentation links for things we use in the Monadical stack. Whether you're brushing up on your skills to [apply to Monadical](https://monadical.com/apply) or just interested in what technology we use, these are the resources to get started.
- Python Language
- Beginner: https://learnxinyminutes.com/docs/python/
- Beginner: https://wiki.python.org/moin/BeginnersGuide
- Beginner: https://docs.python.org/3/tutorial/index.html
- Docs: https://docs.python.org/3/
- Itermediate & Advanced: http://intermediate-and-advanced-software-carpentry.readthedocs.io/en/latest/day1.html
- PEP8: http://dcjtech.info/wp-content/uploads/2015/12/Python-Syntax-Checker-Codes-Cheatsheet.pdf
## Practice projects
* **Multiplayer game**
Build a multiplayer game frontend & backend with django-channels and redux-time. An example would be a drawing game where one player's canvas drawing is synced to another person's scree, and they have to guess which work the user is drawing out of a selection, within a certain amount of time. It should use websockets to transmit the connection state in real time between players, but it can be anything realtime, it doesn't have to be a drawing game. Games with moving characters are harder because collision physics over a connection with latency is difficult to syncronize.
* **Video conference app**
Requires researching a complex API and implementing a redux-based store to manage a stateful API in a functional deterministic manner.
Build a video conferencing app with WebRTC that has clean management of connection state and an easy UX to video chat with other people by sharing a link
* **Leaderboard UX**
Requires creativity, UX design, user & competitor research, and honing in loose design requirements come up with a good experience.
Design an interactive leaderboard & player ranking interface in React that encourages players to earn more chips and improve their skills. It should balance showing stats & info with remaining clean and encouraging users to take actionable steps to play against more people or learn more theory.