feat: bootstrap lunch picker miniapp with backend, docs, and branding assets
This commit is contained in:
63
template/backend/README.md
Normal file
63
template/backend/README.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
npm install
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
## 2) Start
|
||||
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
Server: `http://localhost:4000`
|
||||
|
||||
## 3) MySQL setup
|
||||
|
||||
1. Create DB (example)
|
||||
|
||||
```sql
|
||||
create database lunch_picker character set utf8mb4 collate utf8mb4_0900_ai_ci;
|
||||
```
|
||||
|
||||
2. Apply schema
|
||||
|
||||
```bash
|
||||
mysql -u root -p lunch_picker < ../docs/db/schema.sql
|
||||
```
|
||||
|
||||
3. 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:
|
||||
|
||||
```bash
|
||||
curl -H "x-user-id: demo-user-1" "http://localhost:4000/v1/restaurants/nearby?lat=37.501&lng=127.037&radiusMeters=1000&sort=distance"
|
||||
```
|
||||
Reference in New Issue
Block a user