Современный сайт доставки суши и роллов, разработанный с использованием Next.js и PostgreSQL.
- Фронтенд: Next.js 13 (App Router), React, TypeScript, Tailwind CSS
- База данных: PostgreSQL
- Хостинг: Vercel + Neon PostgreSQL
- Просмотр меню по категориям
- Детальные страницы товаров
- Корзина покупок
- Оформление заказа
- Акции и промокоды
- Клонирование репозитория
git clone https://github.com/your-username/sushimi.git
cd sushimi- Установка зависимостей
npm install- Автоматический запуск проекта
Проект включает автоматизированные скрипты для запуска и остановки всех необходимых сервисов:
# Запуск проекта (база данных + приложение)
npm run local:start
# Остановка проекта (база данных + приложение)
npm run local:stopСкрипт local:start выполняет следующие действия:
- Останавливает все предыдущие процессы (если они запущены)
- Запускает контейнер PostgreSQL через Docker
- Ожидает готовности базы данных
- Инициализирует базу данных тестовыми данными
- Запускает Next.js приложение
После запуска приложение будет доступно по адресу http://localhost:3000
Важно: Для работы автоматических скриптов требуется установленный Docker.
- Ручной запуск (альтернативный способ)
Если вы предпочитаете запускать сервисы вручную:
# Инициализация базы данных
npm run db:init
# Запуск приложения
npm run dev- Настройка базы данных
- Создайте базу данных в Neon (https://neon.tech)
- Скопируйте строку подключения (
DATABASE_URL)
- Настройка проекта на Vercel
- Подключите ваш GitHub репозиторий к Vercel
- В настройках проекта добавьте следующие переменные окружения:
DATABASE_URL- строка подключения к базе данных NeonUSE_SSL- установите вtrueдля Neon
- Запустите развертывание
Vercel автоматически запустит скрипт npm run vercel-build, который инициализирует базу данных и выполнит сборку приложения.
sushimi/
├── app/ # Next.js App Router
│ ├── api/ # API маршруты
│ ├── cart/ # Страница корзины
│ ├── checkout/ # Страница оформления заказа
│ ├── menu/ # Страница меню
│ ├── promotions/ # Страница акций
│ └── page.tsx # Главная страница
├── components/ # React компоненты
│ ├── features/ # Функциональные компоненты
│ ├── layouts/ # Компоненты макетов
│ ├── shared/ # Общие компоненты
│ └── ui/ # UI компоненты
├── lib/ # Утилиты и библиотеки
│ ├── api.ts # API функции
│ └── db.ts # Функции для работы с базой данных
├── public/ # Статические файлы
│ └── images/ # Изображения
├── scripts/ # Вспомогательные скрипты
│ ├── init-db.js # Скрипт инициализации БД
│ ├── manual-db-init.js # Скрипт ручной инициализации БД
│ ├── local/ # Скрипты для локальной разработки
│ │ ├── start.js # Скрипт запуска проекта
│ │ └── stop.js # Скрипт остановки проекта
│ └── generate-placeholders.js # Скрипт генерации заглушек изображений
└── types/ # TypeScript типы
Проект следует дорожной карте, описанной в файле ROADMAP.md. Основные направления разработки:
- Декомпозиция компонентов
- Улучшение типизации
- Оптимизация управления состоянием
- API и обработка ошибок
- Улучшение UX и производительности
- Безопасность и валидация данных
- Тестирование
- CI/CD и мониторинг
-
Порт 3000 занят
- Запустите
npm run local:stopдля остановки всех процессов - Если проблема не решена, найдите и завершите процесс, занимающий порт 3000
- Запустите
-
Ошибки с базой данных
- Убедитесь, что Docker запущен
- Проверьте, что порт 5433 не занят другим процессом
- Запустите
npm run local:stopи затемnpm run local:start
-
Проблемы с изображениями
- Запустите
node scripts/generate-placeholders.jsдля создания заглушек изображений
- Запустите
MIT