Sistema de gerenciamento de eventos - Interface Web
- Node.js (versão 22 ou superior)
- npm ou yarn
- Git
git clone <url-do-repositório>
cd eventmaster-frontendnpm installCrie um arquivo .env na raiz do projeto (se necessário):
VITE_API_URL=http://localhost:3000npm run devnpm installSempre execute npm install após fazer pull de mudanças para garantir que todas as dependências estejam atualizadas.
git checkout -b tipo/nome-da-branchTipos de branch:
feat/- Nova funcionalidadefix/- Correção de bugchore/- Tarefas de manutenção/configuraçãorefactor/- Refatoração de códigodocs/- Documentação
src/
├── assets/ # Imagens, ícones, fontes
├── components/ # Componentes reutilizáveis
├── constants/ # Constantes do projeto (rotas, API, etc)
├── css/ # Estilos globais e variáveis CSS
├── layouts/ # Layouts de página
├── pages/ # Páginas da aplicação
├── routes/ # Configuração de rotas
├── server/ # Configuração de API
├── services/ # Serviços e integrações
├── types/ # Definições de tipos TypeScript
└── utils/ # Funções utilitárias
SEMPRE utilize as constantes definidas em src/constants/:
✅ Correto:
import { PageRoutesName } from '@/constants/PageRoutesName';
import { apiRoutesName } from '@/constants/apiRoutesName';
navigate(PageRoutesName.HOME);
api.get(apiRoutesName.events);❌ Incorreto:
navigate('/home'); // NÃO use strings hardcoded
api.get('/api/events'); // NÃO use URLs hardcoded- Use o sistema de rotas configurado em
src/routes/ - Todas as rotas de páginas devem estar em
PageRoutesName.ts - Todas as rotas de API devem estar em
apiRoutesName.ts
- Um componente por arquivo
- Use
index.tsxcomo arquivo principal do componente - CSS Modules para estilos:
styles.module.css - Estrutura de pasta:
ComponentName/ ├── index.tsx └── styles.module.css
- SEMPRE tipifique suas variáveis, funções e props
- Defina tipos em
src/types/quando reutilizáveis
type ButtonProps {
label: string;
onClick: () => void;
disabled?: boolean;
}
export function Button ({ label, onClick, disabled = false }: ButtonProps) => {
// ...
}- Use importações absolutas quando possível
- Organize as importações:
- Bibliotecas externas
- Componentes internos
- Constantes, tipos e utils
- Estilos
import { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { Header } from '@/components/Header';
import { PageRoutesName } from '@/constants/PageRoutesName';
import type { User } from '@/types/User';
import styles from './styles.module.css';- Use CSS Modules para componentes
- Variáveis CSS globais em
src/css/variables.css - Nomes de classes em camelCase no CSS Module
/* styles.module.css */
.containerMain {
padding: var(--spacing-md);
}
.buttonPrimary {
background: var(--color-primary);
}npm run dev # Inicia servidor de desenvolvimento
npm run build # Build para produção
npm run preview # Preview do build de produção
npm run lint # Executa o linterO projeto já está configurado com extensões recomendadas. Ao abrir no VS Code, aceite instalar as extensões sugeridas:
- ESLint
- Prettier
- CSS Modules
- CSS Variables
- Trailing Spaces
O projeto está configurado para formatar automaticamente ao salvar:
- Prettier para formatação geral
- ESLint para correções automáticas
Configurações em .vscode/settings.json
rm -rf node_modules package-lock.json
npm installrm -rf node_modules/.vite
npm run devAltere a porta no vite.config.ts ou pare o processo que está usando a porta 3000.