03376b3ea1
Rewrites dashboard and finder Dockerfiles to use a clean multi-stage build (deps → builder → runner) that installs npm packages inside Alpine Linux, avoiding the SWC musl binary issue when building from Windows host. Uses registry.npmmirror.com for reliable installs from restricted networks (Iran). - docker/api/Dockerfile: .NET 10 multi-stage build - docker/web/Dockerfile: Node 20-alpine multi-stage, npmmirror - docker/finder/Dockerfile: Node 20-alpine multi-stage, npmmirror - docker/website/Dockerfile: marketing website build - scripts/: PowerShell helper scripts for local dev Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
96 lines
3.4 KiB
Markdown
96 lines
3.4 KiB
Markdown
# Meezi development demo
|
|
|
|
## Café
|
|
|
|
| Field | Value |
|
|
|-------|--------|
|
|
| Slug | `demo-cafe` |
|
|
| ID | `cafe_demo_001` |
|
|
| Branch | `branch_demo_main` |
|
|
|
|
## Staff (OTP login)
|
|
|
|
Phones and roles are listed in [`data/demo-credentials.json`](../data/demo-credentials.json).
|
|
|
|
| Role | Phone | Name |
|
|
|------|-------|------|
|
|
| Owner | `09121234567` | مدیر دمو |
|
|
| Manager | `09121111111` | مدیر شعبه |
|
|
| Cashier | `09122222222` | صندوقدار |
|
|
| Waiter | `09123333333` | گارسون |
|
|
| Waiter | `09124444444` | گارسون ۲ |
|
|
| Chef | `09125555555` | آشپز |
|
|
| Delivery | `09126666666` | پیک |
|
|
|
|
In **Development**, OTP is logged by the API (no SMS).
|
|
|
|
## System admin
|
|
|
|
| Field | Value |
|
|
|-------|--------|
|
|
| Login URL | `http://localhost:3101/fa/admin/login` |
|
|
| Phone | `09120000001` |
|
|
|
|
After OTP login you can manage **plans/prices**, **integrations** (ZarinPal, NextPay, Vandar tokens + Kavenegar SMS), **notifications** (broadcast to all cafes, list/delete), **app settings**, **feature flags**, **cafes** (suspend/activate), and **support tickets**.
|
|
|
|
| Admin page | Path |
|
|
|------------|------|
|
|
| Integrations | `/fa/admin/integrations` |
|
|
| Notifications | `/fa/admin/notifications` |
|
|
|
|
Apply migration `SystemAdminPlatform` if the database was created before this feature.
|
|
|
|
## Merchant support
|
|
|
|
Dashboard → **پشتیبانی** (`/fa/support`) — open tickets; platform admins reply from **Admin → Tickets**.
|
|
|
|
## Appearance (per café)
|
|
|
|
Each café can customize **dashboard + guest menu** colors in **تنظیمات → ظاهر و رنگبندی**:
|
|
|
|
- **17 color palettes** (Meezi green, ocean, wine bar, espresso, …)
|
|
- **8 panel styles** (flat, modern, glass, minimal, bold, soft, elevated, outline)
|
|
- **6 menu layouts** (cards, compact, grid, list, magazine, classic)
|
|
- **Density** + **corner radius**
|
|
- **9 custom hex colors** (primary, secondary, accent, background, …)
|
|
|
|
Preset catalog: [`data/cafe-theme-presets.json`](../data/cafe-theme-presets.json)
|
|
|
|
## Category icons
|
|
|
|
Menu categories support **preset icons** (26 types) with **10 design styles**: flat, modern, real, minimal, outline, soft, bold, gradient, pastel, duotone — or pick from **100+ emojis** grouped by category theme.
|
|
|
|
- Pick style + food/drink preset under **مدیریت منو → دسته جدید → آیکون آماده**
|
|
- Catalog: [`data/category-icon-presets.json`](../data/category-icon-presets.json)
|
|
|
|
## Menu (Food-101)
|
|
|
|
- **48** demo items across 6 categories — see [`data/demo-menu-food101.json`](../data/demo-menu-food101.json)
|
|
- Images: Unsplash URLs in [`data/menu-image-manifest.json`](../data/menu-image-manifest.json) until you import real JPEGs
|
|
- Items without a Kaggle file still get a class-matched fallback image
|
|
|
|
### Reseed menu (existing DB)
|
|
|
|
Restart the API in Development — `DevelopmentDataSeeder` adds any **missing** catalog rows and refreshes images/translations.
|
|
|
|
### Import real Food-101 photos (optional)
|
|
|
|
1. Download [Food-101](https://www.kaggle.com/datasets/kmader/food41) (or `food-101` images folder).
|
|
2. Run:
|
|
|
|
```bash
|
|
dotnet run --project tools/MenuImageImporter -- --food101 "C:\path\to\food-101\images" --cafe cafe_demo_001
|
|
```
|
|
|
|
3. Update manifest `imageUrl` to `/uploads/cafe_demo_001/{itemId}.jpg` or restart API seeder after copying files.
|
|
|
|
### Regenerate manifest from catalog
|
|
|
|
```bash
|
|
dotnet run --project tools/SyncMenuManifest/SyncMenuManifest.csproj
|
|
```
|
|
|
|
## Tables
|
|
|
|
- Table **1** QR: `demo_table_01` → `/api/q/demo_table_01`
|