You will need:
- (Optional, Windows Only) WSL: This allows you to run Linux commands on Windows, and will save you many, many headaches. It required that you install WSL if you have Windows 10 Home Edition, since Docker depends on it. When installing a distribution, Ubuntu is a perfectly fine choice.
- If you have WSL installed, you have the option of using either WSL's command prompt (bash) or a Windows command prompt (cmd or powershell) when running the commands in this document. Either will work, but whichever you choose, use the same command prompt consistently for all commands. This will prevent annoying issues due to differences in how yarn works on Windows vs Linux.
- NodeJS: Allows you to execute JavaScript outside of a web browser. This is installed via NVM.
- NVM: Node Version Manager. Allows you to manage multiple versions of NodeJS on the same machine. A useful thing to have, and what you should use to install NodeJS.
- While NVM isn't natively supported on Windows, you can get access to it through WSL.
- You can also install NodeJS directly through the installer, but you won't be able to switch between versions. Will you regret it? Try it, and find out.
- Yarn: JavaScript Package Manager. Installs the external code that BobaBoard depends on, without you having to manually download everything yourself. Also used to hide complex scripts under simpler commands like
yarn run test
.
- GitHub: You will use a GitHub account to download the BobaBoard code, make changes and send them back for review.
- (BobaServer Only) Docker: Docker runs applications in containers. I literally had to Google an ELI5. Trust me, you don't need to understand this to use it.
- You also need Docker Compose. This comes for free with the above in Windows and Mac, but might need additional steps on Linux.
- For Windows, you should run docker in a WSL2 instance. There's a checkbox in Docker settings for this. (This is required if you have Windows 10 Home Edition, and only recommended for other versions of Windows 10.) If Docker is failing to start, make sure you have WSL2 installed.
- (BobaServer Only) Redis: Redis is a caching server, which saves the result of queries made to the backend's database so we can give them back to users without recalculating them over and over again.
Make sure you have these before moving forward with the commands in the next sections.
How to Develop
You can install each codebase independently by following the "fetching dependencies through yarn" section in its instructions. If you want to "catch them all", you should go through each of them in reading order and follow the "local copy" section instead.
<aside>
⚠️ Using npm
instead of yarn
will result in errors. You can blame React for that.
</aside>
- Developing for BobaEditor (the text editor)
- Developing for BobaBoard UI (Component System)
- Developing for BobaBoard Frontend
- Developing for BobaBoard Backend