Skip to main content

Visão Geral

O monorepo (easygoal-monorepo) contém packages npm públicos. Qualquer adição deve manter a qualidade e consistência com os packages existentes.
O monorepo é público. Nunca commite secrets, migrations SQL ou arquivos de contexto de produto aqui.

Adicionando um componente ao @easygoal/ui

1. Crie o componente

# Estrutura esperada
packages/ui/src/components/MeuComponente/
├── MeuComponente.tsx
└── index.ts
O componente deve usar CVA para variantes e Tailwind para estilos:
// packages/ui/src/components/MeuComponente/MeuComponente.tsx
import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "../../utils";

const meuComponenteVariants = cva("base-classes", {
  variants: {
    variant: {
      default: "...",
      outline: "...",
    },
    size: {
      sm: "...",
      md: "...",
    },
  },
  defaultVariants: {
    variant: "default",
    size: "md",
  },
});

export interface MeuComponenteProps
  extends React.HTMLAttributes<HTMLDivElement>,
    VariantProps<typeof meuComponenteVariants> {}

export function MeuComponente({ className, variant, size, ...props }: MeuComponenteProps) {
  return (
    <div className={cn(meuComponenteVariants({ variant, size }), className)} {...props} />
  );
}

2. Exporte em index.ts

// packages/ui/src/index.ts
export { MeuComponente } from "./components/MeuComponente";
export type { MeuComponenteProps } from "./components/MeuComponente";

3. Faça o build

O dist/ deve estar atualizado antes de commitar. Builds desatualizados quebram quem instala o package.
cd packages/ui
npm run build
Verifique que dist/ foi gerado/atualizado antes de continuar.

4. Commit

# A partir da raiz do monorepo
git add packages/ui/src/components/MeuComponente
git add packages/ui/src/index.ts
git add packages/ui/dist
git commit -m "feat(ui): adicionar componente MeuComponente"

Regras de código

RegraDetalhe
TypeScript estritostrict: true no tsconfig — sem any implícito
CVA para variantesUse class-variance-authority para variantes de estilo
Tailwind para estilosSem CSS modules ou styled-components
Exportar tiposSempre exporte as interfaces/types junto com os componentes
Sem secretsO monorepo é público — nunca commite chaves, tokens ou .env
Build antes de commitarO dist/ deve estar atualizado no commit

Adicionando um novo package

Para criar um package do zero (ex: @easygoal/types):
# 1. Crie a estrutura
mkdir -p packages/meu-package/src

# 2. Crie package.json, tsconfig.json e tsup.config.ts
# Siga o padrão dos packages existentes (@easygoal/ui ou @easygoal/auth)
O pnpm workspace detecta automaticamente novos diretórios em packages/.