2.4 KiB
2.4 KiB
Next.js Админ-Панель — Руководство
Обзор
Новая админ-панель на Next.js 16 (App Router) + TypeScript + shadcn/ui + Prisma (SQLite) + Recharts. Полная замена EJS/SmartAdmin шаблонизатора.
Стек
| Слой | Технология |
|---|---|
| Фреймворк | Next.js 16 (App Router, Turbopack) |
| Язык | TypeScript 5 |
| Стилизация | Tailwind CSS 4 + shadcn/ui (New York) |
| БД | Prisma ORM + SQLite |
| Графики | Recharts |
| Состояние | Zustand |
| Тема | next-themes (dark/light) |
| Уведомления | Sonner (toast) |
| Иконки | Lucide React |
Авторизация
- Пароль: значение ADMIN_SECRET из .env
- Если задан SUPER_ADMIN_SECRET (и ≠ ADMIN_SECRET) — вход с ним даёт роль super_admin
- Если не задан — все админы = super_admin
- Кука admin_token (httpOnly, 24ч)
- Rate-limit: 5 попыток / 15 мин с IP
Экраны (11)
- Dashboard — 10 KPI, 7 графиков, активность, кошельки
- Catalog — дерево локаций + товары + модалка
- Users — список + детальная + бан + баланс
- Wallets — 3 вкладки + seed фразы (super_admin)
- Purchases — таблица с фильтрами
- Audit Log — журнал с цветными бейджами
- Categories — CRUD с привязкой к локациям
- Locations — CRUD (страна/город/район)
- Settings — редактирование .env переменных
- Locales — inline-редактор 3 языков
- Danger Zone — Seed / Clear с reauth
Docker (ARM)
docker build -t tg-admin .
docker run -p 3000:3000 -v ./db:/app/db -e ADMIN_SECRET=your_secret tg-admin
Требования: минимум 512 МБ RAM, ARM64/ARMv7/x86_64.
Seed-данные
POST /api/seed/demo создаёт данные идентичные оригинальному seed.js:
- 3 локации, 5 категорий, 11 подкатегорий
- 10 пользователей (alice-jack)
- 10 товаров, 25-30 покупок
- 10 криптокошельков, 2 комиссионных платежа, 12 audit записей