Files
auth-portal/AGENTS.md

3.9 KiB

Auth Portal — Руководство для ИИ

Стек

  • Monorepo: apps/web + apps/api (@authportal/api, Fastify + SQLite/better-sqlite3) + packages/ui (@authportal/ui) + packages/db + packages/shared
  • 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

UI

  • Hierarchy: ReUI PRO > shadcn
  • Surface: frame
  • Contract: docs/ui-design-contract.md
  • Docs: Introduction · llms.txt · MCP · Agent Skills
  • Skill: .claude/skills/reui (68f0e6fa91, 27 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.

Команды

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, .gitea/README.md.

ReUI design rules (every UI edit, follow-ups included)

This project uses an existing design system: ReUI on shadcn/ui. Keep its look. Generic frontend advice (vary fonts or themes, gradients, page-load or staggered reveals, "2-3 intentional motions", Framer Motion) does not apply here, and other design skills lose where they disagree.

  1. Use installed components first (components/ui, components/reui): tables data-grid, filtering filters, boards kanban, modals Dialog or AlertDialog, toasts sonner. Never set height, radius, padding, shadow or motion on them; use size, variant, spacing.
  2. Color: semantic tokens. State: <Badge variant="success-light"> from @/components/reui/badge at default size, or Alert variants. Raw palette only for categorical identity, with its dark: pair.
  3. Spacing: gap-* on the parent: gap-1 to gap-2 in a row, gap-3 to gap-4 between groups, gap-6 to gap-8 between sections. Type: text-sm body, text-xs meta, nothing smaller; never resize FrameTitle or CardTitle.
  4. Motion: installed parts already animate; never retime them. Yours: hover transition-colors; reveal duration-200 ease-[cubic-bezier(0.22,1,0.36,1)]; transform and opacity only; never transition-all, bounce, or a stagger on table rows or lists of 20+; at most 1 entrance per view; MotionConfig reducedMotion="user" plus motion-reduce:.
  5. Every data region: empty state with an action, Skeleton loading, inline error with Retry.
  6. Before UI code, write the plan from .agents/skills/reui/SKILL.md in your reply. Before you finish, run its self-check on the files you changed and fix every hit (2 rounds at most). Full rules: .agents/skills/reui/SKILL.md. If that folder is missing, call the reui MCP tool get_agent_skill.

Managed by the ReUI installer. Edits between the markers are replaced on the next run.