Skip to content

Stack & convenções

Backend

  • Python 3.12 · FastAPI · SQLAlchemy 2 (async, asyncpg) · Alembic · PostgreSQL 16
  • Pydantic v2 com alias_generator=to_camel → o wire é camelCase (casa 1:1 com o front).
  • Auth: Argon2 (senha) + JWT access/refresh. RBAC: papéis admin · analista · gerente_loja · viewer.
  • Lint ruff, testes pytest (Postgres efêmero).

Frontend

  • TanStack Start (SSR) · React 19 · Tailwind v4 (tokens OKLCH) · shadcn/ui — base de tudo.
  • Aceternity UI / Magic UI — pontual (login, hero/dashboard, background sutil), não em toda tela.
  • React Bits — efeitos de texto e backgrounds animados.
  • Motion — transições da aplicação.
  • Lucide — ícones (vem com shadcn). React Three Fiber — quando precisar 3D real.
  • Cliente HTTP único (core/services/api) com Bearer token; tipos em core/services/types.

Identidade visual (oficial Aby's)

  • Laranja #FF8B00 (oklch(0.749 0.18 58)) — único accent + preto/branco.
  • Texto sobre laranja usa tom escuro (--primary-strong) para passar contraste WCAG AA.
  • Fonte Kanit (logo/corpo) + Anton (display). Logo SVG oficial em abys-logo.tsx.

Convenções

  • Contrato camelCase ponta a ponta (back serializa camelCase, front consome direto).
  • Gitflow: nunca commit direto em branch protegida; sempre branch → MR → merge. Deploy via branch dev.
  • Build no Docker (não no script do job) por causa do limite de RAM do runner.