# 🚀 Uchill Frontend - Оптимизированный Frontend

Новая оптимизированная версия frontend для образовательной платформы Uchill.

## ✨ Особенности

- **Next.js 16** с Turbopack для быстрой разработки
- **Material Web Components 3** для современного UI
- **iOS v24+ стиль интерфейса:**
  - Стеклянные панели с блюром и зернистостью (`.ios-glass-panel`)
  - Деликатный фиолетово-белый градиент фона (body overlay)
  - Прозрачные обёртки дашборда без заливки фона
  - Усиленные тени и подсветка стекла для глубины
- **Оптимизация производительности:**
  - Code splitting и lazy loading
  - In-memory кеширование
  - Оптимизация изображений
  - Bundle optimization
  - CSS Variables для быстрого рендеринга

## 🛠️ Технологический стек

- **Framework:** Next.js 16.1+ (Turbopack)
- **UI Library:** Material Web Components 3
- **State Management:** Zustand
- **API Client:** Axios с кешированием
- **Styling:** CSS Variables (без Tailwind)
- **TypeScript:** Да

## 📦 Установка

```bash
# Установить зависимости
npm install

# Запустить dev server
npm run dev

# Собрать для production
npm run build

# Запустить production server
npm start

# Анализ bundle size
npm run analyze
```

## 🐳 Docker

```bash
# Development
docker compose up front_material

# Production build
docker build --target production -t front-material .
```

## 📁 Структура проекта

```text
front_material/
├── app/                    # Next.js App Router
├── components/             # React компоненты
├── lib/                    # Утилиты и библиотеки
│   ├── api-client.ts      # API клиент с кешированием
│   ├── cache.ts           # Система кеширования
│   └── material-components.ts  # Импорт Material компонентов
├── hooks/                  # Custom hooks
├── contexts/              # React Context
├── api/                   # API модули
├── styles/                # CSS стили
│   ├── globals.css        # Глобальные стили
│   └── material-theme.css # Material тема
├── types/                 # TypeScript типы
└── utils/                 # Утилиты
```

## 🎨 Оптимизации

### Code Splitting

- Material Web Components загружаются по требованию
- Отдельные chunks для больших библиотек (LiveKit, Material)
- React и React DOM в отдельном chunk

### Кеширование

- In-memory кеш для быстрого доступа
- localStorage для персистентности
- API запросы кешируются автоматически

### Рендеринг

- CSS Variables вместо JS тем (быстрее)
- Оптимизация изображений (AVIF, WebP)
- Lazy loading компонентов

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

Создайте `.env.local` на основе `.env.example`:

```env
NEXT_PUBLIC_API_URL=http://localhost:8123/api
NEXT_PUBLIC_WS_URL=ws://localhost:8123/ws
NEXT_PUBLIC_LIVEKIT_URL=ws://localhost:7880
```

## 🔧 Разработка

Следуйте плану из `IMPLEMENTATION_PLAN.md` для поэтапной разработки.

## 📚 Документация

- [План реализации](./IMPLEMENTATION_PLAN.md)
- [Руководство по Material Components](./MATERIAL_COMPONENTS_GUIDE.md)
- [Быстрый старт](./QUICK_START.md)

## 🧭 Навигация и контейнеры страниц

- Для страниц `dashboard`, `schedule`, `chat`, `students` используется **полная ширина** (без верхнего `TopNavigationBar`), а внутренние отступы задаются самой страницей/панелями.

## 🪪 Карточки (Material 3)

- На странице `students` список студентов отображается **карточками** в стиле Material Design 3: изображение/аватар сверху, ниже имя и краткая подпись (например, количество занятий). Ориентир по визуальному паттерну — раздел “Cards” в Material 3.
