This repository is a carefully crafted demo that showcases the capabilities of Amp, centered around an example e-commerce platform featuring a FastAPI backend and a React frontend. Data is stored in SQLite, so it is self-contained and easy to run.
For more information about Amp visit the Amp manual.

Follow the Quick Start guide to get started. Once the front and back ends are running (with the just dev
command), then you can open your browser on one side of the screen with Amp up on the other (in VS Code or the CLI).
See the DEMO.md for more information about how to effectively use this repo for an array of different demo purposes ranging from issue to PR to advanced feature adds.
.
├── .devcontainer/ # VS Code Dev Container configuration
├── .github/ # GitHub workflows and CI configuration
├── backend/ # FastAPI backend
│ ├── app/ # Application source code
│ ├── tests/ # Backend tests
│ ├── alembic/ # Database migrations
│ ├── pyproject.toml # Python dependencies (managed by uv)
│ ├── pytest.ini # Test configuration
│ ├── main.py # FastAPI entry point
│ ├── AGENTS.md # Agent documentation for backend
│ └── store.db # SQLite database file
├── frontend/ # React frontend (TypeScript/Vite)
│ ├── src/ # React components and pages
│ │ ├── api/ # API client and types
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # React Context providers
│ │ ├── hooks/ # Custom React hooks
│ │ ├── mockDB/ # Mock data for development
│ │ ├── pages/ # Page-level components
│ │ └── theme/ # Chakra UI theme configuration
│ ├── e2e/ # Playwright E2E tests
│ ├── public/ # Static assets
│ ├── package.json # Node.js dependencies
│ ├── vite.config.ts # Vite configuration
│ ├── eslint.config.js # ESLint configuration
│ ├── AGENTS.md # Agent documentation for frontend
│ └── playwright.config.ts # Playwright test configuration
├── specs/ # Project specifications
├── logs/ # Service logs (dev-headless mode)
├── test-results/ # Test output and reports
├── justfile # Development automation commands
├── package.json # Root package.json for shared dependencies
├── settings.json # Workspace settings
├── AGENTS.md # Agent documentation for overall project
├── DEMO.md # Demo usage guide
└── README.md # README
The fastest way to get started! No local installation beyond Podman required. If you encounter any errors, get the logs and feed them into Amp to help resolve. If that doesn't work, please ask an SE.
What you need:
If you have any of these preinstalled, make sure to update them before proceeding!
-
VS Code download
-
Amp VS Code extension and/or CLI download
-
Podman Desktop (download)
- Once installed, open it up and follow through the prompts to install
podman
- When you get to the virtual machine setup, make sure you dedicate at least 4 cores and 10gb of RAM
- Once installed and ready, you should see this in your Mac menu bar:
- Once installed, open it up and follow through the prompts to install
-
VS Code Dev Containers extension
-
Change the VS Code setting:
"dev.containers.dockerPath": "docker"
to"dev.containers.dockerPath": "podman"
-
Homebrew (optional if you want to install the GitHub CLI)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
GitHub CLI
gh
(optional) if you would like to reference issues, push PRs, etc. directly from Ampbrew install gh
Code Setup:
- Open VS Code
- Ensure VS Code Amp extension and/or Amp CLI are authenticated. You might need to authenticate the first time you bring up the devcontainer.
- Open the terminal:
- Enter the command below:
git clone https://github.com/sourcegraph/ecommerce-app.git
-
From File -> Open Folder, open the
ecommerce-app
folder in VS Code: -
Authenticate to GitHub (optional)
gh auth login
-
Wait a few minutes, the first build takes a few minutes, then it will be cached and near instant in the future
-
To start the demo app instances, either open the terminal and run
just dev
or ask Amp tostart all services in the background
Access the application on your local browser (ports will automatically be forwarded):
- Frontend: http://localhost:3001
- Backend API: http://localhost:8001
Reverting Changes
As you work with this repo, you can revert any changes made by selecting all files changed and discarding them (indicated by a number showing in the source control sidebar:

The most foolproof way to reset is to delete the entire ecommerce-app
repo and run git clone https://github.com/sourcegraph/ecommerce-app.git
again.
Demo Flow
Once your setup is working and you can see the UI on http://localhost:3001. Go to the DEMO.md page to learn about the different demo modules to use.
In the future, to use this repo, just open VS Code, open the ecommerce-app
folder, and click "Reopen in Container," and you should be ready to go.
What's Included in the Dev Container
Python 3.13, Node.js 22, all dependencies, Playwright browsers, GitHub CLI, Amp CLI, and all VS Code extensions pre-configured. Amp is set to run in Autonomous mode (most non-destructive commands allowed by default) with Playwright MCP Internal cost display is disabled.
See .devcontainer/README.md for detailed documentation and troubleshooting.
For direct installation on your host machine:
-
Install Amp (VS Code extension and/or CLI)
-
Install the prerequisites and clone the project:
# Install homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install just
brew install just
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
# Install python
uv python install 3.13 --default
# Install node
brew install node
# Install gh CLI and authenticate
brew install gh
gh auth login
# Install direnv for toolboxes to work
brew install direnv
# Verify you have the required tools
source $HOME/.local/bin/env
just --version
python --version
uv --version
node --version
direnv --version
git clone https://github.com/sourcegraph/ecommerce-app.git
cd ecommerce-app
- Install dependencies and setup testing:
just install-all # Install all dependencies (backend, frontend, E2E browsers)
- Run the application:
just dev # Start both services with native hot-reload using concurrently
Access the application:
- Frontend: http://localhost:3001
- Backend API: http://localhost:8001
just dev # Start both services (native hot-reload, interactive)
just dev-headless # Start both services in background (for agentic development)
just stop # Stop headless services
just dev-backend # Start only backend
just dev-frontend # Start only frontend
just seed # Populate database with sample data (only needed if database changes)
Install dependencies (if not already done):
just install-all # All dependencies (backend, frontend, E2E browsers)
Run services individually (if needed):
just dev-backend # Start only backend
just dev-frontend # Start only frontend
just setup-e2e # Install Playwright browsers
# Backend tests
just test-local # Backend tests
just test-local-single TEST # Run single test
# E2E tests (Playwright)
just test-e2e # E2E tests (headless)
just test-e2e-headed # E2E tests (headed - for debugging)
# Combined test suites
just test-all-local # All tests (backend + E2E)
Note: Frontend has no unit tests - only E2E tests with Playwright that test the full application.
# backend
just check # Run linting (ruff) and type checking (mypy)
# formatting
just format # Format backend (ruff) and frontend (prettier) code
# frontend
just lint # Lint frontend TypeScript
cd frontend && npm run format:check # Check frontend formatting without changes
Before pushing to CI, ensure all checks pass locally to avoid CI failures:
# One-time setup (if not done already)
just install-all # Install all dependencies
# Run complete CI pipeline locally
just ci # Runs: lint, tests, build, e2e (mirrors CI exactly)
just ci
runs the exact same checks as the GitHub Actions CI pipeline:
- Backend Quality: Ruff linting + MyPy type checking
- Backend Tests: Full test suite with coverage
- Frontend Quality: ESLint + TypeScript build
- E2E Tests: End-to-end Playwright tests
just build # Build frontend for production
cd frontend && npm run build # Alternative frontend build
just reset-db # Reset SQLite database
just db-shell # Open SQLite CLI
just migrate-create "message" # Create new migration
just migrate-up # Apply migrations
just migrate-down # Rollback migration
just health # Check service health
just logs # View last 100 lines from backend and frontend logs
just logs-follow # Follow both logs live (Ctrl+C to exit)
Headless Development Workflow:
When using just dev-headless
for agentic development, services run in the background and log to logs/backend.log
and logs/frontend.log
. Use just logs
to inspect output and just stop
to stop the services.
Based on the ecommerce-demo repo.