- 1. Required steps
- 1.1. (UPD) Find a partner
- 1.2. Start creating a VM
- 1.3. Set up your fork
- 1.4. Set up programs
- 1.5. (UPD) Open in
VS Codethesoftware-engineering-toolkitdirectory - 1.6. Clone your fork
- 1.7. (UPD) Open the cloned repo and set up
VS Code - 1.8. Continue creating a VM
- 1.9. Set up
Python - 1.10. (UPD) Set up
Node.js - 1.11. Start the services
- 1.12. Observe containers and services
- 1.13. (UPD) Set up
Swagger UI - 1.14. Set up
pgAdmin - 1.15. (UPD) Stop the services
- 1.16. (UPD) Set up a coding agent
- 1.17. Set up the autochecker
- 1.18. Check the setup using the autochecker
- 2. Optional steps
Important
Some steps have the (UPD) label.
These steps must be completed to get the right setup for this lab, even if you have completed similar steps in the previous lab.
Note
We provide all of the hardest steps in the lab setup so that TAs can help you get the right setup during the lab.
Tasks are more or less easy when you have the right setup.
- Find a partner for this lab.
- Sit next to them.
Important
You work on tasks independently from your partner.
You and your partner work together when reviewing each other's work.
Note
Skip this step if you can connect to your VM.
Create a subscription to be able to create a VM.
Tip
Subscription approval may take time. Continue with the next steps while you wait — you will finish creating the VM later.
- Sign in on
GitHub. - Find
<your-github-username>.
-
Fork the course instructors' repo.
The course instructors' repo URL is https://github.com/inno-se-toolkit/se-toolkit-lab-4.
-
The URL of your fork should look like
https://github.com/<your-github-username>/se-toolkit-lab-4.
- Add a collaborator — your partner.
- Your partner should add you as a collaborator in their repo.
Note
It's OK if your collaborator can't change Settings in your repo.
Note
Branch protection prevents accidental pushes directly to main.
This enforces the PR workflow and ensures all changes are reviewed.
- (Optional) Read about
VS Code. - Set up
VS Code.
- (Optional) Read about
Docker. - Install
Dockerif it's not installed. - Start
Docker.
- Check the current shell in the
VS Code Terminal. - If it's not
bashorzsh, switch to theLinuxshell for theVS Code Terminal. - Check the current shell again.
-
Note: Old containers and volumes from a previous lab version may conflict with the updated services. Stop running containers, remove stopped containers, and delete unused volumes so you start with a clean state.
- (Optional) Read about
Git. - Install
Gitif it's not installed. - (Optional) Configure
Git.
-
Inside the
Desktopdirectory, create the directorysoftware-engineering-toolkit.Skip this step if this directory exists.
-
Open in
VS Codethe directory:software-engineering-toolkit. -
(
Windowsonly) Reopen the directory inWSLif you didn't do that before.
-
Copy
<your-fork-url>.It should look like
https://github.com/<your-github-username>/se-toolkit-lab-4.
-
- Replace
<repo-url>with<your-fork-url>. - Replace
<repo-name>withse-toolkit-lab-4.
- Replace
Important
Go by the links in the steps below and complete the checks ("You should see ..."). Otherwise, your setup will be broken.
- Open in
VS Codethe directory:se-toolkit-lab-4. - Check the current shell in the
VS Code Terminal. - Install the recommended
VS Codeextensions.
Troubleshooting
Go back to step 1.4.3 and set the default shell.
Reload the VS Code window: press Ctrl+Shift+P, type Reload Window, and press Enter.
Note
Don't overwrite the key if it already exists. You can use the key that you created before for the new VM.
If you can't connect to your VM, complete these steps:
Note
See What is Python.
Note
See uv.
Note
The dependencies have been updated in this project version.
-
Note: you've already opened the project directory.
Note
See service.
-
To copy the
.env.docker.examplefile to the.env.docker.secretfile,cp .env.docker.example .env.docker.secret
Note
Docker Compose reads environment variables from .env.docker.secret
and uses them to configure the containers defined in docker-compose.yml.
-
To start the services,
docker compose --env-file .env.docker.secret up --buildWait for the services to start. You should see log output from the
app,postgres,pgadmin, andcaddycontainers.Troubleshooting
Stop the process that uses the port, then retry.
To rebuild all containers from scratch,
docker compose --env-file .env.docker.secret down -v docker compose --env-file .env.docker.secret up --buildCheck your internet connection. If you are behind a proxy, configure
Dockerto use it.
Note
The database is initialized from backend/app/data/init.sql only on the first start of the PostgreSQL container.
If you need to re-initialize the database (e.g., after pulling upstream changes to init.sql), see Resetting the database.
-
To list running containers,
docker compose --env-file .env.docker.secret ps -
To look at services and their statuses specifically,
docker compose --env-file .env.docker.secret ps --format "table {{.Service}}\t{{.Status}}"You should see a similar output:
SERVICE STATUS app Up 3 minutes caddy Up 3 minutes pgadmin Up 3 minutes postgres Up 3 minutes (healthy)
-
To see logs for all services,
docker compose --env-file .env.docker.secret logsYou should see log output from the
app,postgres,pgadmin, andcaddyservices. -
To see logs for the
postgresservice,docker compose --env-file .env.docker.secret logs postgresYou should see only the
postgresservice logs, including a line likedatabase system is ready to accept connections.
-
You should see the
Swagger UIpage with the API documentation.
Note
pgAdmin takes 2-3 minutes to start after you have started the services.
Troubleshooting
pgAdmin takes 2–3 minutes to start. Wait and refresh the page.
Make sure the services are running. Go back to step 1.11.2 and start them.
-
Browse the data in the
interactstable.You should see rows of data stored in the database.
These are records of what
learners did withitems (courses, labs, tasks, steps).learnersattempted,completed or justvieweditems. -
Verify that the following tables also exist:
itemlearner
A coding agent can help you write code, explain concepts, and debug issues.
- Method 1: Set up a
Qwen Code-based agent. - Method 2: Choose another coding agent.
Check the task using the autochecker Telegram bot.
These enhancements can make your life easier:
- Set up
Nix - Set up
direnv - Learn to go back after clicking a link
- Set up the shell prompt
- Customize the
Source Control - Get familiar with
GitLens - Create a label for tasks
- View
Markdownfiles inVS Code
- (Optional) Read about
Nix. - Set up
Nix.
- (Optional) Read about
direnv. - Set up
Nix. - Set up
direnv.
Note
Shortcuts for going back after clicking a link:
VS Code— see the shortcut.Firefox—Alt+ArrowLeft.- Other browsers — google.
Starship shows your current Git branch, status, and other useful info directly in your shell prompt in almost any terminal, including the VS Code Terminal.
Complete these steps:
-
You should see something similar to this:
-
Click three dots to the right of
SOURCE CONTROL. -
Put checkmarks only near
ChangesandGitLensto see only these views.
GitLens helps you work with Git in VS Code.
Complete these steps:
Labels help you filter and organize issues.
With a task label, you can see in one view all issues created for lab tasks.
Tip
If you create the task label before creating issues, your issues will have this label automatically as configured in the issue form.
Complete these steps:
- Create the
tasklabel. - Add the label to issues.
- See all issues with the label.
If you want to view README.md and other Markdown files in VS Code instead of on GitHub:





