The project idea is inspired by McBroken.com made by rashiq.
- View the status of ice machines for McFlurry, McSundae, and milkshake products at McDonald's locations in the US, EU, and Australia.
- Turborepo - Monorepo build system
- Serverless Framework 3.x - AWS Lambda deployment
- Prisma 6.x - ORM with PostgreSQL 17
- Next.js 15 - Frontend framework (App Router + Turbopack)
- React 19 - UI library
- TailwindCSS 3.x - Styling
- Radix UI & shadcn/ui - UI Components
- Mapbox GL - Map rendering
- pnpm 10.x - Package manager
This project uses a monorepo structure managed by Turborepo:
apps/
├── frontend/ # Next.js 15 application - @mcbroken/frosty
├── mcall/ # Serverless: EU region - @mcbroken/mcall
├── mcus/ # Serverless: US region - @mcbroken/mcus
└── mcau/ # Serverless: AU region - @mcbroken/mcau
packages/
├── database/ # Prisma client & schema - @mcbroken/db
├── mclogik/ # Shared business logic - @mcbroken/mclogik
├── eslint-config/ # Shared ESLint config
├── typescript-config/ # Shared TypeScript config
└── serverless-config/ # Shared Serverless config
- Node.js 22+ (see
.nvmrc) - pnpm 10.x (9+ minimum)
- Docker and Docker Compose for local PostgreSQL
- Tokens: You need to have basic tokens from the McDonald's app to use their API.
- Environment: Copy
.env.distto.envand fill in the required values. - Install: Run
pnpm installto install all dependencies across the monorepo. - Database: Run
docker-compose -f docker-compose.dev.yml up -dto start your local PostgreSQL database. - Generate Prisma Client: Run
pnpm turbo run db:generateto generate the Prisma client.
# Run a specific app
pnpm --filter @mcbroken/frosty dev
# Generate Prisma client (required after schema changes)
pnpm --filter @mcbroken/db db:generate
# Run type checking
pnpm check-types
# Run linting
pnpm lint
# Run tests
pnpm test
# Run the full local CI suite
pnpm verify
# Invoke a serverless function locally
cd apps/mcall
pnpm invoke functionName
pnpm invoke getItemStatus -- --data '{"countryList": ["US"]}'Manual deployments are handled through deploy.yml with the GitHub Actions "Run workflow" button.
- Choose
stagingorproduction - Choose
all,mcall,mcus,mcau, orfrontend - Every deployment runs the full verification suite first
Configure the staging and production GitHub environments with these secrets:
AWS_DEPLOY_ROLE_ARNDATABASE_URLBASIC_TOKEN_EUBASIC_TOKEN_ELBASIC_TOKEN_USBASIC_TOKEN_APKEYMCALL_DEPLOYMENT_BUCKETMCUS_DEPLOYMENT_BUCKETMCAU_DEPLOYMENT_BUCKETSENTRY_DSNVERCEL_TOKENVERCEL_ORG_IDVERCEL_PROJECT_IDNEXT_PUBLIC_MAPBOX_KEY
If the deployment bucket secrets are omitted, the serverless apps fall back to stage-based names like mcbrokenio-mcall-bucket-production.
For detailed documentation, see the .ai/ directory:
- Project overview and architecture
- Development workflow
- Code patterns and conventions
You can find more information about the APIs here.