KEREMET — FastAPI + PostgreSQL және React (Vite) негізіндегі онлайн-супермаркет. Каталог деректері енді PostgreSQL-дағы catalog_items кестесінде сақталады (catalog.json тек seed үшін қолданылады), ал тапсырыстар WhatsApp мәтінімен өңделеді.
keremet/
├── backend/
│ ├── Dockerfile
│ ├── requirements.txt
│ └── app/...
├── frontend/
│ ├── package.json, src/, public/
├── catalog.json
└── docker-compose.yml
docker compose build && docker compose up
Сервис порттары:
backend сервисі .env ішіндегі айнымалылар арқылы бапталады. Өзгертуге болатын негізгі мәндер:
STORE_NAME, STORE_CURRENCY, DELIVERY_FREE_FROM, DELIVERY_FEEАлдымен контейнерлерді іске қосып алыңыз, содан кейін:
docker compose run --rm backend python -m backend.scripts.load_catalog
Бұл командa catalog.json ішіндегі барлық позицияларды catalog_items кестесіне импорттайды.
cd frontend
npm install
npm run dev # http://localhost:5173
# üretim
npm run build && npm run preview
VITE_API_BASE_URL айнымалысын орнатсаңыз, API адресін өзгерте аласыз.
/api/catalog, /api/catalog/categories, /api/catalog/items — бәрі PostgreSQL-тегі catalog_items кестесінен оқылады./api/auth/register, /api/auth/login, JWT токен./api/profile (GET/PUT) — аты, телефон, мекенжай, тапсырыстар./api/orders (авторизация қажет) — БД-ға сақтап, WhatsApp мәтініне бағыттайды (admin рөліне тыйым салынған).users.role = 'admin'):
GET /api/admin/catalog/items — барлық позицияны көру.POST /api/admin/catalog/items — жаңа тауар қосу (image_url URL-ді де сақтайды).PUT /api/admin/catalog/items/{id} — жазбаны өзгерту.DELETE /api/admin/catalog/items/{id} — өшіру.GET /api/admin/orders — барлық тапсырыстар, клиент деректері және статусымен.PUT /api/admin/orders/{id}/status — статусын жаңарту (pending, processing, delivering, completed, cancelled)./admin беті бар (http://localhost:5173/admin), онда «Тауарлар» және «Тапсырыстар» табтары арқылы каталог пен тапсырыстарды басқаруға болады (статус өзгерісі клиент профилінде көрінеді).Админ жасау үшін users кестесінде role бағанын admin мәніне өзгертіңіз (мысалы, Adminer арқылы). Қарапайым қолданушыларға role='customer' қалады.
/api/orders — себет элементтері және профиль snapshot-ы БД-ға жазылады.https://wa.me/77000000000?text=... сілтемесіне бағытталады, чатта дайын мәтін ашылады.