You should spend max. 4 hours on the project. The goal is not to "finish" the project, but to have code you are already familiar with so that we can discuss efficiently during the interview. Ideally, don't focus only on the back end or front end, and have a bit of both, even if it is heavily mocked/hard-coded.
Create a Sudoku game ( https://en.wikipedia.org/wiki/Sudoku ) with a JavaScript frontend and a backend of your choice (e.g. Java, Python, Node.js)
Users should have some feedback when then enter a new number, letting them know if the input is valid and the validation should be done server side
Deploy the application into a cloud environment of your choice (e.g. AWS, Azure) without the use of Kubernetes
A very simple JavaScript frontend with Flask (Python) REST API backend. Server-side validation with real-time feedback via API calls.
# Setup
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
python app.pyAccess at http://localhost:5000
Play Sudoku directly in your terminal without starting the web server:
python sudoku_cli.pyNote: This feature has been implemented using Copilot for creating the scaffold if you don't want to use the web server. (Effort: 20 minutes)
How to play:
- Enter moves in format:
row col value(e.g.,3 5 7places 7 at row 3, column 5) - To clear a cell:
row col 0(e.g.,3 5 0) - Commands:
h- Show helpn- Start new gameq- Quit
Display:
[#]- Fixed cells (cannot be modified)*#*- Your last move.- Empty cells
The CLI uses the same validation logic as the web version.
# Install test dependencies
pip install -r requirements-dev.txt
# Run all tests
pytest
# Run with verbose output
pytest -vNote: Test coverage is intentionally incomplete. The test suite includes basic happy path tests and essential error handling to demonstrate testing approach. Full coverage of all edge cases, validation rules, and error scenarios was not implemented due to time constraints.
Returns a new Sudoku game session.
Response:
{
"game_id": "game_1234",
"grid": [[5,3,0,...], ...],
"difficulty": "easy"
}Validates a player's move server-side.
Request:
{
"game_id": "game_1234",
"row": 0,
"col": 2,
"value": 4
}Response:
{
"valid": true,
"message": "Valid move",
"is_correct": true,
"is_solved": false
}Returns the solution for a game (testing endpoint).
docker build -t sudoku-game .
docker run -d -p 5000:5000 --name sudoku sudoku-gameOn your EC2 instance (Ubuntu/Amazon Linux):
# Clone or upload your code, then run:
bash deploy-aws.shThe script installs Docker, builds the image, and runs the container on port 80.
Requirements:
- Security group allows HTTP (port 80)
- Linux instance with bash
- Push Docker image to ECR:
aws ecr create-repository --repository-name sudoku-game
aws ecr get-login-password --region REGION | docker login --username AWS --password-stdin ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com
docker tag sudoku-game:latest ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/sudoku-game:latest
docker push ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/sudoku-game:latest-
Update
aws-ecs-task-definition.jsonwith your ACCOUNT_ID and REGION -
Register task and create service:
aws ecs register-task-definition --cli-input-json file://aws-ecs-task-definition.json
aws ecs create-service --cluster default --service-name sudoku-game --task-definition sudoku-game --desired-count 1 --launch-type FARGATE