- **[code-server](https://github.com/coder/code-server)** : Open Source Visual Studio Code + web browser remote access
- **[coder](https://github.com/coder/coder)** : Development Environments (i.e. code-server, JupyterLab, JetBrains, and etc) management software
- **API-server** : LMS can call the endpoints of this API-server to manage **coder**.
## What is this?
You can use this template when you create a new lab and deploy it to **coder**. Lab users will get clients that include web IDE and software/tools (e.g. **[akamai CLI](https://github.com/akamai/cli)**).
- **build** : sample **API-server**
- **docker-compose.yaml** : installs **coder** and **API-server**
## Sample Workflow
- [ ]**Alice** : Content Creator
- [ ]**Bob** : Lab Administrator
**1. Servers vs Clients**
```
Alice ->> Bob: I'd like to create a new lab for ION.
Bob ->> Alice: Do you want servers or clients?
Alice ->> Bob: I'm not sure. It is a DevOps lab. Learners will run python, terraform, and httpie.
Bob ->> Alice: I suggest clients. Each learner can run codes or tools in his/her own isolated environment.
```
> Bob can create diverse types of servers (**Linux only!**) such as, web servers, application servers, and database servers.
> Bob builds a code-server template by customizing **main.tf**.
>
> **/samples/main.tf** file can be a good starting point if you don't want to use persistant volume.
**5. Staging**
> Bob deploys a code-server to kubernetes staging environment and Alice validates it iteratively until they finalize code-server template.
>
> Bob should customize API-server codes, if Alice wants to integrate **coder** with **LMS** (for example, click a button on LMS to create a new code-server and get its URL).
**6. Production**
> Bob deploys a code-server to kubernetes production environment.