Коротко по двум вопросам — домен и админ‑панель/хранение данных.
1) Домен: можно ли «перенести» на Vercel?
- Да, два варианта:
- Оставить регистрацию домена в sweb и просто настроить DNS так, чтобы сайт работал на Vercel (рекомендуемый и самый лёгкий вариант).
- Перенести (transfer) регистрацию домена на Vercel — это тоже возможно через панель Vercel, но обычно не нужно, если не хотите менять регистратора.
Что делать при оставлении у sweb (какие записи выставить):
- Для поддомена www: CNAME -> cname.vercel-dns.com
- Для «голого» домена (example.com): A -> 76.76.21.21 (Vercel рекомендует этот адрес) или, если регистратор поддерживает ALIAS/ANAME, использовать его на cname.vercel-dns.com.
- После добавления домена в проект Vercel автоматически выдаст SSL‑сертификат (Let's Encrypt) как только DNS распространится.
Если переносите регистрацию — инициируете transfer в Vercel и следуете инструкциям (Auth code, подтверждения и т.п.). И при любом варианте SSL будет управляться Vercel автоматически после привязки домена.
2) Админ‑панель и JSON‑файл с товарами
Ключевая проблема: на Vercel (и вообще на serverless/статических хостингах) файловая система деплоя неизменяема/эпхемерна — записывать и хранить изменения в JSON внутри проекта нельзя (после деплоя изменения исчезнут, и нет гарантии доступа для записи). Поэтому нужно одно из решений для постоянного хранения/редактирования данных.
Варианты (с кратким описанием, плюсы/минусы):
A) База данных / бекенд (рекомендуем для реальных админок)
- Использовать Supabase, Firebase (Firestore), MongoDB Atlas, PlanetScale/Postgres и т.п.
- Реализовать API (Next.js API routes или serverless functions) для CRUD операций; админка вызывает API, данные хранятся в БД.
- Frontend: можно SSR/getServerSideProps или SSG + ISR (revalidate) / SWR для актуализации.
- Плюсы: надёжно, масштабируемо, быстрый отклик, встроенная аутентификация (Supabase/Firebase).
- Минусы: нужна база + немного кода.
B) Headless CMS
- Sanity, Strapi (хостится отдельно), Contentful, TinaCMS (git‑based).
- Админка из коробки, управление контентом, версии, медиа и т.д.
- Плюсы: удобство, автогенерация API.
- Минусы: внешняя зависимость, возможно плата.
C) Хранение в Git (если нужен именно JSON в репозитории)
- Админка делает commit/пуш в репозиторий (через GitHub/GitLab API) — обновляет JSON файл в репо.
- Vercel автоматически деплоит после пуша, сайт обновится.
- Плюсы: простая «файловая» модель, контроль версий.
- Минусы: задержка до деплоя (пока сборка пройдёт), нужно безопасно хранить токен в переменных окружения, сложнее с конкурентными правками.
D) Прямое файловое хранилище (если хотите именно файл и не хотите БД)
- Хранить JSON в объектном хранилище вроде S3 / DigitalOcean Spaces / Supabase Storage.
- Админка записывает в S3, фронт загружает файл по URL или через прокси API.
- Плюсы: просто, дешево.
- Минусы: нужно управлять версиями/блокировкой, нет удобных запросов как в БД.
Практическая рекомендация для начинающего:
- Если проект небольшой и хотите минимум настройки — Supabase (Postgres + auth) — быстрый старт: таблица products, API/Direct client, NextAuth или встроенная auth у Supabase.
- Если хотите, чтобы данные хранились в репо — используйте GitHub API и автоматический деплой Vercel (подходит для контента, который не меняется каждую секунду).
- Никогда не рассчитывайте на запись в JSON внутри приложения, размещённого на Vercel — это не будет работать надёжно.
Как реализовать в Next.js (примерный план)
- Создать API route /api/products (GET/POST/PUT/DELETE) — в реализации обращаться к базе/Supabase/S3/GitHub API.
- Админка (страница /admin) — форма для редактирования товаров; отправляет запросы на API.
- Защита админки: NextAuth (OAuth) или простая авторизация по токену/паролю; храните секреты в env vars на Vercel.
- Фронтенд карточек: получить данные через getStaticProps + revalidate (ISR) или через client fetch/SWR от API (в зависимости от требуемой свежести).
- Если вы используете Git‑пушы, лучше SSG + Vercel redeploy либо ISR с rebuild webhook.
- Если вы обновляете БД — SSR/getServerSideProps или SSG+ISR с revalidate небольшого времени.
Если хотите, могу:
- Привести пример структуры таблицы products в Supabase и пример API route для обновления,
- Показать пример кода admin POST -> GitHub API для обновления JSON и вызвать redeploy Vercel webhook,
- Помочь настроить DNS в sweb шаг за шагом (какие поля менять в панели sweb).
Скажите, какой вариант хранения/инфраструктуры вам ближе (Supabase/Firebase/Git‑based/S3), и я подготовлю конкретные шаги/пример кода.