This project contains a Next.js 15 application (Turbopack) and a lightweight FastAPI backend that powers AussieEat’s maker/eater flows.
- Node.js 20+
- Python 3.12
cd backend
python -m venv .venv
. .venv/Scripts/activate # Windows
# source .venv/bin/activate # macOS/Linux
python -m pip install -U pip setuptools wheel
pip install -r requirements.txt
uvicorn backend.main:app --reloadThe API listens on http://localhost:8000. Check health with http://localhost:8000/api/health.
npm install
npm run devVisit http://localhost:3000 to interact with the app. The auth flows and dashboards call the FastAPI endpoints directly.
The frontend defaults to http://localhost:8000 for API calls. To point at another host, create .env.local:
NEXT_PUBLIC_API_BASE_URL="https://your-api-host"
POST /api/auth/register– create an account (expectsemail,password,role)POST /api/auth/login– authenticate an existing accountGET /api/meals?maker_id=ID– list meals for a makerPOST /api/meals– add a meal for the makerGET /api/makers– list all makers with a featured meal preview and meal countsGET /api/maker/profile?maker_id=ID– fetch restaurant profile (auto-creates default if missing)PUT /api/maker/profile– update restaurant profile detailsGET /api/orders?maker_id=ID– fetch orders assigned to the makerPOST /api/orders– create an order entry (acceptsorder_code,meal_name,image_data, etc.)PATCH /api/orders/{order_id}– update order status (pending,preparing,ready,completed)GET /api/eater/orders?eater_id=ID– list the eater’s orders including status and submitted reviewsGET /api/eater/profile?eater_id=ID– fetch eater profile (auto-creates default if missing)PUT /api/eater/profile– update eater display name/preferences (email stays read-only)GET /api/reviews?maker_id=ID– list meal reviews for a makerPOST /api/reviews– record a review (derive maker/order data from the submittedorder_id)PATCH /api/reviews/{review_id}– update maker reply textGET /api/health– simple health probe
User data is stored in aussieeat.db (SQLite) within the project root. Passwords are hashed with Passlib (pbkdf2_sha256).