Site oficial do Campeonato Paulista de MamoBall com página de inscrição moderna e responsiva.
├── index.html # Página principal
├── inscricao.html # Página de inscrição
├── styles.css # Estilos da página principal
├── inscricao.css # Estilos da página de inscrição
├── script.js # JavaScript da página principal
├── app.js # JavaScript da página de inscrição
├── cpm.png # Logo do CPM
└── README.md # Este arquivo
- Clone ou baixe os arquivos para sua máquina
- Abra o arquivo
index.htmlem seu navegador - Navegue para a página de inscrição clicando em "Inscreva seu Time"
- Teste a funcionalidade preenchendo o formulário
- Abra
inscricao.htmlno navegador - Faça upload de uma imagem (PNG, JPG ou WebP, máximo 5MB)
- Preencha os dados do clube:
- Nome do Clube (obrigatório)
- Dono (obrigatório)
- Capitão (obrigatório)
- Técnico (opcional)
- Adicione 6 jogadores com:
- ID (obrigatório)
- Nick (obrigatório)
- Pelo menos uma posição marcada (GL, VL ou PV)
- Clique em "Enviar inscrição"
- Verifique se o modal de sucesso aparece
O frontend espera os seguintes endpoints:
GET /api/seasons/current
Respostas esperadas:
200com JSON{ _id, name, startAt, endAt }- Inscrições abertas404ou200comnull- Inscrições fechadas403com{ message, nextOpen }- Inscrições fechadas com data de próxima abertura
POST /api/teams
Content-Type: multipart/form-data
Campos enviados:
logo(file) - Logo do clubename(string) - Nome do clubeowner(string) - Dono do clubecaptain(string) - Capitão do clubecoach(string, opcional) - Técnico do clubeplayers(string JSON) - Array de jogadoresseasonId(string, opcional) - ID da temporada atual
Exemplo do campo players:
[
{
"id": "12345",
"nick": "Player1",
"positions": ["GL", "PV"]
},
{
"id": "67890",
"nick": "Player2",
"positions": ["VL"]
}
]Respostas esperadas:
201- Inscrição enviada com sucesso403- Inscrições fechadas4xx/5xx- Erro com mensagem
No arquivo app.js, ajuste as seguintes configurações:
// URL base da API
const API_BASE = '/api'; // Mude para sua URL
// Tamanho máximo do arquivo (5MB)
const MAX_FILE_SIZE = 5 * 1024 * 1024;
// Tipos de arquivo aceitos
const ACCEPTED_TYPES = ['image/png', 'image/jpeg', 'image/webp'];- Design moderno e minimalista
- Layout responsivo (mobile-first)
- Animações suaves
- Seção de estatísticas
- Cards flutuantes animados
- Seção de benefícios
- Interface limpa e intuitiva
- Upload de arquivo com drag & drop
- Preview da imagem
- Formulário em duas colunas (desktop)
- Gerenciamento dinâmico de jogadores
- Validação em tempo real
- Modal de sucesso elegante
- Labels associados aos inputs
- Mensagens de erro claras
- Navegação por teclado
- Contraste adequado
- Estados de foco visíveis
O site é totalmente responsivo e funciona bem em:
- Desktop (1200px+)
- Tablet (768px - 1024px)
- Mobile (320px - 768px)
- HTML5 - Estrutura semântica
- CSS3 - Estilos modernos com CSS Grid e Flexbox
- JavaScript ES6+ - Funcionalidades interativas
- Font Inter - Tipografia moderna
- SVG Icons - Ícones vetoriais
- Upload da logo com preview e validação
- Mínimo 6 e máximo 10 jogadores
- Validação de campos obrigatórios
- Verificação de período de inscrições
- Envio via multipart/form-data
- Modal de sucesso
- Layout responsivo e acessível
- Documentação completa
- Drag & drop para upload de arquivo
- Animações suaves
- Estados de loading
- Validação em tempo real
- Interface moderna e intuitiva
- Mensagens de erro claras
- Navegação por teclado
- Validação client-side completa
- Verificação de tipos de arquivo
- Limite de tamanho de arquivo
- Sanitização de dados
- Proteção contra XSS
Para dúvidas ou problemas:
- Email: contato@cpm.com.br
- WhatsApp: Comunidade oficial
CPM - Campeonato Paulista de MamoBall
O maior campeonato de MamoBall WhatsApp