Initial commit: thbd-portal, duplicated from elmi-portal
Rebranded for Thunderbird Portal (THBD): numbering prefix EL->TH, all "ELMI"/"ЭЛМИ" UI strings genericized, ELMI's real contract templates and company legal/bank details removed (not applicable to this company), fresh VAPID keypair and encryption key, fresh single-migration schema history. Same architecture as elmi-portal: Web Push notifications, unread-chat app badge, cookie-session auth. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gh2UXUQUVBWroWEnn1FLFG
This commit is contained in:
commit
579528edf7
197 files changed
+25022
No files matched your search
@@ -0,0 +1,44 @@
|
||||
# Thunderbird Portal (THBD)
|
||||
|
||||
Единый портал THBD: запросы → ставки подрядчиков → заявки → документы →
|
||||
слежение → финансы → отчёты. Дубликат `elmi-portal`, адаптированный под
|
||||
другую компанию — та же архитектура и функциональность.
|
||||
|
||||
Стек: Next.js (App Router) + TypeScript, Drizzle ORM + better-sqlite3 (WAL),
|
||||
Docker/docker-compose — тот же проверенный стек, что и в соседнем `top-tickets`.
|
||||
|
||||
## Разработка
|
||||
|
||||
```bash
|
||||
cp .env.example .env # заполнить ADMIN_BOOTSTRAP_PASSWORD
|
||||
npm install
|
||||
npm run db:migrate
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Прод (Docker)
|
||||
|
||||
```bash
|
||||
cp .env.example .env # заполнить ADMIN_BOOTSTRAP_PASSWORD
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Приложение слушает порт 8088 (см. `docker-compose.yml`, `PORT`/`DATA_DIR`).
|
||||
|
||||
## Роли
|
||||
|
||||
- **admin** — полный доступ, справочники, пользователи, шаблоны документов.
|
||||
- **manager** — свои запросы/заявки/слежение.
|
||||
- **accountant** — заявки (просмотр), финансы (к оплате/к получению), отчёты.
|
||||
- **client** — только страница слежения по токену (`/t/[token]`), без входа.
|
||||
|
||||
## Известные ограничения MVP (см. план — Фаза 2/3)
|
||||
|
||||
- Шаблоны документов (`templates-seed/`) — пусто на старте (в отличие от
|
||||
elmi-portal, откуда это скопировано). Загрузить .docx компании можно
|
||||
в Настройки → Шаблоны.
|
||||
- Нет email→запрос авто-парсинга (Claude API) и интеграции со СБИС/ЭДО.
|
||||
- Известный интермиттентный флейк при сборке образа: `SQLITE_BUSY` во время
|
||||
параллельного сбора данных страниц Turbopack'ом — при сбое просто повторить
|
||||
`docker compose build` (1–3 раза), как и в `top-tickets`.
|
||||
Reference in new issue
Block a user