Самохостимая, 152-ФЗ-совместимая альтернатива Google Forms со встроенной таблицей ответов в стиле Google Sheets.
Сделано, чтобы заменить связку Google Forms + Google Sheets для тех, кому нужно хранить персональные данные на территории России.
- Конструктор форм — 8 типов полей (текст, email, телефон, число, дата, длинный ответ, выпадающий список, чекбокс). Drag-and-drop сортировка, условия показа для гибких сценариев.
- Таблица ответов — на TanStack Table. Сортировка, фильтры «Новые / Обработанные», встроенные комментарии к ответам.
- Экспорт CSV — UTF-8 c BOM и разделителем
;— открывается в русском Excel без танцев с бубном. - 152-ФЗ — согласие на обработку данных на форме, шаблон политики, сохранение IP отправителя, хостинг в РФ.
- Настройки формы — включение/выключение приёма ответов, кастомные сообщения при закрытии и после отправки.
- Дубликат формы одной кнопкой.
- Next.js 16 (App Router, Server Actions)
- TypeScript
- Tailwind CSS 4
- PostgreSQL 17 + Prisma 6
- Auth.js v5 (magic-link)
- TanStack Table v8
- @dnd-kit
- lucide-react + sonner
Требования: Node.js 20+, pnpm, PostgreSQL 17+ на localhost:5432.
# 1. Зависимости
pnpm install
# 2. Env
cp .env.example .env
# Заполни DATABASE_URL и AUTH_SECRET (сгенерь: pnpm dlx auth secret)
# 3. Создать БД
psql -U postgres -c "CREATE DATABASE newforms_dev;"
# 4. Миграции
pnpm prisma migrate dev
# 5. Дев-сервер
pnpm devОткроется http://localhost:3000. Магическая ссылка при входе выводится
в терминал (dev-режим).
Прод-режим бросит ошибку при попытке отправить письмо, если не заданы
EMAIL_SERVER_* переменные. Заполните их в .env:
EMAIL_SERVER_HOST=smtp.yandex.ru
EMAIL_SERVER_PORT=465
EMAIL_SERVER_USER=noreply@yourdomain.ru
EMAIL_SERVER_PASSWORD=...
EMAIL_FROM=noreply@yourdomain.ru
См. CLAUDE.md.
MIT