Небольшой demo‑проект туристического портала:
- Next.js (App Router) + Tailwind UI
- Gemini через
@google/generative-ai - POI (СПб/ЛО) встроены в проект (без БД)
- Результат: таймлайн маршрута + карта с пинами (Яндекс.Карты)
- Установить зависимости:
npm i- Создать
.env.local(можно скопировать из.env.example) и добавить ключ:
cp .env.example .env.localВ .env.local:
GEMINI_API_KEY=...
NEXT_PUBLIC_YANDEX_MAPS_API_KEY=...- Запустить:
npm run devОткрыть http://localhost:3000.
Вариант A (переменные окружения из .env.local при старте):
-
Убедитесь, что есть
.env.localи там заданы GEMINI_API_KEY и NEXT_PUBLIC_YANDEX_MAPS_API_KEY. -
Запуск:
docker compose up --buildОткрыть http://localhost:3000.
Примечание: NEXT_PUBLIC_YANDEX_MAPS_API_KEY нужен в браузере, поэтому в контейнере он инжектится на старте в /public/env.js (не требует пересборки образа при смене ключа).
- Сделайте форк данного репозитория
- Импортируйте репозиторий в Vercel
- В настройках проекта добавьте Environment Variable:
GEMINI_API_KEY— ключ GeminiNEXT_PUBLIC_YANDEX_MAPS_API_KEY- ключ для Яндекс карт
- Нажмите Deploy
- UI отправляет параметры в
POST /api/itinerary - Сервер передаёт Gemini список разрешённых POI и просит вернуть строгий JSON
- UI отображает план и карту; точки не “придумываются” вне датасета