ef15fd6247
Full backend implementation: - Multi-tenant cafe/restaurant management (menus, orders, tables, staff) - POS order flow with ZarinPal and Snappfood payment integration - OTP authentication via Kavenegar SMS - QR digital menu with public discover/finder endpoints - Customer loyalty, coupons, CRM - PostgreSQL via EF Core, Redis for caching/sessions - Background jobs, webhook handlers - Full migration history Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
299 lines
11 KiB
JSON
299 lines
11 KiB
JSON
{
|
|
"version": 2,
|
|
"source": "Food-101 class mapping (Unsplash fallbacks until Kaggle JPEG import)",
|
|
"defaults": {
|
|
"drink": "https://images.unsplash.com/photo-1509042239860-f550ce710b93?w=600\u0026auto=format\u0026fit=crop",
|
|
"food": "https://images.unsplash.com/photo-1546793665-c74683f339c1?w=600"
|
|
},
|
|
"items": {
|
|
"item_demo_espresso": {
|
|
"food101Class": "espresso",
|
|
"imageUrl": "https://images.unsplash.com/photo-1509042239860-f550ce710b93?w=600\u0026auto=format\u0026fit=crop",
|
|
"nameEn": "Espresso",
|
|
"categoryId": "cat_demo_drinks"
|
|
},
|
|
"item_demo_americano": {
|
|
"food101Class": "cappuccino",
|
|
"imageUrl": "https://images.unsplash.com/photo-1572442388796-11668a67e3d0?w=600",
|
|
"nameEn": "Americano",
|
|
"categoryId": "cat_demo_drinks"
|
|
},
|
|
"item_demo_latte": {
|
|
"food101Class": "latte",
|
|
"imageUrl": "https://images.unsplash.com/photo-1461023058943-07fcbe16d735?w=600",
|
|
"nameEn": "Latte",
|
|
"categoryId": "cat_demo_drinks"
|
|
},
|
|
"item_demo_cappuccino": {
|
|
"food101Class": "cappuccino",
|
|
"imageUrl": "https://images.unsplash.com/photo-1572442388796-11668a67e3d0?w=600",
|
|
"nameEn": "Cappuccino",
|
|
"categoryId": "cat_demo_drinks"
|
|
},
|
|
"item_demo_mocha": {
|
|
"food101Class": "mocha",
|
|
"imageUrl": "https://images.unsplash.com/photo-1577887233537-a81b387b125e?w=600",
|
|
"nameEn": "Mocha",
|
|
"categoryId": "cat_demo_drinks"
|
|
},
|
|
"item_demo_tea": {
|
|
"food101Class": "miso_soup",
|
|
"imageUrl": "https://images.unsplash.com/photo-1556679343-c7306c1976bc?w=600",
|
|
"nameEn": "Masala tea",
|
|
"categoryId": "cat_demo_drinks"
|
|
},
|
|
"item_demo_iced_latte": {
|
|
"food101Class": "iced_coffee",
|
|
"imageUrl": "https://images.unsplash.com/photo-1517487881594-2787aeee8f58?w=600\u0026auto=format\u0026fit=crop",
|
|
"nameEn": "Iced latte",
|
|
"categoryId": "cat_demo_cold"
|
|
},
|
|
"item_demo_cold_brew": {
|
|
"food101Class": "iced_coffee",
|
|
"imageUrl": "https://images.unsplash.com/photo-1517487881594-2787aeee8f58?w=600\u0026auto=format\u0026fit=crop",
|
|
"nameEn": "Cold brew",
|
|
"categoryId": "cat_demo_cold"
|
|
},
|
|
"item_demo_lemonade": {
|
|
"food101Class": "lemonade",
|
|
"imageUrl": "https://images.unsplash.com/photo-1523672990561-64c16245f769?w=600",
|
|
"nameEn": "Lemonade",
|
|
"categoryId": "cat_demo_cold"
|
|
},
|
|
"item_demo_smoothie": {
|
|
"food101Class": "smoothie",
|
|
"imageUrl": "https://images.unsplash.com/photo-1505252585463-0433371f7f6b?w=600",
|
|
"nameEn": "Berry smoothie",
|
|
"categoryId": "cat_demo_cold"
|
|
},
|
|
"item_demo_croissant": {
|
|
"food101Class": "croque_madame",
|
|
"imageUrl": "https://images.unsplash.com/photo-1555507036342-9231d37c10f3?w=600",
|
|
"nameEn": "Croissant",
|
|
"categoryId": "cat_demo_breakfast"
|
|
},
|
|
"item_demo_omelette": {
|
|
"food101Class": "omelette",
|
|
"imageUrl": "https://images.unsplash.com/photo-1525351484343-752d43d363f1?w=600",
|
|
"nameEn": "Omelette",
|
|
"categoryId": "cat_demo_breakfast"
|
|
},
|
|
"item_demo_avocado": {
|
|
"food101Class": "avocado_toast",
|
|
"imageUrl": "https://images.unsplash.com/photo-1541519221064-49632fb3380e?w=600",
|
|
"nameEn": "Avocado toast",
|
|
"categoryId": "cat_demo_breakfast"
|
|
},
|
|
"item_demo_pancakes": {
|
|
"food101Class": "pancakes",
|
|
"imageUrl": "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7440?w=600",
|
|
"nameEn": "Pancakes",
|
|
"categoryId": "cat_demo_breakfast"
|
|
},
|
|
"item_demo_waffles": {
|
|
"food101Class": "waffles",
|
|
"imageUrl": "https://images.unsplash.com/photo-1567818735240-7acbb4b7e34c?w=600",
|
|
"nameEn": "Waffles",
|
|
"categoryId": "cat_demo_breakfast"
|
|
},
|
|
"item_demo_french_toast": {
|
|
"food101Class": "french_toast",
|
|
"imageUrl": "https://images.unsplash.com/photo-1484723091739-30a329e1f0c4?w=600",
|
|
"nameEn": "French toast",
|
|
"categoryId": "cat_demo_breakfast"
|
|
},
|
|
"item_demo_eggs_benedict": {
|
|
"food101Class": "eggs_benedict",
|
|
"imageUrl": "https://images.unsplash.com/photo-1608039819502-3d5a2a2e0b0e?w=600",
|
|
"nameEn": "Eggs Benedict",
|
|
"categoryId": "cat_demo_breakfast"
|
|
},
|
|
"item_demo_sandwich": {
|
|
"food101Class": "club_sandwich",
|
|
"imageUrl": "https://images.unsplash.com/photo-1528735602780-2552fd46c7af?w=600",
|
|
"nameEn": "Chicken sandwich",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_salad": {
|
|
"food101Class": "caesar_salad",
|
|
"imageUrl": "https://images.unsplash.com/photo-1546793665-c74683f339c1?w=600",
|
|
"nameEn": "Caesar salad",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_greek_salad": {
|
|
"food101Class": "greek_salad",
|
|
"imageUrl": "https://images.unsplash.com/photo-1540189549336-e6e99c3679fe?w=600",
|
|
"nameEn": "Greek salad",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_burger": {
|
|
"food101Class": "hamburger",
|
|
"imageUrl": "https://images.unsplash.com/photo-1568901346375-23c9450c58cd?w=600",
|
|
"nameEn": "Burger",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_steak": {
|
|
"food101Class": "steak",
|
|
"imageUrl": "https://images.unsplash.com/photo-1600891963295-d66a269b9202?w=600",
|
|
"nameEn": "Steak",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_salmon": {
|
|
"food101Class": "grilled_salmon",
|
|
"imageUrl": "https://images.unsplash.com/photo-1467003909585-2f8a72700288?w=600",
|
|
"nameEn": "Grilled salmon",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_tacos": {
|
|
"food101Class": "tacos",
|
|
"imageUrl": "https://images.unsplash.com/photo-1565299585323-38174c4aab1e?w=600",
|
|
"nameEn": "Tacos",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_shawarma": {
|
|
"food101Class": "shawarma",
|
|
"imageUrl": "https://images.unsplash.com/photo-1529006557810-274adbcb39d8?w=600",
|
|
"nameEn": "Shawarma",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_falafel": {
|
|
"food101Class": "falafel",
|
|
"imageUrl": "https://images.unsplash.com/photo-1601050690597-df5748fb5cee?w=600",
|
|
"nameEn": "Falafel",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_hummus": {
|
|
"food101Class": "hummus",
|
|
"imageUrl": "https://images.unsplash.com/photo-1626208082043-e6319abfeec2?w=600",
|
|
"nameEn": "Hummus",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_fries": {
|
|
"food101Class": "french_fries",
|
|
"imageUrl": "https://images.unsplash.com/photo-1573080496219-76b9e6909700?w=600",
|
|
"nameEn": "French fries",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_spring_rolls": {
|
|
"food101Class": "spring_rolls",
|
|
"imageUrl": "https://images.unsplash.com/photo-1526318896985-4d29c0903299?w=600",
|
|
"nameEn": "Spring rolls",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_ramen": {
|
|
"food101Class": "ramen",
|
|
"imageUrl": "https://images.unsplash.com/photo-1569718212165-3a8278d5f624?w=600",
|
|
"nameEn": "Ramen",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_pho": {
|
|
"food101Class": "pho",
|
|
"imageUrl": "https://images.unsplash.com/photo-1591814468924-caf36d123dd6?w=600",
|
|
"nameEn": "Pho",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_sushi": {
|
|
"food101Class": "sushi",
|
|
"imageUrl": "https://images.unsplash.com/photo-1579584425555-c3ce17fd4351?w=600",
|
|
"nameEn": "Sushi",
|
|
"categoryId": "cat_demo_food"
|
|
},
|
|
"item_demo_pasta": {
|
|
"food101Class": "pasta_carbonara",
|
|
"imageUrl": "https://images.unsplash.com/photo-1621996346565-e3dbc646d9a9?w=600",
|
|
"nameEn": "Alfredo pasta",
|
|
"categoryId": "cat_demo_pasta"
|
|
},
|
|
"item_demo_carbonara": {
|
|
"food101Class": "spaghetti_carbonara",
|
|
"imageUrl": "https://images.unsplash.com/photo-1612874741227-866d1aeeecd1?w=600",
|
|
"nameEn": "Carbonara",
|
|
"categoryId": "cat_demo_pasta"
|
|
},
|
|
"item_demo_bolognese": {
|
|
"food101Class": "spaghetti_bolognese",
|
|
"imageUrl": "https://images.unsplash.com/photo-1622973536968-77544a8a4e0e?w=600",
|
|
"nameEn": "Bolognese",
|
|
"categoryId": "cat_demo_pasta"
|
|
},
|
|
"item_demo_lasagna": {
|
|
"food101Class": "lasagna",
|
|
"imageUrl": "https://images.unsplash.com/photo-1574894709920-11b28e7367e3?w=600",
|
|
"nameEn": "Lasagna",
|
|
"categoryId": "cat_demo_pasta"
|
|
},
|
|
"item_demo_gnocchi": {
|
|
"food101Class": "gnocchi",
|
|
"imageUrl": "https://images.unsplash.com/photo-1551183053-bf33a48c970a?w=600",
|
|
"nameEn": "Gnocchi",
|
|
"categoryId": "cat_demo_pasta"
|
|
},
|
|
"item_demo_pizza": {
|
|
"food101Class": "pizza",
|
|
"imageUrl": "https://images.unsplash.com/photo-1513104890138-7c749659a591?w=600",
|
|
"nameEn": "Margherita pizza",
|
|
"categoryId": "cat_demo_pasta"
|
|
},
|
|
"item_demo_risotto": {
|
|
"food101Class": "mushroom_risotto",
|
|
"imageUrl": "https://images.unsplash.com/photo-1476124362071-b9f2c96ef2db?w=600",
|
|
"nameEn": "Mushroom risotto",
|
|
"categoryId": "cat_demo_pasta"
|
|
},
|
|
"item_demo_cake": {
|
|
"food101Class": "chocolate_cake",
|
|
"imageUrl": "https://images.unsplash.com/photo-1578985545062-69928b1d9587?w=600",
|
|
"nameEn": "Chocolate cake",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_cheesecake": {
|
|
"food101Class": "cheesecake",
|
|
"imageUrl": "https://images.unsplash.com/photo-1524351199678-941a58cfcc36?w=600",
|
|
"nameEn": "Cheesecake",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_brownie": {
|
|
"food101Class": "brownie",
|
|
"imageUrl": "https://images.unsplash.com/photo-1606313564200-e75d5e30476e?w=600",
|
|
"nameEn": "Brownie",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_icecream": {
|
|
"food101Class": "ice_cream",
|
|
"imageUrl": "https://images.unsplash.com/photo-1563805042-7684c019e1cb?w=600",
|
|
"nameEn": "Ice cream",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_tiramisu": {
|
|
"food101Class": "tiramisu",
|
|
"imageUrl": "https://images.unsplash.com/photo-1571877227200-a0d98ea607e9?w=600",
|
|
"nameEn": "Tiramisu",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_donuts": {
|
|
"food101Class": "donuts",
|
|
"imageUrl": "https://images.unsplash.com/photo-1551024506-0bccd28d3071?w=600",
|
|
"nameEn": "Donuts",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_churros": {
|
|
"food101Class": "churros",
|
|
"imageUrl": "https://images.unsplash.com/photo-1627482299165-0883a056a48f?w=600",
|
|
"nameEn": "Churros",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_baklava": {
|
|
"food101Class": "baklava",
|
|
"imageUrl": "https://images.unsplash.com/photo-1598110756419-84b30681f41f?w=600",
|
|
"nameEn": "Baklava",
|
|
"categoryId": "cat_demo_dessert"
|
|
},
|
|
"item_demo_creme_brulee": {
|
|
"food101Class": "creme_brulee",
|
|
"imageUrl": "https://images.unsplash.com/photo-1470309864661-683be0ef7eaf?w=600",
|
|
"nameEn": "Cr\u00E8me br\u00FBl\u00E9e",
|
|
"categoryId": "cat_demo_dessert"
|
|
}
|
|
}
|
|
}
|