Aparência
Contribuição
Ajude a melhorar o template SIGA Plus.
Início Rápido
- Faça um Fork do repositório
- Clone o seu fork localmente
- Instale as dependências:
pnpm install - Crie uma ramificação (branch) de funcionalidade
- Faça as suas alterações
- Testes em ambas as versões (Vite e Next.js)
- Submeta um pull request
Configuração de Desenvolvimento
bash
# Clone repository
git clone https://github.com/your-username/shadcn-dashboard-template.git
cd shadcn-dashboard-template
# Install dependencies for both versions
cd vite-version && pnpm install
cd ../nextjs-version && pnpm install
# Start development servers
pnpm dev # In each version directoryDiretrizes de Contribuição
Padrões de Código
- TypeScript para todo o código novo
- Formatação com ESLint/Prettier
- Convenções de nomenclatura consistentes
- Componentes do cliente (Client components) devem utilizar a diretiva
"use client"
Requisitos de Testes
- Testar alterações em ambas as versões (Vite e Next.js)
- Verificar o design responsivo em mobile/desktop
- Verificar a acessibilidade com leitores de ecrã
- Testar a compatibilidade com modo escuro/claro
Compatibilidade entre Duas Versões
Todas as alterações devem funcionar em ambas as frameworks:
- Vite: React Router DOM, renderização no lado do cliente
- Next.js: App Router, renderização no lado do servidor
- Componentes partilhados: Utilizar padrões agnósticos de framework
Áreas para Contribuição
Componentes
- Novos componentes shadcn/ui
- Melhorias nos componentes existentes
- Melhorias de acessibilidade
- Otimizações de desempenho
Funcionalidades
- Widgets de dashboard
- Personalizações de temas
- Variações de layout
- Melhorias em tabelas de dados
Documentação
- Exemplos de código
- Guias de implementação
- Boas práticas
- Tutoriais em vídeo
Correção de Bugs
- Compatibilidade entre navegadores
- Responsividade móvel
- Problemas de desempenho
- Bugs de acessibilidade
Processo de Pull Request
- Descreva as suas alterações de forma clara
- Inclua capturas de ecrã (screenshots) para alterações na UI
- Referencie quaisquer issues relacionadas
- Testes exaustivamente em ambas as versões
- Atualize a documentação se necessário
Comunidade
- GitHub Issues - Relatórios de bugs e pedidos de funcionalidades
- Discussions - Perguntas e ajuda da comunidade
- Discord - Chat e suporte em tempo real
Obrigado por contribuir! Cada melhoria ajuda a comunidade.
Primeiros Passos
Ambiente de Desenvolvimento
Pré-requisitos
- Node.js 18+ instalado
- Gestor de pacotes pnpm (recomendado)
- Git para controlo de versões
- Editor de código (VS Code recomendado)
Fork e Clone
bash
# Fork the repository on GitHub
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/shadcn-dashboard-landing-template.git
cd shadcn-dashboard-landing-template
# Add upstream remote
git remote add upstream https://github.com/onsoft/shadcn-dashboard-landing-template.gitInstalar Dependências
bash
# Install dependencies for both versions
cd vite-version && pnpm install
cd ../nextjs-version && pnpm install
cd ../docs && pnpm installIniciar Desenvolvimento
bash
# Vite version
cd vite-version && pnpm dev
# Next.js version
cd nextjs-version && pnpm dev
# Documentation
cd docs && pnpm devFluxo de Trabalho de Desenvolvimento
Estratégia de Branches
Criar Branch de Funcionalidade
bash
# Update main branch
git checkout main
git pull upstream main
# Create feature branch
git checkout -b feature/your-feature-name
# or
git checkout -b fix/bug-descriptionConvenções de Nomenclatura de Branches
feature/component-name- Novas funcionalidadesfix/issue-description- Correção de bugsdocs/section-name- Atualizações de documentaçãorefactor/component-name- Refatoração de códigoperf/optimization-area- Melhorias de desempenho
Padrões de Código
TypeScript em Primeiro Lugar
- Todo o código novo deve ser em TypeScript
- Fornecer definições de tipos adequadas
- Utilizar configuração rigorosa de TypeScript
- Exportar tipos para componentes reutilizáveis
Diretrizes de Componentes
typescript
// Good: Proper TypeScript component
interface ButtonProps {
variant?: 'default' | 'secondary' | 'outline'
size?: 'sm' | 'md' | 'lg'
children: React.ReactNode
onClick?: () => void
}
export function Button({ variant = 'default', size = 'md', children, onClick }: ButtonProps) {
return (
<button
className={cn(
'inline-flex items-center justify-center rounded-md',
buttonVariants({ variant, size })
)}
onClick={onClick}
>
{children}
</button>
)
}Diretrizes de Estilização
- Utilizar classes utilitárias do Tailwind CSS
- Seguir os padrões de componentes existentes
- Garantir compatibilidade com modo escuro
- Testar design responsivo
- Utilizar variáveis CSS para tematização
Formatação de Código
bash
# Run formatting before commits
pnpm lint
pnpm format
# Auto-fix issues where possible
pnpm lint:fixRequisitos de Dupla Versão
CRÍTICO: Ambas as Versões Devem Funcionar
Todas as alterações devem ser compatíveis com ambas as versões (Vite e Next.js):
Requisitos para Componentes de Cliente
- Utilizar sempre
"use client"para componentes interativos - Testar componentes em ambas as frameworks
- Evitar APIs específicas de uma única framework
Padrões Multi-plataforma
typescript
// Good: Works in both frameworks
"use client"
import { useState } from 'react'
import { Button } from '@/components/ui/button'
export function Counter() {
const [count, setCount] = useState(0)
return (
<Button onClick={() => setCount(count + 1)}>
Count: {count}
</Button>
)
}
// Bad: Next.js specific
import { useRouter } from 'next/router' // Won't work in Vite
// Bad: Missing "use client"
import { useState } from 'react' // Will break in Next.js without "use client"Requisitos de Testes
Testes Manuais
- Testar em ambas as versões (Vite e Next.js)
- Verificar modos claro e escuro
- Verificar design responsivo
- Testar todas as funcionalidades interativas
- Garantir conformidade com acessibilidade
Testes de Build
bash
# Test Vite build
cd vite-version
pnpm build && pnpm preview
# Test Next.js build
cd nextjs-version
pnpm build && pnpm startTestes em Navegadores
- Chrome/Chromium
- Firefox
- Safari (se possível)
- Navegadores móveis
Processo de Contribuição
1. Discussão de Issues
Para Alterações Grandes
- Crie ou comente numa issue no GitHub
- Discuta a abordagem e a implementação
- Obtenha feedback antes de iniciar o trabalho
- Garanta o alinhamento com os objetivos do projeto
Para Alterações Pequenas
- Correções de bugs e erros de digitação podem dispensar discussão
- Pequenas melhorias podem ser submetidas diretamente
- Documente a alteração na descrição do seu PR
2. Desenvolvimento de Código
Lista de Verificação de Desenvolvimento
- [ ] Código segue os padrões de TypeScript
- [ ] Componentes funcionam tanto em Vite como em Next.js
- [ ] Estilos seguem as convenções do Tailwind
- [ ] Compatibilidade com modo escuro verificada
- [ ] Design responsivo testado
- [ ] Acessibilidade considerada
- [ ] Sem erros ou avisos na consola
Organização de Ficheiros
- Seguir a estrutura de projeto existente
- Colocar ficheiros nas diretorias adequadas
- Atualizar ambas as versões quando necessário
- Colocalizar ficheiros relacionados
3. Diretrizes de Commit
Formato da Mensagem de Commit
bash
type(scope): description
# Examples:
feat(components): add data table pagination
fix(theme): resolve dark mode toggle issue
docs(guide): update installation instructions
refactor(layout): simplify sidebar component
perf(charts): optimize chart renderingTipos de Commit
feat- Novas funcionalidadesfix- Correção de bugsdocs- Alterações na documentaçãostyle- Estilo/formatação de códigorefactor- Refatoração de códigoperf- Melhorias de desempenhotest- Alterações nos testeschore- Alterações em builds/ferramentas
4. Pull Request
Antes de Submeter
bash
# Ensure code quality
pnpm lint
pnpm type-check
# Test builds
pnpm build
# Update documentation if neededTemplate de Descrição de PR
markdown
## Descrição
Breve descrição das alterações efetuadas.
## Tipo de Alteração
- [ ] Correção de bug
- [ ] Nova funcionalidade
- [ ] Atualização de documentação
- [ ] Melhoria de desempenho
- [ ] Refatoração
## Testes
- [ ] Testado na versão Vite
- [ ] Testado na versão Next.js
- [ ] Compatibilidade com modo escuro verificada
- [ ] Design responsivo verificado
- [ ] Sem erros na consola
## Capturas de Ecrã (Screenshots)
Inclua capturas de ecrã para alterações na UI.
## Notas Adicionais
Qualquer contexto ou considerações adicionais.Diretrizes de PR
- Mantenha as alterações focadas e atómicas
- Escreva títulos claros e descritivos
- Referencie issues relacionadas
- Inclua capturas de ecrã para alterações visuais
- Documente alterações incompatíveis (breaking changes)
Processo de Revisão de Código
Critérios de Revisão
Funcionalidade
- O código funciona como pretendido
- Sem regressões introduzidas
- Casos limite considerados
- Tratamento de erros implementado
Qualidade do Código
- Boas práticas de TypeScript
- Código limpo e legível
- Abstrações adequadas
- Considerações de desempenho
Consistência de Design
- Segue os padrões existentes
- Consistência de UI/UX
- Conformidade com acessibilidade
- Responsividade móvel
Diretrizes para Revisores
Para Revisores
- Seja construtivo e prestável
- Sugira melhorias, não apenas problemas
- Teste alterações localmente quando possível
- Considere a manutenibilidade e escalabilidade
Para Contribuidores
- Responda ao feedback atempadamente
- Faça perguntas quando não estiver claro
- Atualize com base nas sugestões
- Esteja aberto a melhorias iterativas
Diretrizes da Comunidade
Código de Conduta
Seja Respeitoso
- Trate todos os contribuidores com respeito
- Valorize perspetivas diversas
- Forneça feedback construtivo
- Ajude outros a aprender e crescer
Seja Profissional
- Mantenha as discussões focadas e relevantes
- Evite ataques pessoais ou assédio
- Respeite as decisões dos mantenedores do projeto
- Siga os padrões da comunidade
Comunicação
GitHub Discussions
- Perguntas gerais e ideias
- Discussões de funcionalidades
- Demonstração da comunidade
- Ajuda e suporte
GitHub Issues
- Relatórios de bugs
- Pedidos de funcionalidades
- Problemas específicos
- Acompanhamento de tarefas
Comunidade Discord
- Chat e ajuda em tempo real
- Perguntas rápidas
- Interação comunitária
- Anúncios
Reconhecimento
Contribuidores
Todos os contribuidores são reconhecidos em:
- Lista de contribuidores do GitHub
- Documentação do projeto
- Notas de lançamento (release notes)
- Demonstrações da comunidade
Níveis de Contribuição
Contribuidores de Primeira Viagem
- Boas-vindas e orientação fornecidas
- Issues para iniciantes identificadas com a etiqueta "good first issue"
- Mentoria disponível
- Melhorias na documentação incentivadas
Contribuidores Regulares
- Privilégios de revisão aumentados
- Participação na discussão de funcionalidades
- Participação em eventos da comunidade
- Reconhecimento especial
Contribuidores Principais (Core)
- Permissões de repositório
- Participação em lançamentos
- Contribuição para a visão do projeto (roadmap)
- Responsabilidades de manutenção
Recursos
Documentação
- Estrutura do Projeto - Compreender a organização da base de código
- Stack Tecnológico - Conhecer as tecnologias utilizadas
- Sistema de Temas - Compreender a arquitetura do sistema de temas
Ferramentas e Extensões
- VS Code - Editor recomendado
- TypeScript - Documentação da linguagem
- Tailwind CSS - Framework de estilização
- shadcn/ui - Biblioteca de componentes
Comunidade
- Repositório GitHub
- Servidor Discord
- SIGA Plus - Componentes e templates premium
Obter Ajuda
Precisa de Assistência?
Ajuda Técnica
- Verifique a documentação existente
- Pesquise em issues e discussões do GitHub
- Faça perguntas no Discord
- Crie relatórios detalhados de issues
Perguntas de Contribuição
- Junte-se ao canal #contributors no Discord
- Comente em issues relevantes do GitHub
- Envie um e-mail para contribute@portal-siga.com
- Identifique os mantenedores nas discussões
Obrigado por contribuir para o Template SIGA Plus! As suas contribuições ajudam a tornar este projeto melhor para todos.