Skip to content

Фулл-стэк приложение интернет магазина

Notifications You must be signed in to change notification settings

serggunnya/shoppirest

Repository files navigation

Приложение Интернет магазин.

React, RTK query, Typescript, Nest, Postgres(Supabase), hosting (Render.com)

  • - Получение категорий
  • - Получение списка товаров
  • - Постраничная навигация
  • - Фильтрация товаров по множеству атрибутов
  • - Получение данных товара (описание, параметры и изображения)
  • - JWT Авторизация и аутентификация

Клиентское React приложение

Swagger спецификация API

Скрипты (package.json)

nest:dev- запуск сервера в режиме разработки

react:dev - запуск react клиента в режиме разработки

start:dev - запуск сервера и react клиента

nest:build - сборка сервера

prisma:gen - сгенерировать PrismaClient на основе файла schema.prisma.

prisma:push - создать таблицы в базе данных на основе файла schema.prisma

prisma:seed - заполнить таблицы данными на основе файла seed.ts

Переменные окружения

  • SUPABASE_URL =""
  • SUPABASE_KEY =""
  • DATABASE_URL =""
  • ACCESS_SECRET =""
  • REFRESH_SECRET =""

Бэкэнд

  1. Общее описание:
  • В качестве бэкенда используется NestJS
  • Использует Prisma как ORM для работы с базой данных Postgeres (Supabase)
  • Реализует кэширование через @nestjs/cache-manager
  1. Основной функционал:
  • Получение фасетов (фильтров) для категории (api\v1\products\facets)
  • Получение продуктов по категории с пагинацией (api\v1\products)
  • Получение продукта по ID (api\v1\products\{id})
  1. Особенности реализации:
  • Поддержка версионирование API
  • Поддерживает фильтрацию по различным атрибутам продуктов
  • Работает с JSON-полями в базе данных (поле properties)
  • Использует сырые SQL-запросы через prisma.$queryRaw
  • Реализует кэширование для:
    • Атрибутов категорий
    • Числовых опций атрибутов
    • SQL-фильтров

База данных

схема