Files

Lunch Picker Backend

Express API server for Lunch Picker miniapp.

Modes

  • Memory mode: run without MySQL env vars (quick local demo)
  • MySQL mode: set MYSQL_HOST (or MYSQL_URL) and run with real DB

1) Install

cd backend
npm install
cp .env.example .env

2) Start

npm start

Server: http://localhost:4000

3) MySQL setup

  1. Create DB (example)
create database lunch_picker character set utf8mb4 collate utf8mb4_0900_ai_ci;
  1. Apply schema
mysql -u root -p lunch_picker < ../docs/db/schema.sql
  1. Set .env values (MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE)

When MySQL mode starts, seed data is inserted automatically only when restaurant table is empty.

API Endpoints

  • GET /v1/health
  • GET /v1/restaurants/nearby
  • GET /v1/restaurants/:restaurantId
  • GET /v1/restaurants/:restaurantId/reviews
  • POST /v1/restaurants/:restaurantId/reviews
  • DELETE /v1/reviews/:reviewId
  • POST /v1/restaurants/:restaurantId/like
  • GET /v1/users/me/reviews

Auth Simulation

Set x-user-id header to simulate user identity.

Example:

curl -H "x-user-id: demo-user-1" "http://localhost:4000/v1/restaurants/nearby?lat=37.501&lng=127.037&radiusMeters=1000&sort=distance"