2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00
2026-08-21 11:33:10 +00:00

applications_crm

CRM-панель для обработки обращений граждан: авторизация сотрудников, список заявок, фильтрация, статусы и приоритеты, история изменений, комментарии, аналитика и CSV import/export.

Проект размещён в организации IT-One в разделе клиентских проектов.

Стек

  • Next.js 16 + React 19 + TypeScript
  • Prisma 6 + SQLite
  • Tailwind CSS 4 и Radix UI
  • Bun или Node.js 22+

Локальный запуск

cp .env.example .env
# задайте DATABASE_URL, ADMIN_PASSWORD и AUTH_SECRET
npm install
npx prisma generate
npx prisma db push
npm run dev

Панель будет доступна по адресу http://localhost:3000/crm.

Переменные окружения

  • DATABASE_URL — путь к SQLite-файлу;
  • ADMIN_PASSWORD — пароль сотрудника CRM;
  • AUTH_SECRET — случайный секрет подписи сессий;
  • PUBLIC_LEADS_SECRET — внутренний секрет server-to-server ingest endpoint.

Не добавляйте реальные .env-файлы, SQLite-базы, production-артефакты или токены в Git.

Production

Production-сборка использует standalone output:

npm run build
NODE_ENV=production PORT=3100 node .next/standalone/server.js

При публикации под /crm используется basePath из next.config.ts, а reverse proxy должен направлять /crm и /crm/* на отдельный upstream.

API

  • /crm/api/auth/* — авторизация сотрудников;
  • /crm/api/leads/* — защищённые операции с заявками;
  • /crm/api/public/leads — закрытый внутренний endpoint для server-to-server интеграции формы;
  • /crm/api/health — health-check.

Публичный endpoint не принимает заявки без PUBLIC_LEADS_SECRET.

S
Description
CRM for processing citizen applications and integrating website forms.
Readme
222 KiB
Languages
TypeScript 96.6%
Shell 1.5%
CSS 1.3%
JavaScript 0.6%