Read CHALLENGE_DESCRIPTION.md for the full challenge explanation and what we're looking for.
- .NET 8 SDK or later
- SQL Server (LocalDB, Express, or Developer Edition)
- SQL Server Management Studio (SSMS) or another SQL client
- Git
You need to install the AdventureWorks OLTP sample database. Follow these steps:
Download AdventureWorks2025.bak from Microsoft's GitHub releases:
For more details see: https://learn.microsoft.com/en-us/sql/samples/adventureworks-install-configure
Copy the .bak file to your SQL Server backup directory. The default location is:
C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Backup
The path varies depending on your SQL Server version and instance name.
Option A: Using SSMS
- Open SSMS and connect to your SQL Server instance
- Right-click Databases → Restore Database...
- Select Device, click ..., then Add
- Browse to the
.bakfile and select it - Click OK to restore
Option B: Using T-SQL
USE [master];
GO
RESTORE DATABASE [AdventureWorks2025]
FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Backup\AdventureWorks2025.bak'
WITH FILE = 1, NOUNLOAD, STATS = 5;
GOAdjust the path to match your environment.
Run a quick query to confirm the database is working:
USE [AdventureWorks2025];
SELECT COUNT(*) FROM Sales.Customer;The SyncPlatform app simulates the central platform API that your sync agent will communicate with.
cd src/SyncPlatform
dotnet build
dotnet run --project SyncPlatformThe WPF app will open with:
- Server running on
http://localhost:5100 - Buttons to enqueue sync tasks (Customers, Products, Orders, Inventory)
- Log viewer showing all HTTP requests and responses
- Endpoint:
http://localhost:5100 - API Key: Include
X-Api-Key: candidate-test-key-2026in all requests - Full API contract: See
docs/api-contract.md - Sample payloads: See
docs/sample-payloads/
# Should return 204 (no tasks queued)
curl -H "X-Api-Key: candidate-test-key-2026" http://localhost:5100/api/sync/next-task
# Click a button in the app, then try again — should return 200 with a taskBuild your solution in the candidate/ directory. See CHALLENGE_DESCRIPTION.md for full details.
- Fork this repository to your own GitHub account
- Push your changes to your fork
- Open a Pull Request back to this repository
Do not try to push directly to this repo — you won't have write access and it will fail.
Make sure to:
- Create meaningful commits that explain your reasoning
- Fill in CHALLENGE_SUBMISSION.md before submitting
If you're unsure how to open a PR from a fork, refer to this GitHub guide: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork