Шаблон фронтенда на Next.js (App Router) с cookie‑based аутентификацией через внешний API. Проект предназначен как стартовая точка: логин, защищённые разделы, авто‑refresh токена и logout уже встроены.
npm run devНужно указать адрес backend API в .env.example:
NEXT_PUBLIC_API_URL=https://your-api.example.com
src/
api/ # Обёртки над запросами к backend API
app/ # App Router: страницы, layout'ы, route handlers
(auth)/ # Публичные страницы аутентификации
(protected)/ # Защищённые страницы (доступ по токенам)
auth/ # Route handlers для refresh/logout
components/ # UI-компоненты
lib/ # Утилиты
styles/ # Глобальные стили
types/ # Типы
Шаблон ожидает следующие эндпоинты на backend:
POST /auth/login— возвращаетSet-Cookieс access/refresh токенами.POST /auth/verify— проверяет access token.POST /auth/refresh— обновляет токены и возвращаетSet-Cookie.POST /auth/logout— инвалидирует сессию и возвращаетSet-Cookieдля очистки.
- Логин: клиент вызывает
login()вsrc/api/auth.ts, backend выставляет cookies, далее переход на/dashboard. - Проверка доступа:
src/app/(protected)/layout.tsxвызываетverify()и пропускает пользователя или редиректит на refresh. - Refresh:
src/app/auth/refresh/route.tsпроксирует/auth/refresh, получаетSet-Cookieи редиректит на целевую страницу. - Страницы логина:
src/app/(auth)/layout.tsxпроверяет cookies, и если сессия валидна — отправляет на/dashboard. - Logout:
src/app/auth/logout/route.tsпроксирует/auth/logoutи очищает cookies.
- Вся критичная логика с токенами работает на сервере Next.js, что упрощает безопасность.
- Клиентская часть не хранит токены в localStorage.
- В качестве UI библиотеки используется shadcn/ui.
- Ваш бекенд и токены должен работать на куках.