Contribuindo
Contribuições são bem-vindas! Este guia ajudará você a começar.
Processo de Contribuição
1. Fork e Clone
# Fork no GitHub
# Clone seu fork
git clone https://github.com/seu-usuario/jsoncanvasviewer.git
cd jsoncanvasviewer
# Adicione upstream
git remote add upstream https://github.com/original/jsoncanvasviewer.git
2. Crie uma Branch
git checkout -b feature/minha-feature
Convenções:
feature/
: Nova funcionalidadefix/
: Correção de bugdocs/
: Documentaçãorefactor/
: Refatoraçãoperf/
: Performance
3. Desenvolva e Teste
# Execute testes
flutter test
# Verifique linting
flutter analyze
# Formate código
dart format .
4. Commit
git commit -m "feat: adiciona novo tipo de elemento"
Formato:
tipo: descrição curta
Descrição detalhada (opcional)
Resolves #123
5. Push e Pull Request
git push origin feature/minha-feature
Diretrizes de Código
Estilo Dart/Flutter
Variáveis
camelCase
userName, isValid
Classes
PascalCase
UserProfile, HomePage
Arquivos
snake_case
user_profile.dart
Constantes
lowerCamelCase
defaultColor
Linting
flutter analyze
Zero warnings/errors antes de commit.
Formatação
dart format .
- Linha: 80 caracteres (até 120 se necessário)
- Indentação: 2 espaços
- Trailing commas para listas
Áreas para Contribuir
Prioridade Alta
Testes
Unitários e de widget
Documentação
Comentários e exemplos
Performance
Profiling e otimizações
Acessibilidade
Melhorias de a11y
Features Desejadas
Undo/Redo
Sistema de histórico de comandos
Multi-seleção
Selecionar múltiplos elementos
Snapping
Guias de alinhamento
Templates
Galeria de templates prontos
Export
PNG, SVG, PDF
Atalhos
Keyboard shortcuts
Estrutura de Pull Request
## Descrição
[Descreva as mudanças]
## Motivação
[Por que essa mudança é necessária?]
## Como Foi Testado?
- [ ] Web (Chrome)
- [ ] Testes unitários
- [ ] Testes de widget
## Tipos de Mudanças
- [ ] Bug fix
- [ ] Nova feature
- [ ] Breaking change
- [ ] Documentação
## Checklist
- [ ] Código segue estilo do projeto
- [ ] `flutter analyze` passa
- [ ] `dart format` aplicado
- [ ] Testes adicionados
- [ ] Documentação atualizada
Testes
Executar Testes
# Todos
flutter test
# Específico
flutter test test/widget/json_canvas_viewer_test.dart
# Com coverage
flutter test --coverage
Exemplo
testWidgets('JsonCanvasViewer renderiza retângulo', (tester) async {
await tester.pumpWidget(MaterialApp(
home: JsonCanvasViewer(
jsonString: '{"canvas": {...}, "elements": [{"type": "rect"}]}',
),
));
expect(find.byType(Container), findsOneWidget);
});
Review Process
O que Esperamos
Código Limpo
Fácil de ler e entender
Testes
Coverage adequado
Documentação
Comentários quando necessário
Performance
Sem regressões
Timeline
- Review inicial: 1-3 dias
- Feedback: Comentários e sugestões
- Iteração: Ajustes baseados no feedback
- Merge: Quando aprovado por 1+ maintainer
Comunidade
Canais
- GitHub Issues: Bugs e features
- GitHub Discussions: Perguntas gerais
- Pull Requests: Código e review
Código de Conduta
- Seja respeitoso
- Seja construtivo
- Seja paciente
- Celebre diversidade
Dúvidas?
Obrigado por contribuir!
Made with 💙 by Conty Team