Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: 🐛 Bug Report
description: Found a bug? Let us know!
title: "[BUG] "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for helping make Jazzy Framework better! 🙏

- type: input
id: version
attributes:
label: Framework Version
description: Which version are you using?
placeholder: e.g., 0.2.0
validations:
required: true

- type: textarea
id: what-happened
attributes:
label: What happened?
description: Tell us what went wrong
placeholder: Describe the bug in a few sentences...
validations:
required: true

- type: textarea
id: steps
attributes:
label: How can we reproduce it?
description: Simple steps to reproduce the bug
placeholder: |
1. Create a controller with...
2. Make a request to...
3. See error...
validations:
required: true

- type: textarea
id: code
attributes:
label: Code example (optional)
description: Share a small code snippet if helpful
render: java
placeholder: |
@Component
public class MyController {
// Your code here
}

- type: textarea
id: error
attributes:
label: Error message (optional)
description: Copy/paste any error messages
render: shell
64 changes: 64 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: 💡 Feature Request
description: Got an idea? Share it with us!
title: "[FEATURE] "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for the suggestion! We love new ideas 💡

- type: dropdown
id: category
attributes:
label: What area is this about?
options:
- Core Framework
- Dependency Injection
- HTTP/Routing
- Validation
- Documentation
- Developer Experience
- Other
validations:
required: true

- type: textarea
id: idea
attributes:
label: What's your idea?
description: Describe the feature you'd like to see
placeholder: I think it would be great if Jazzy could...
validations:
required: true

- type: textarea
id: why
attributes:
label: Why would this be useful?
description: How would this help you or other developers?
placeholder: This would solve the problem of...
validations:
required: true

- type: textarea
id: example
attributes:
label: Code example (optional)
description: Show how you imagine this feature working
render: java
placeholder: |
// Example of how this might work
@NewAnnotation
public class ExampleController {
// Your example here
}

- type: checkboxes
id: help
attributes:
label: Can you help? (optional)
options:
- label: I'd like to implement this myself
- label: I can help with testing
- label: I can help with documentation
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: ❓ Question
description: Need help with something?
title: "[QUESTION] "
labels: ["question"]
body:
- type: markdown
attributes:
value: |
Need help? We're here for you! 🤝

- type: textarea
id: question
attributes:
label: What do you need help with?
description: Ask your question
placeholder: How do I...? / Why does...? / Can Jazzy Framework...?
validations:
required: true

- type: textarea
id: tried
attributes:
label: What have you tried? (optional)
description: Let us know what you've already attempted
placeholder: I tried following the documentation but...

- type: textarea
id: code
attributes:
label: Code example (optional)
description: Share your code if relevant
render: java
194 changes: 194 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
# Contributing to Jazzy Framework

Thank you for your interest in contributing to Jazzy Framework! 🎉

## Ways to Contribute

There are many ways you can contribute to Jazzy Framework:

- 🐛 **Report bugs** using our bug report template
- 💡 **Suggest features** using our feature request template
- 📝 **Improve documentation** - fix typos, add examples, clarify explanations
- 🧪 **Write tests** - help us reach 100% test coverage
- 🔧 **Fix bugs** - tackle issues labeled with `good first issue`
- ⭐ **Add new features** - implement requested features
- 📚 **Create examples** - build sample applications showcasing framework features

## Getting Started

### 1. Fork and Clone
```bash
git clone https://github.com/YOUR_USERNAME/jazzy-framework.git
cd jazzy-framework
```

### 2. Build the Project
```bash
# Install dependencies and run tests
mvn clean install

# Run tests only
mvn test

# Run example application
mvn exec:java -Dexec.mainClass="examples.basic.App"
```

### 3. Make Your Changes

#### For Bug Fixes:
1. Create a branch: `git checkout -b fix/issue-123-description`
2. Write tests that reproduce the bug
3. Fix the bug
4. Ensure all tests pass
5. Update documentation if needed

#### For New Features:
1. Create a branch: `git checkout -b feature/feature-name`
2. Write tests for the new feature
3. Implement the feature
4. Add documentation and examples
5. Ensure all tests pass

#### For Documentation:
1. Create a branch: `git checkout -b docs/description`
2. Update relevant `.md` files or javadocs
3. Test documentation builds (if applicable)

### 4. Commit Guidelines

We follow [Conventional Commits](https://www.conventionalcommits.org/):

```bash
# Examples:
git commit -m "feat: add middleware support to router"
git commit -m "fix: resolve null pointer in DI container"
git commit -m "docs: add examples for @Named annotation"
git commit -m "test: add integration tests for validation"
git commit -m "chore: update dependencies"
```

**Types:**
- `feat:` - New features
- `fix:` - Bug fixes
- `docs:` - Documentation changes
- `test:` - Adding/updating tests
- `chore:` - Maintenance tasks
- `refactor:` - Code refactoring
- `perf:` - Performance improvements

### 5. Pull Request Process

1. **Update your branch** with latest main:
```bash
git checkout main
git pull origin main
git checkout your-branch
git rebase main
```

2. **Run the full test suite**:
```bash
mvn clean test
```

3. **Create Pull Request** with:
- Clear title describing the change
- Detailed description of what was changed and why
- Link to related issues
- Screenshots/examples if applicable

## Code Standards

### Java Code Style
- **Indentation**: 4 spaces (no tabs)
- **Line Length**: Maximum 120 characters
- **Naming**:
- Classes: `PascalCase`
- Methods/Variables: `camelCase`
- Constants: `UPPER_SNAKE_CASE`
- **Javadoc**: Required for all public methods and classes

### Testing
- **Test Coverage**: Aim for >90% coverage for new code
- **Test Naming**: Use descriptive names that explain what is being tested
- **Test Structure**: Follow Arrange-Act-Assert pattern

Example:
```java
@Test
public void shouldInjectDependencyWhenComponentHasConstructorParameter() {
// Arrange
DIContainer container = new DIContainer();
container.register(UserRepository.class);

// Act
UserService service = container.getBean(UserService.class);

// Assert
assertThat(service.getRepository()).isNotNull();
}
```

## Good First Issues

Looking for a good first contribution? Check out issues labeled:

- 🟢 `good first issue` - Perfect for beginners
- 📚 `documentation` - Documentation improvements
- 🧪 `tests` - Writing or improving tests
- 🐛 `bug` - Bug fixes with clear reproduction steps

## Development Setup

### Prerequisites
- Java 11 or higher
- Maven 3.6+
- Git

### Running Tests
```bash
# Run all tests
mvn test

# Run specific test class
mvn test -Dtest=DIContainerTest

# Run tests with coverage (if configured)
mvn test
```

### Building Documentation
```bash
cd docs-site
npm install
npm run build
npm run serve
```

## Community Guidelines

### Be Respectful
- Use welcoming and inclusive language
- Be respectful of differing viewpoints and experiences
- Accept constructive criticism gracefully
- Focus on what is best for the community

### Communication
- **Issues**: Use issue templates for bug reports and feature requests
- **Pull Requests**: Provide clear descriptions and context

## Recognition

Contributors are recognized in our:
- 🏆 GitHub contributors graph
- 📚 Release notes for significant contributions

## Questions?

- 💬 **General Questions**: Use [GitHub Discussions](https://github.com/canermastan/jazzy-framework/discussions) for community help
- 🐛 **Bug Reports**: Use our [bug report template](https://github.com/canermastan/jazzy-framework/issues/new?template=bug_report.yml)
- 💡 **Feature Ideas**: Use our [feature request template](https://github.com/canermastan/jazzy-framework/issues/new?template=feature_request.yml)
- ❓ **Questions**: Use our [question template](https://github.com/canermastan/jazzy-framework/issues/new?template=question.yml)

Thank you for contributing to Jazzy Framework! 🚀
Loading