We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
YoloCorp is a developer challenge platform where you design backends your way through multi-episode projects with persistent data, drifting requirements, and a corporate fever-dream storyline.
Think LeetCode × real-world production × text adventure × The Office.
Each challenge is structured as a Project composed of sequential Episodes.
You progress by implementing code, passing tests, and unlocking the next Episode.
All the available challenges are listed in the Innovation Portfolio
A Project is a complete challenge path. It contains:
An Episode is a self-contained step in the Project.
Each Episode contains:
Completing an Episode unlocks the next one.
All interactions are performed using the YOLO CLI
Run yolo enroll. This command will :
Something looking like that:
.
├── backend
│ └── Dockerfile // a minimal backend Dockerfile you are expected to customize
├── client
│ ├── src
│ │ ├── toImplement.ts // the required interface for the current Episode
│ │ └── userImplementation.ts // your implementation
│ └── tsconfig.json
└── user-compose.yml // your own docker compose file
For each Episode, the CLI generates a new toImplement.ts file overwritting the previous one.
This interface is voluntarily kept as business oriented as possible and uses the Command-query separation (CQS) principle.
Your task is to implement all its functions in userImplementation.ts.
You are free to design and implement any backend architecture, including:
Your backend must be defined in user-compose.yml and all your services must use the Docker network yolo-network
(the backend service will automatically live within it).
NB : You can define as many services as you want, but you must have at least one service named backend that exposes a healthcheck when it’s ready for writes (i.e migrations have been executed). The client will wait for this service to become Healthy before running the tests.
If all tests pass:
./.snapshots folder (DO NOT DELETE THEM)NB 1 : YOLO applies a challenge-specific Compose file (e.g. episode-compose.yml) on top of your user-compose.yml using standard Docker Compose merge semantics.
NB 2 : Your client code will run inside the Docker Compose environment it should reach your other services using the docker network
yolo-network.
Work Episode by Episode until you reach the end of the project or the last published Episode
If you reach the last published episode, the date for the release of the next one will be displayed.
You can run yolo check-episode later on to get it
Your environment and data are not reset between Episodes. If Episode N introduces new requirements, you may need to migrate data created in Episodes 1…N−1.
This encourages real-world engineering practices such as migrations, contracts-first design, and data lifecycle management.
You define:
As long as your client implementation satisfies the tests, everything else is up to you.
Each deploy simulates:
The backend service is automatically deployed in the docker yolo-network so your services must be
in it too.
Something like that :
myotherservice:
image: myotherimage
networks:
- yolo-network
Yes, after a yolo deploy all containers are stopped but not destroyed so logs are available using
docker logs <my service>
To see client logs, the test runner pipes stderr, so you should see output like:
console.warn("warning from client")
console.error("woops from client")
A simple solution can be to define in your user-compose.yml
service:
backend:
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:3000/health"]
interval: 30s
timeout: 10s
retries: 3
and just return a 200 for a GET /health in your service.
This assumes your service listens on :3000
NB: alpine doesn't ship with curl so we use the more widely available wget command
Currently, the CLI uses
FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["tail", "-f", "/dev/null"]