# applications_crm CRM-панель для обработки обращений граждан: авторизация сотрудников, список заявок, фильтрация, статусы и приоритеты, история изменений, комментарии, аналитика и CSV import/export. Проект размещён в организации [IT-One](https://git.it-one.pro/IT-One) в разделе клиентских проектов. ## Стек - Next.js 16 + React 19 + TypeScript - Prisma 6 + SQLite - Tailwind CSS 4 и Radix UI - Bun или Node.js 22+ ## Локальный запуск ```bash 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: ```bash 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`.