Skip to content

Commit e21df5d

Browse files
authored
Merge pull request #4 from canermastan/chore/contributor-setup
chore: add contributor setup
2 parents d7067fd + 1ebcf89 commit e21df5d

File tree

6 files changed

+651
-15
lines changed

6 files changed

+651
-15
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: 🐛 Bug Report
2+
description: Found a bug? Let us know!
3+
title: "[BUG] "
4+
labels: ["bug"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for helping make Jazzy Framework better! 🙏
10+
11+
- type: input
12+
id: version
13+
attributes:
14+
label: Framework Version
15+
description: Which version are you using?
16+
placeholder: e.g., 0.2.0
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: what-happened
22+
attributes:
23+
label: What happened?
24+
description: Tell us what went wrong
25+
placeholder: Describe the bug in a few sentences...
26+
validations:
27+
required: true
28+
29+
- type: textarea
30+
id: steps
31+
attributes:
32+
label: How can we reproduce it?
33+
description: Simple steps to reproduce the bug
34+
placeholder: |
35+
1. Create a controller with...
36+
2. Make a request to...
37+
3. See error...
38+
validations:
39+
required: true
40+
41+
- type: textarea
42+
id: code
43+
attributes:
44+
label: Code example (optional)
45+
description: Share a small code snippet if helpful
46+
render: java
47+
placeholder: |
48+
@Component
49+
public class MyController {
50+
// Your code here
51+
}
52+
53+
- type: textarea
54+
id: error
55+
attributes:
56+
label: Error message (optional)
57+
description: Copy/paste any error messages
58+
render: shell
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: 💡 Feature Request
2+
description: Got an idea? Share it with us!
3+
title: "[FEATURE] "
4+
labels: ["enhancement"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for the suggestion! We love new ideas 💡
10+
11+
- type: dropdown
12+
id: category
13+
attributes:
14+
label: What area is this about?
15+
options:
16+
- Core Framework
17+
- Dependency Injection
18+
- HTTP/Routing
19+
- Validation
20+
- Documentation
21+
- Developer Experience
22+
- Other
23+
validations:
24+
required: true
25+
26+
- type: textarea
27+
id: idea
28+
attributes:
29+
label: What's your idea?
30+
description: Describe the feature you'd like to see
31+
placeholder: I think it would be great if Jazzy could...
32+
validations:
33+
required: true
34+
35+
- type: textarea
36+
id: why
37+
attributes:
38+
label: Why would this be useful?
39+
description: How would this help you or other developers?
40+
placeholder: This would solve the problem of...
41+
validations:
42+
required: true
43+
44+
- type: textarea
45+
id: example
46+
attributes:
47+
label: Code example (optional)
48+
description: Show how you imagine this feature working
49+
render: java
50+
placeholder: |
51+
// Example of how this might work
52+
@NewAnnotation
53+
public class ExampleController {
54+
// Your example here
55+
}
56+
57+
- type: checkboxes
58+
id: help
59+
attributes:
60+
label: Can you help? (optional)
61+
options:
62+
- label: I'd like to implement this myself
63+
- label: I can help with testing
64+
- label: I can help with documentation
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: ❓ Question
2+
description: Need help with something?
3+
title: "[QUESTION] "
4+
labels: ["question"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Need help? We're here for you! 🤝
10+
11+
- type: textarea
12+
id: question
13+
attributes:
14+
label: What do you need help with?
15+
description: Ask your question
16+
placeholder: How do I...? / Why does...? / Can Jazzy Framework...?
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: tried
22+
attributes:
23+
label: What have you tried? (optional)
24+
description: Let us know what you've already attempted
25+
placeholder: I tried following the documentation but...
26+
27+
- type: textarea
28+
id: code
29+
attributes:
30+
label: Code example (optional)
31+
description: Share your code if relevant
32+
render: java

CONTRIBUTING.md

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
# Contributing to Jazzy Framework
2+
3+
Thank you for your interest in contributing to Jazzy Framework! 🎉
4+
5+
## Ways to Contribute
6+
7+
There are many ways you can contribute to Jazzy Framework:
8+
9+
- 🐛 **Report bugs** using our bug report template
10+
- 💡 **Suggest features** using our feature request template
11+
- 📝 **Improve documentation** - fix typos, add examples, clarify explanations
12+
- 🧪 **Write tests** - help us reach 100% test coverage
13+
- 🔧 **Fix bugs** - tackle issues labeled with `good first issue`
14+
-**Add new features** - implement requested features
15+
- 📚 **Create examples** - build sample applications showcasing framework features
16+
17+
## Getting Started
18+
19+
### 1. Fork and Clone
20+
```bash
21+
git clone https://github.com/YOUR_USERNAME/jazzy-framework.git
22+
cd jazzy-framework
23+
```
24+
25+
### 2. Build the Project
26+
```bash
27+
# Install dependencies and run tests
28+
mvn clean install
29+
30+
# Run tests only
31+
mvn test
32+
33+
# Run example application
34+
mvn exec:java -Dexec.mainClass="examples.basic.App"
35+
```
36+
37+
### 3. Make Your Changes
38+
39+
#### For Bug Fixes:
40+
1. Create a branch: `git checkout -b fix/issue-123-description`
41+
2. Write tests that reproduce the bug
42+
3. Fix the bug
43+
4. Ensure all tests pass
44+
5. Update documentation if needed
45+
46+
#### For New Features:
47+
1. Create a branch: `git checkout -b feature/feature-name`
48+
2. Write tests for the new feature
49+
3. Implement the feature
50+
4. Add documentation and examples
51+
5. Ensure all tests pass
52+
53+
#### For Documentation:
54+
1. Create a branch: `git checkout -b docs/description`
55+
2. Update relevant `.md` files or javadocs
56+
3. Test documentation builds (if applicable)
57+
58+
### 4. Commit Guidelines
59+
60+
We follow [Conventional Commits](https://www.conventionalcommits.org/):
61+
62+
```bash
63+
# Examples:
64+
git commit -m "feat: add middleware support to router"
65+
git commit -m "fix: resolve null pointer in DI container"
66+
git commit -m "docs: add examples for @Named annotation"
67+
git commit -m "test: add integration tests for validation"
68+
git commit -m "chore: update dependencies"
69+
```
70+
71+
**Types:**
72+
- `feat:` - New features
73+
- `fix:` - Bug fixes
74+
- `docs:` - Documentation changes
75+
- `test:` - Adding/updating tests
76+
- `chore:` - Maintenance tasks
77+
- `refactor:` - Code refactoring
78+
- `perf:` - Performance improvements
79+
80+
### 5. Pull Request Process
81+
82+
1. **Update your branch** with latest main:
83+
```bash
84+
git checkout main
85+
git pull origin main
86+
git checkout your-branch
87+
git rebase main
88+
```
89+
90+
2. **Run the full test suite**:
91+
```bash
92+
mvn clean test
93+
```
94+
95+
3. **Create Pull Request** with:
96+
- Clear title describing the change
97+
- Detailed description of what was changed and why
98+
- Link to related issues
99+
- Screenshots/examples if applicable
100+
101+
## Code Standards
102+
103+
### Java Code Style
104+
- **Indentation**: 4 spaces (no tabs)
105+
- **Line Length**: Maximum 120 characters
106+
- **Naming**:
107+
- Classes: `PascalCase`
108+
- Methods/Variables: `camelCase`
109+
- Constants: `UPPER_SNAKE_CASE`
110+
- **Javadoc**: Required for all public methods and classes
111+
112+
### Testing
113+
- **Test Coverage**: Aim for >90% coverage for new code
114+
- **Test Naming**: Use descriptive names that explain what is being tested
115+
- **Test Structure**: Follow Arrange-Act-Assert pattern
116+
117+
Example:
118+
```java
119+
@Test
120+
public void shouldInjectDependencyWhenComponentHasConstructorParameter() {
121+
// Arrange
122+
DIContainer container = new DIContainer();
123+
container.register(UserRepository.class);
124+
125+
// Act
126+
UserService service = container.getBean(UserService.class);
127+
128+
// Assert
129+
assertThat(service.getRepository()).isNotNull();
130+
}
131+
```
132+
133+
## Good First Issues
134+
135+
Looking for a good first contribution? Check out issues labeled:
136+
137+
- 🟢 `good first issue` - Perfect for beginners
138+
- 📚 `documentation` - Documentation improvements
139+
- 🧪 `tests` - Writing or improving tests
140+
- 🐛 `bug` - Bug fixes with clear reproduction steps
141+
142+
## Development Setup
143+
144+
### Prerequisites
145+
- Java 11 or higher
146+
- Maven 3.6+
147+
- Git
148+
149+
### Running Tests
150+
```bash
151+
# Run all tests
152+
mvn test
153+
154+
# Run specific test class
155+
mvn test -Dtest=DIContainerTest
156+
157+
# Run tests with coverage (if configured)
158+
mvn test
159+
```
160+
161+
### Building Documentation
162+
```bash
163+
cd docs-site
164+
npm install
165+
npm run build
166+
npm run serve
167+
```
168+
169+
## Community Guidelines
170+
171+
### Be Respectful
172+
- Use welcoming and inclusive language
173+
- Be respectful of differing viewpoints and experiences
174+
- Accept constructive criticism gracefully
175+
- Focus on what is best for the community
176+
177+
### Communication
178+
- **Issues**: Use issue templates for bug reports and feature requests
179+
- **Pull Requests**: Provide clear descriptions and context
180+
181+
## Recognition
182+
183+
Contributors are recognized in our:
184+
- 🏆 GitHub contributors graph
185+
- 📚 Release notes for significant contributions
186+
187+
## Questions?
188+
189+
- 💬 **General Questions**: Use [GitHub Discussions](https://github.com/canermastan/jazzy-framework/discussions) for community help
190+
- 🐛 **Bug Reports**: Use our [bug report template](https://github.com/canermastan/jazzy-framework/issues/new?template=bug_report.yml)
191+
- 💡 **Feature Ideas**: Use our [feature request template](https://github.com/canermastan/jazzy-framework/issues/new?template=feature_request.yml)
192+
-**Questions**: Use our [question template](https://github.com/canermastan/jazzy-framework/issues/new?template=question.yml)
193+
194+
Thank you for contributing to Jazzy Framework! 🚀

0 commit comments

Comments
 (0)