# Auth Portal — Руководство для ИИ ## Стек - Monorepo: `apps/web` + `packages/ui` (`@authportal/ui`) - Vite + React + TanStack + shadcn **base-nova** + ReUI Frame - App Switcher: CFDM / vps / bgp / fw / **dns** (Technitium) - Auth: JWT fragment SSO для своих SPA **и** OIDC IdP для внешних RP (Technitium) ## OIDC - Endpoints: `/.well-known/openid-configuration`, `/.well-known/jwks.json`, `/oauth/authorize`, `/oauth/token`, `/oauth/userinfo` - Admin UI: `/admin/oidc` - Docs: [`docs/integrate-technitium.md`](docs/integrate-technitium.md) ## UI - Hierarchy: **ReUI PRO > shadcn** - Surface: **frame** - Contract: [`docs/ui-design-contract.md`](docs/ui-design-contract.md) - Docs: [Introduction](https://reui.io/docs) · [llms.txt](https://reui.io/llms.txt) · [MCP](https://reui.io/docs/mcp) · [Agent Skills](https://reui.io/docs/agent-skills) - Skill: `.claude/skills/reui` (`668fb463eb`, 20 free components) - Rules: `.cursor/rules/reui-mcp.mdc`, `frontend-shadcn.mdc`, `frontend-ui-patterns.mdc`, `shadcn-mcp.mdc`, `shadcn-ui-production.mdc` - Primary MCP: `user-reui`; primitives: `plugin-shadcn-shadcn` - Chrome: header AppsMenu → SystemMonitorPopover; NavUser in sidebar footer (theme segmented); no ModeToggle in header - Kit: `KpiStatGrid`, `QuickActionGrid` (SoT markup = EvoBGP + IconTile); lists = `AdminUsersGrid` / PageShell + Frame + DataGrid ## License `REUI_LICENSE_KEY` in `apps/web/.env.local` + Bearer in `apps/web/components.json`. ## Команды ```bash pnpm install pnpm --filter web dev pnpm --filter web build pnpm --filter @authportal/api test ``` ## CI / Docker Gitea: `.gitea/workflows/{ci,cd,quality}.yaml`. Образы: `deploy/docker` (`node:22-alpine`, bake + registry cache). Теги `authportal` + drop-in `auth-portal`. Не корневой `Dockerfile`. Подробнее: [`docs/releasing.md`](docs/releasing.md), [`.gitea/README.md`](.gitea/README.md).