Skip to content

Regat1ve/newforms

Repository files navigation

newforms

Самохостимая, 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages