Arquitetura
apps/app
Dashboard SPA com Vite 7 + React 19
O apps/app é a aplicação principal — um SPA (Single Page Application) que roda por padrão na porta 5173.
Se a porta 5173 já estiver ocupada na sua máquina, rode bunx vite --port 5200 dentro de apps/app. A porta 5200 é a convenção local de fallback.
Stack
- Vite 7 — Build tool com HMR
- React 19 — UI library
- TypeScript 5.9 — strict mode com
noUncheckedIndexedAccesshabilitado - Tailwind CSS v4 — Styling via
@tailwindcss/viteplugin (semtailwind.config.ts) - shadcn/ui — Componentes (style
radix-nova) - React Router — Client-side routing
- TanStack Query — Server state (queries e mutations)
- Zustand — Client state (auth, workspace, UI)
- Lucide React — Ícones
Path alias
@/ mapeia para ./src/ (configurado em vite.config.ts e tsconfig.json).
import { Button } from "@/components/ui/button";
import { useDeals } from "@/hooks/use-deals";CSS
Tailwind v4 usa @import "tailwindcss" em src/index.css. Theme tokens são definidos via CSS custom properties no color space oklch. Não há tailwind.config.ts nem postcss.config.js.
shadcn/ui
Style radix-nova. Para adicionar novos componentes:
cd apps/app && bunx shadcn@latest add <component>Os componentes ficam em src/components/ui/ e são código próprio — podem ser editados diretamente.
Merge condicional de classes com cn() de @/lib/utils:
import { cn } from "@/lib/utils";
<div className={cn("base-class", isActive && "active-class")} />