Files
ticket-system/frontend-client/FRONTEND_ARCHITECTURE.md

23 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Архитектура Frontend-клиента (Next.js 14)
## 1. Базовые принципы
- **Стек:** Next.js 14 (App Router), React 18, TypeScript, Tailwind CSS.
- **UI/UX:** Темная тема (`#121212`), акцентный цвет `#E32636`. Иконки — строго `lucide-react`.
- **Компоненты:** Никакого кастомного CSS. Только утилитные классы Tailwind.
## 2. Управление состоянием (State Management)
- **Глобальный стейт (Zustand):**
- `authStore`: Хранит JWT-токен и данные профиля. **Обязательно** использовать persist middleware (хранить в localStorage).
- `cartStore`: Хранит выбранные места (`CartSeat` с `ticketId`). **ЗАПРЕЩЕНО** использовать persist. Корзина живет только в памяти страницы, так как лок места на бэкенде временный (TTL в Redis).
## 3. Работа с API и Сетью (КРИТИЧЕСКИ ВАЖНО)
- **Базовый URL:** ЗАПРЕЩЕНО хардкодить `localhost` или прямые IP в исходном коде. Всегда использовать `process.env.NEXT_PUBLIC_API_URL` с фоллбэком.
- **Клиент:** Axios инстанс (`src/api/client.ts`).
- **Авторизация:** Интерсептор автоматически добавляет `Authorization: Bearer <token>` из `authStore`.
- **Обработка ошибок:** Все вызовы API оборачивать в `try/catch`. Бизнес-ошибки (например, 409 Conflict) обрабатывать локально с показом Toast-уведомлений.
## 4. Структура директорий
- `src/app/` — Роутинг (Pages, Layouts).
- `src/components/` — Переиспользуемые UI компоненты.
- `src/api/` — API-клиенты и типизация ответов бэкенда.
- `src/store/` — Zustand-хранилища.