React front-end for the Pizza Menu app. Displays a menu of pizzas fetched from a backend API, with header, menu list, and footer.
- React 18
- Create React App (react-scripts)
- Testing: React Testing Library, Jest
- Node.js (compatible with the project’s
browserslist) - A running backend that serves the menu API (see API)
# Install dependencies
npm install
# Start development server
npm startThe app runs at http://localhost:3000 by default.
| Script | Description |
|---|---|
npm run dev |
Start in development mode |
npm run build |
Production build |
npm test |
Run tests |
The app expects a backend that serves the pizza menu at:
- GET
/api/menu/pizzas
Each pizza object should include at least: name, photoName, ingredients, price, and optionally soldOut.
If the backend is not running or /api/menu/pizzas is not available (e.g. not proxied), the UI shows: "We're still working on our menu. Please come back later :)"
For local development, ensure the backend is running and that requests to /api are proxied to it (e.g. via proxy in package.json or your dev server).
src/App.jsx— Root layout (Header, Menu, Footer)src/Menu.jsx— Fetches and renders the pizza listsrc/Pizza.js— Single pizza itemsrc/Header.jsx,src/Footer.jsx— Layout componentssrc/Order.jsx— Order-related UI
On push to master, the Multi-Cloud Instance Refresh workflow (.github/workflows/deploy.yaml) runs:
- AWS: Starts an instance refresh on the Auto Scaling Group
mern-asg(OIDC). - Azure: Upgrades VM Scale Set
mern-vmssin resource groupmern-app-rg(OIDC + secrets).
Ensure AWS role ARN and Azure secrets (AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_SUBSCRIPTION_ID) are configured in the repository.