Roboweb/Блог
    Все статьи
    Разработчикам16 сентября 20267 мин чтения

    Что внутри экспорта: разбор проекта на Next.js + Prisma

    Разбор выгруженного проекта на Next.js + Prisma: какие файлы внутри, где серверный код и схема базы, как подключить PostgreSQL и запустить проект локально.

    Что внутри экспорта: разбор проекта на Next.js + Prisma

    Экспорт из Roboweb — это фуллстек-проект на Next.js, Prisma и PostgreSQL, который можно запустить у себя и дорабатывать руками. Но у любого сгенерированного каркаса есть своя логика и свои ограничения, и их лучше узнать до первого коммита. Разберём, что лежит в архиве, где искать интерфейс, серверный код и схему данных, как подключить базу, запустить проект локально и с каких доработок начать.

    Что выгружается: фронтенд, бэкенд, схема базы и аккаунты

    Экспорт кода недоступен на бесплатном тарифе и входит в Премиум. Он детерминированный: при выгрузке ИИ не участвует, проект собирается из того, что уже есть в редакторе. Экспорт списывает энергию. Результат — ZIP-архив, который можно залить в любой Git-репозиторий: GitFlic, GitHub, GitLab или внутренний сервер компании. Для GitHub есть выгрузка прямо из кабинета: в подключённом аккаунте GitHub создаётся новый публичный репозиторий с кодом. Публикация в GitHub Pages — отдельная функция: это статический хостинг, API-маршруты Next.js и Prisma он не запускает.

    Стек:

    • Next.js 15 с App Router и React 19;
    • Prisma 6 и PostgreSQL;
    • bcryptjs для хеширования паролей;
    • TypeScript 5.

    Что работает сразу после запуска:

    • формы сохраняют заявки в PostgreSQL через Prisma;
    • каталоги читаются с сервера;
    • аккаунты посетителей: регистрация и вход, пароли в bcrypt, сессия в httpOnly-cookie, ограничение частоты запросов;
    • личный кабинет показывает только записи вошедшего пользователя;
    • корзина хранится в браузере, а сумма заказа при оформлении считается на сервере по ценам каталога;
    • серверные функции проекта перенесены в API-маршруты.

    Как ориентироваться в проекте Next.js: маршруты, интерфейс, серверный код

    Файл или папкаЧто внутри
    package.jsonЗависимости и скрипты dev, build, start, db:push
    prisma/schema.prismaМодели данных проекта
    lib/prisma.tsКлиент Prisma
    lib/session.ts, lib/auth.tsСессии и авторизация
    lib/ratelimit.tsОграничение частоты запросов
    app/api/auth/…Регистрация, вход, выход, текущий пользователь
    app/api/data/[table]/route.tsЧтение и запись данных с правами по таблицам
    app/api/fn/…/route.tsСерверные функции, включая оформление заказа
    app/_site.ts, app/page.tsxРазметка интерфейса и её вывод
    public/rw-export.jsПоведение форм, каталогов, кабинета и корзины
    .env.example, README.mdПеременные окружения, запуск и ограничения

    Главное, что нужно знать об интерфейсе: он переносится один в один как HTML-разметка. Файл app/_site.ts хранит разметку, app/page.tsx выводит её, а public/rw-export.js оживляет формы, каталоги, аккаунты, личный кабинет, корзину и оформление заказа. Это не набор React-компонентов по экранам. Если команде удобнее компонентный подход, разметку раскладывают на компоненты сами — постепенно, по одному блоку, проверяя сценарии после каждого шага.

    Серверная часть — обработчики маршрутов App Router в папке app/api. Маршрут app/api/data/[table]/route.ts отвечает за чтение и запись с правами по таблицам: с него стоит начинать проверку того, кто что может читать и менять. Маршрут app/api/fn/checkout/route.ts появляется, если в проекте есть оформление заказа. Остальное — корневой app/layout.tsx, стили в app/globals.css, конфигурация в next.config.mjs и tsconfig.json.

    Prisma-схема как карта данных продукта

    Файл prisma/schema.prisma стоит прочитать целиком и первым. Модели в нём соответствуют данным продукта: заявкам из форм, позициям каталога, аккаунтам, заказам. Конкретный набор зависит от того, что было собрано в проекте.

    Ограничения схемы, честно описанные в README:

    • поля данных в моделях имеют тип String? (типизированы только служебные id, createdAt и модели аккаунтов) — числа, даты, цены и связи между моделями уточняет разработчик;
    • схема разворачивается через prisma db push, миграций в комплекте нет;
    • один экспорт рассчитан на одну базу данных.

    Что из этого следует. На этапе разработки db push удобен. Перед продом разумно перейти на миграции, а типы полей ужесточать осознанно: превращение строки в число или дату требует проверки уже накопленных данных. Как сделать это без потерь, разобрано в статье о Prisma-миграциях в выгруженном проекте.

    Условный пример: в модели заказа сумма хранится строкой. Для отчётов и сортировки её логично сделать числовым типом — но сначала убедитесь, что во всех существующих записях там действительно число.

    Переменные окружения и подключение к PostgreSQL

    В архиве есть .env.example с переменной DATABASE_URL — строкой подключения к PostgreSQL. Скопируйте файл в .env и подставьте свои значения: пользователя, пароль, хост, порт и имя базы. Формат строки стандартный для Prisma: postgresql://пользователь:пароль@хост:5432/имя-базы.

    Что проверить:

    • .env не попадает в репозиторий — .gitignore в архиве есть, но убедитесь сами до первого push;
    • у локальной разработки и продакшена разные базы и разные строки подключения;
    • пользователь базы в продакшене не имеет больше прав, чем нужно приложению.

    Безопасность из коробки — это каркас, а не решение промышленного уровня. README прямо перечисляет, что нужно до выхода в прод: HTTPS, доверенный reverse-proxy перед приложением и периодическая чистка просроченных сессий. Где разместить проект с учётом этих требований, разобрано в статье о размещении проекта на Next.js и PostgreSQL.

    Локальный запуск: типовая последовательность

    Точные команды и оговорки сверяйте с README.md и package.json своего архива. Типовой порядок такой:

    1. Распакуйте архив или склонируйте репозиторий и прочитайте README.md.
    2. Установите актуальную LTS-версию Node.js, если её ещё нет.
    3. Поднимите PostgreSQL — локально или в контейнере — и создайте пустую базу.
    4. Скопируйте .env.example в .env и пропишите DATABASE_URL.
    5. Установите зависимости: npm install.
    6. Создайте таблицы по схеме: npm run db:push.
    7. Запустите режим разработки: npm run dev — по умолчанию Next.js открывается на localhost:3000.
    8. Пройдите сценарии руками: отправьте форму, зарегистрируйтесь, войдите, откройте кабинет, оформите заказ. База после db:push пустая: чтобы оформление заказа сработало, сначала наполните таблицу каталога товарами, чьи id совпадают с data-id кнопок добавления в корзину, — это условие указано в README.
    9. Проверьте продакшен-сборку: npm run build, затем npm run start. Скрипт build сначала выполняет prisma generate, потом next build.

    С чего начать доработку: первые безопасные изменения

    Порядок, который снижает риск сломать то, что уже работает:

    1. Зафиксируйте исходное состояние. Первый коммит — архив как есть, без правок. К нему всегда можно вернуться и сравнить.
    2. Прочитайте README и схему. Ограничения каркаса лучше знать до того, как вы на них наткнётесь.
    3. Проведите ревью. Права в app/api/data, сессии, ограничение частоты, обработка ошибок — пошаговый чек-лист есть в статье о код-ревью сгенерированного кода.
    4. Уточните типы и перейдите на миграции. По одной модели за раз, с проверкой данных.
    5. Ужесточайте TypeScript постепенно. В tsconfig.json стоит strict: false — это осознанное решение: строгий режим разработчик включает сам, по мере того как уточняет типы.
    6. Разложите разметку на компоненты там, где это окупается. Начните с блоков, которые будете менять чаще всего.
    7. Добавьте то, чего в каркасе нет: HTTPS и reverse-proxy на площадке, регулярную чистку просроченных сессий.

    Экспорт — функционально полный фуллстек-каркас, но не релиз, готовый к проду. Ревью, типы, миграции и настройка окружения — работа разработчика, и её стоит заложить в план.

    Чем такой экспорт отличается от того, что можно забрать из конструкторов шаблонов, разобрано в сравнении ИИ-сборки и конструкторов. И последнее: договоритесь в команде, где живёт основная версия продукта. Если часть доработок удобнее продолжать в редакторе — как формулировать такие задачи, описано в статье о правках словами, — заранее решите, как новые изменения будут попадать в репозиторий: свежий архив собирается из состояния редактора и ручных правок разработчика не содержит. Иначе придётся вести две параллельные версии.

    Понравилась статья?

    Поделитесь с коллегами и друзьями

    Telegram

    Готовы запустить свой продукт?

    Опишите идею — ИИ соберёт фуллстек с бэкендом, а код останется вашим активом

    Создать проект бесплатно