55 lines
2.1 KiB
Markdown
55 lines
2.1 KiB
Markdown
# 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`.
|