Современный интернет-магазин одежды, построенный на Next.js 15 с использованием TypeScript, Prisma ORM и PostgreSQL. Приложение поддерживает многоязычность (русский и кыргызский языки) и включает полный функционал электронной коммерции.
- Просмотр товаров с изображениями, описаниями и ценами
- Категории и подкатегории с иерархической структурой
- Фильтрация товаров по категориям, цене, рейтингу
- Поиск товаров по названию и описанию
- Сортировка по дате, цене, рейтингу
- Размеры и цвета для каждого товара
- Отзывы и рейтинги клиентов
- Добавление товаров в корзину с выбором размера и цвета
- Управление количеством товаров в корзине
- Сохранение корзины в cookies браузера
- Оформление заказов с указанием контактных данных
- Отслеживание заказов по статусам
- История заказов клиента
- Сохранение понравившихся товаров
- Управление списком избранного
- Быстрый доступ к сохраненным товарам
- Русский язык (основной)
- Кыргызский язык (полная локализация)
- Переключение языков в реальном времени
- Сохранение выбранного языка в cookies
- Мобильная версия с нижней навигацией
- Десктопная версия с боковой навигацией
- PWA поддержка для установки как приложение
- Оптимизация изображений с Next.js Image
- Telegram уведомления о новых заказах
- Система уведомлений в интерфейсе
- Toast сообщения для обратной связи
- Next.js 15 с App Router
- React 19 с хуками и контекстами
- TypeScript для типизации
- Tailwind CSS для стилизации
- Lucide React для иконок
- Next.js API Routes для серверной логики
- Prisma ORM для работы с базой данных
- PostgreSQL как основная база данных
- Server Actions для серверных операций
- React Context для глобального состояния:
CartContext- управление корзинойFavoritesContext- управление избраннымLanguageContext- переключение языковOrdersContext- управление заказамиNotificationContext- система уведомлений
- PostgreSQL с Prisma схемой
- Модели: User, Category, Product, Order, Review, Setting
- Связи: категории-товары, заказы-позиции, отзывы-товары
- Индексы для оптимизации запросов
unimark/
├── prisma/
│ └── schema.prisma # Схема базы данных
├── public/ # Статические файлы
│ ├── unimark-logo.svg # Иконка сайта
│ ├── unimark-logo.svg # Логотип
│ └── unimark-logo.svg # PWA иконка
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/ # API маршруты
│ │ │ ├── banners/ # API баннеров
│ │ │ ├── categories/ # API категорий
│ │ │ ├── orders/ # API заказов
│ │ │ ├── products/ # API товаров
│ │ │ └── telegram/ # API Telegram
│ │ ├── cart/ # Страница корзины
│ │ ├── category/ # Страницы категорий
│ │ ├── favorites/ # Страница избранного
│ │ ├── orders/ # Страницы заказов
│ │ ├── product/ # Страницы товаров
│ │ ├── about/ # О нас
│ │ ├── privacy/ # Политика конфиденциальности
│ │ ├── returns/ # Политика возврата
│ │ ├── layout.tsx # Основной layout
│ │ ├── page.tsx # Главная страница
│ │ ├── manifest.ts # PWA манифест
│ │ ├── robots.ts # SEO robots.txt
│ │ └── sitemap.ts # SEO sitemap
│ ├── components/ # React компоненты
│ │ ├── AppLayout.tsx # Основной layout
│ │ ├── Header.tsx # Шапка сайта
│ │ ├── BottomNavigation.tsx # Мобильная навигация
│ │ ├── DesktopNavigation.tsx # Десктопная навигация
│ │ ├── ProductGrid.tsx # Сетка товаров
│ │ ├── CartItemOptionsModal.tsx # Модал опций товара
│ │ ├── CheckoutModal.tsx # Модал оформления заказа
│ │ ├── FilterModal.tsx # Модал фильтров
│ │ ├── ReviewModal.tsx # Модал отзывов
│ │ └── ... # Другие компоненты
│ ├── context/ # React контексты
│ │ ├── CartContext.tsx # Контекст корзины
│ │ ├── FavoritesContext.tsx # Контекст избранного
│ │ ├── LanguageContext.tsx # Контекст языка
│ │ ├── OrdersContext.tsx # Контекст заказов
│ │ └── NotificationContext.tsx # Контекст уведомлений
│ ├── lib/ # Утилиты и конфигурация
│ │ ├── db.ts # Подключение к БД
│ │ ├── cookies.ts # Работа с cookies
│ │ ├── i18n.ts # Интернационализация
│ │ └── reviewStorage.ts # Хранение отзывов
│ └── services/ # Сервисы
│ └── telegram/ # Telegram сервис
├── add_banners_data.sql # SQL для добавления баннеров
├── next.config.ts # Конфигурация Next.js
├── package.json # Зависимости проекта
├── tsconfig.json # Конфигурация TypeScript
└── README.md # Документация
- Next.js 15.5.4 - React фреймворк
- React 19.1.0 - UI библиотека
- TypeScript 5 - Типизация
- Tailwind CSS 4 - CSS фреймворк
- Prisma 6.16.2 - ORM для работы с БД
- PostgreSQL - База данных
- Lucide React - Иконки
- ESLint - Линтинг кода
- Turbopack - Быстрая сборка (dev режим)
Создайте файл .env в корне проекта со следующими переменными:
# База данных (обязательно)
DATABASE_URL="postgresql://username:password@localhost:5432/store_client"
# Telegram уведомления (опционально)
# Настройки Telegram бота для уведомлений о заказах
# Добавляются через API в таблицу settings:
# - TELEGRAM_BOT_TOKEN: токен бота
# - TELEGRAM_CHAT_ID: ID чата для уведомлений
# Дополнительные настройки (опционально)
# NODE_ENV=production
# NEXT_PUBLIC_SITE_URL=https://yourdomain.comДля настройки Telegram уведомлений добавьте в базу данных записи в таблицу settings:
INSERT INTO settings (key, value) VALUES
('TELEGRAM_BOT_TOKEN', 'your_bot_token_here'),
('TELEGRAM_CHAT_ID', 'your_chat_id_here');- Node.js 18+
- PostgreSQL 12+
- npm или yarn
git clone <repository-url>
cd unimarknpm install
# или
yarn install# Создайте базу данных PostgreSQL
createdb store_client
# Настройте DATABASE_URL в .env файле
echo "DATABASE_URL=\"postgresql://username:password@localhost:5432/store_client\"" > .env# Генерация Prisma клиента
npx prisma generate
# Применение миграций
npx prisma db push
# (Опционально) Заполнение тестовыми данными
psql -d store_client -f add_banners_data.sqlnpm run dev
# или
yarn devПриложение будет доступно по адресу: http://localhost:3000
id- Уникальный идентификаторfullname- Полное имяphoneNumber- Номер телефонаpassword- Парольrole- Роль (ADMIN, COURIER, SELLER)status- Статус (ACTIVE, INACTIVE, DELETED)
id- Уникальный идентификаторname- Название категорииdescription- ОписаниеcategoryId- ID родительской категорииimageUrl- URL изображения
id- Уникальный идентификаторname- Название товараdescription- ОписаниеimageUrl- JSON массив изображенийprice- ЦенаcategoryId- ID категорииsellerId- ID продавцаattributes- JSON атрибутыstatus- Статус (ACTIVE, INACTIVE, DELETED)
id- Уникальный идентификаторcustomerName- Имя клиентаcustomerPhone- Телефон клиентаdeliveryAddress- Адрес доставкиcourierId- ID курьераstatus- Статус заказаcustomerComment- Комментарий клиента
id- Уникальный идентификаторproductId- ID товараclientName- Имя клиентаtext- Текст отзываrating- Рейтинг (1-5)
id- Уникальный идентификаторkey- Ключ настройкиvalue- Значение настройки
GET /api/products- Получить товары с фильтрациейPOST /api/products- Получить товары по ID
GET /api/categories- Получить все категорииGET /api/categories/tree- Получить дерево категорийGET /api/categories/[id]- Получить категорию по ID
GET /api/orders- Получить все заказыPOST /api/orders- Создать новый заказGET /api/orders/[id]- Получить заказ по ID
GET /api/products/[id]/reviews- Получить отзывы товараPOST /api/products/[id]/reviews- Добавить отзыв
GET /api/banners- Получить баннеры
POST /api/telegram/send-notification- Отправить уведомлениеGET /api/telegram/test- Тест Telegram бота
- Мета-теги для каждой страницы
- Open Graph для социальных сетей
- Structured Data (JSON-LD)
- Sitemap.xml автоматическая генерация
- Robots.txt настройка индексации
- Next.js Image оптимизация изображений
- Turbopack быстрая сборка в dev режиме
- Lazy loading для компонентов
- Code splitting автоматическое разделение кода
- PWA поддержка для офлайн работы
- Валидация данных на клиенте и сервере
- SQL injection защита через Prisma
- XSS защита через Next.js
- CSRF защита встроенная в Next.js
- HTTPS обязателен для продакшена
- Манифест для установки как приложение
- Service Worker для кэширования
- Офлайн поддержка базового функционала
- Push уведомления (готовность к реализации)
Для тестирования функционала:
- Telegram уведомления:
GET /api/telegram/test - API endpoints: Используйте Postman или curl
- База данных: Проверьте через Prisma Studio (
npx prisma studio)
Этот проект создан для демонстрационных целей.
Для вопросов и поддержки создайте issue в репозитории или свяжитесь с командой разработки.
--
Unimark - современный интернет-магазин с полным функционалом электронной коммерции, построенный на передовых технологиях веб-разработки.