# evo-ai-frontend-community TypeScript / React 19 / Vite · porta 5173 (dev), servido via Nginx em produção Dashboard web — chat, gerenciamento de contatos e agentes. ## Estrutura por feature + camadas ``` src/ ├── components/base/ # componentes base (Button, Card, Input) ├── components/[domain]/ # componentes por feature ├── pages/ # páginas ├── services/core/ # cliente HTTP base ├── services/[domain]/ # APIs por feature ├── contexts/ # React Context (Auth, Org, Theme...) ├── hooks/ # hooks customizados (useDarkMode, useLanguage) ├── types/ # interfaces TypeScript ├── utils/, constants/ ├── store/ # Zustand (state management leve) ├── i18n/ # i18next (EN, PT-BR) └── styles/ # config Tailwind e2e/ # testes Playwright ``` ## Padrões - Formulários controlados com React Hook Form + Zod. - Design system compartilhado: `@evoapi/design-system`. - Estado global via Context + hooks. - CSS utility-first (Tailwind), sem CSS custom paralelo. - `"strict": true` no `tsconfig.json`. ## Build & testes ```bash cd evo-ai-frontend-community pnpm install pnpm run dev # http://localhost:5173 pnpm run build # produção → dist/ pnpm run lint pnpm run test # Vitest pnpm run e2e # Playwright ``` ## Produção A imagem é agnóstica de ambiente — builda com placeholders `VITE_*_PLACEHOLDER` fixos, e um `docker-entrypoint.sh` substitui pelos valores reais via `sed` no boot do container, evitando rebuild por domínio.