|
|
||
|---|---|---|
| apps | ||
| docs | ||
| packages/contracts | ||
| scripts | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitignore | ||
| AGENTS.md | ||
| docker-compose.yml | ||
| openapi.yaml | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
Our Cafe
A soft, shared coffee ritual for two devices at home.
Mobile Preview
| Welcome | Today | Recipe | Orders | Manage | Inventory | Settings |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Screenshots were captured from the seeded local development stack at a phone-sized viewport.
Repo Shape
apps/web: Next.js App Router frontendapps/api: FastAPI + SQLModel + SQLite backendpackages/contracts: generated TypeScript types fromopenapi.yamldocs/v1: product, API, UI, and design reference docs
Local Development
Install dependencies:
corepack pnpm install
uv sync --project apps/api --group dev
corepack pnpm contracts:generate
Run the API:
uv run --project apps/api uvicorn our_cafe.main:app --reload --host 0.0.0.0 --port 8000
Run the web app:
corepack pnpm --filter @our-cafe/web dev
Seed the database manually:
uv run --project apps/api our-cafe seed
The API serves on 0.0.0.0:8000 and the web app serves on 0.0.0.0:3000, so other devices on the same LAN can reach the app at http://<your-machine-ip>:3000.
For browser traffic, keep NEXT_PUBLIC_API_URL=/api/v1 so requests stay relative to the web app origin and work from phones or other devices on the network.
Docker
Start both services with:
docker compose up --build
SQLite data is stored under ./data.
Podman on Windows LAN Access
On Windows with Podman machine + WSL, published ports can appear as 0.0.0.0:3000->3000/tcp in podman ps while Windows only binds them on 127.0.0.1. In that case the app works on the host but not from phones on the LAN.
After podman compose up --build, run this from an elevated PowerShell session:
.\scripts\podman-lan-access.ps1
That adds Windows portproxy and firewall rules for ports 3000 and 8000, forwarding LAN traffic to Podman's localhost listeners. Remove those rules later with:
.\scripts\podman-lan-access.ps1 -Action disable
Quality Checks
uv run --project apps/api pytest
corepack pnpm --filter @our-cafe/web test
corepack pnpm --filter @our-cafe/web typecheck
corepack pnpm --filter @our-cafe/web build
Product Notes
The implementation follows the warm, mobile-first MVP described in:






