Getting started
Local setup
Toolchain, the repo, locked dependency installs, environment templates, and the readiness check.
By the end of this stage the local plumbing is done. Both locked environments are installed, the environment templates are copied, and a single readiness command confirms the project can start. The Azure values stay empty for now; you fill them in during the Azure stages.
None of this is glamorous, and that is the point. Real projects start with reproducible environments, not with the fun part.
Install the prerequisites
You need four things on your machine:
- Python 3.12 or newer with uv for the backend
- Node.js 22 or newer with pnpm 10 or newer for the frontend
- An AI coding agent such as Claude Code or Cursor if you want to build along the way Dave does
- git, plus a GitHub account
Verify the runtimes:
uv --version
node --version
pnpm --versionClone the repo
git clone https://github.com/daveebbelaar/e2e-invoice-review.git
cd e2e-invoice-reviewThe default main branch is the prepared starter. If you need to inspect the reviewed end product at any point, run git switch solution; switch back with git switch main before continuing the build.
Take a minute to look around before installing anything:
Install the locked environments
The repository pins direct dependencies exactly and commits both lockfiles, so you install exactly what Dave built against:
cd backend
uv sync --locked
cd ../frontend
pnpm install --frozen-lockfileTwo supply-chain guards are worth noticing. The backend sets exclude-newer = "7 days" in pyproject.toml and the frontend sets a minimum release age in pnpm-workspace.yaml, so both package managers refuse releases younger than about a week. A freshly published (or freshly hijacked) package version cannot enter this project by accident.
Copy the environment templates
Both services ship a committed .env.example. The real .env files are gitignored:
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.envThe frontend value can stay as is for local development. The four Azure values in backend/.env are placeholders until you provision the resources in the next stages. Check git status and confirm no .env file shows up.
Run the readiness check
The repo has one script that verifies the local environment without starting anything or installing anything:
cd ..
./scripts/dev.sh --check
# Invoice Review is ready to start.It checks that uv and pnpm exist, both .env files exist, both environments are installed, and ports 8000 and 5173 are free. When something is missing it tells you the exact command to fix it.
Checkpoint
uv --version,node --version, andpnpm --versionall workbackend/.envandfrontend/.envexist and do not appear ingit status./scripts/dev.sh --checkprintsInvoice Review is ready to start.
Next: Azure account
Create an Azure account with free credits and learn how subscriptions, resource groups, and resources fit together.
The sample documents
The 13-document fictional corpus, the four demo documents, and the manifest that defines what "working" means before any model runs.
Azure account
Create an Azure account with the free credit, understand the tenant, subscription, resource group, resource hierarchy, and set a budget alert.