Верификатор документов Coopenomics v1

Монорепа доказательного верификатора документов: проверка целостности, криптоподписи (secp256k1/SHA-256) и исторической привязки ключа к аккаунту в блокчейне Coopenomics.

Структура (pnpm workspace)

Пакет Назначение
packages/shared (@verifier/shared) Контракт .sig v2.0 + чистые проверки C1–C5 (браузер + Node). Не публикуется.
apps/api (@verifier/api) Fastify + Kysely + Postgres. Demux-индексер permissions (native-delta из @coopenomics/parser2) + REST /v1/active-permission/*.
apps/spa (@verifier/spa) Vue 3 + Vite + Tailwind v4 + Reka UI. Загрузка PDF+.sig/ZIP, оркестрация C1–C8, вердикт.

Проверки

# Проверка Где
C1 Целостность (SHA-256(pdf) == doc_hash) shared, локально
C2 meta_hash (канонизация JCS) shared, локально
C3 Композитный хэш shared, локально
C4 Подпись secp256k1 shared, локально
C5 Наличие сертификата shared, локально
C6 Историческая привязка ключа к аккаунту api /v1/active-permission/check
C7 Самоподписанность (⚠ предупреждение) spa
C8 Доказательство в цепи (опц.) spa через публичный RPC

Разработка

pnpm install
docker compose up -d        # postgres:5433 + redis:6380
pnpm -r build
pnpm dev:api                # :3030
pnpm dev:spa                # :5173

Дизайн-язык SPA

Минималистичный пространственный дизайн на плоскостях, один ведущий цвет — бордо #9f1239 (бренд кооперативной экономики). Бордо только в chrome; вердикт — отдельная семантика ( зелёный / красный / ⚠ amber). Reka UI + Tailwind v4 + Radix Colors. Эталоны: Linear, Vercel, Raycast, Resend.

Деплой

Автономные пайплайны из одной репы: deploy-api.yml (docker image → ssh) и deploy-spa.yml (vite build → nginx static). Деплой одного приложения не триггерит другое.

S
Description
No description provided
Readme 460 KiB
Languages
TypeScript 77.2%
Vue 14.8%
CSS 3.5%
Shell 2.2%
Dockerfile 1.1%
Other 1.2%