Современное веб-приложение для онлайн-заказа услуг по вызову мастера на дом.
- Frontend: React 18 + Next.js 14 (App Router)
- Язык: TypeScript
- Стили: Tailwind CSS
- Архитектура: Frontend и Backend разделены, данные через REST API
npm install- Создайте файл
.env.localв корне проекта:
# Database
DATABASE_URL="your-database-url"
# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key-change-in-production"
# Site URL
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
# SMTP Configuration (для отправки email уведомлений)
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_SECURE="false"
SMTP_USER="your-email@gmail.com"
SMTP_PASSWORD="your-app-password"
SMTP_FROM="your-email@gmail.com"- Для настройки SMTP (Gmail):
- Включите двухфакторную аутентификацию в Google аккаунте
- Создайте пароль приложения: https://myaccount.google.com/apppasswords
- Используйте этот пароль в
SMTP_PASSWORD - Для других провайдеров укажите соответствующие
SMTP_HOSTиSMTP_PORT
# Режим разработки
npm run dev
# Сборка для продакшена
npm run build
# Запуск продакшен версии
npm startПриложение будет доступно по адресу: http://localhost:3000
├── app/ # Next.js App Router
│ ├── page.tsx # Главная страница
│ ├── layout.tsx # Корневой layout с SEO
│ ├── globals.css # Глобальные стили
│ ├── services/[id]/ # Страница деталей услуги
│ └── order/ # Страница оформления заказа
├── components/ # React компоненты
│ ├── Layout.tsx # Компонент layout (header/footer)
│ ├── ServiceCard.tsx # Карточка услуги
│ ├── OrderForm.tsx # Форма заказа с валидацией
│ └── ReviewCard.tsx # Карточка отзыва
├── lib/ # Утилиты и API слой
│ └── api.ts # API функции для работы с REST API
├── types/ # TypeScript типы
│ └── index.ts # Интерфейсы Service, Order, Review
└── public/ # Статические файлы
- Список всех доступных услуг в виде карточек
- Название, описание, цена и кнопка "Заказать"
- Адаптивная сетка (1 колонка на мобильных, 2 на планшетах, 3 на десктопе)
- Подробное описание услуги
- Изображение услуги
- Цена и категория
- Отзывы клиентов
- Кнопка оформления заказа
- Валидация всех полей
- Поля: имя, телефон, адрес, описание проблемы, удобное время
- Сообщение об успешной отправке
- Автоматическое перенаправление на главную
- Мета-теги для всех страниц
- Open Graph теги для социальных сетей
- Структурированные данные (JSON-LD) для поисковых систем
- SSR/SSG для лучшей индексации
- Оптимизированные изображения через Next.js Image
- Mobile-first подход
- Адаптивная сетка для карточек услуг
- Оптимизированные формы для мобильных устройств
- Responsive навигация
Приложение использует REST API. По умолчанию используется моковый API с тестовыми данными.
Для подключения реального API:
- Создайте файл
.env.local - Укажите
NEXT_PUBLIC_API_URL=http://your-api-url/api
API endpoints:
GET /api/services- получить список услугGET /api/services/:id- получить услугу по IDPOST /api/orders- создать заказ