Thank you for considering contributing to SpringUserFramework, a Spring Boot library designed to simplify user management and authentication. Whether you're fixing bugs, building new features, or improving documentation, your contributions are welcome and appreciated.
This guide covers how to set up your local environment, contribute to both the library and the companion demo app, and submit high-quality pull requests.
- Code of Conduct
- Prerequisites
- Project Structure
- Forking and Cloning
- Working on Issues
- Branching and Development Workflow
- Testing Your Changes
- Writing Unit Tests
- Code Style and Standards
- Submitting a Pull Request
- Providing Easy Integration Steps
- Community Support
We expect all contributors to follow our Code of Conduct. Be respectful and inclusive.
Before starting development, make sure you have the following installed:
- JDK 17 or later
- Gradle
- Maven
- Git
- Docker (optional for demo app DB)
- IntelliJ IDEA or VSCode (recommended — the maintainer uses VSCode)
- SpringUserFramework – The main Spring Boot library.
- SpringUserFrameworkDemoApp – A companion frontend/demo application used to test and showcase library features. GitHub Link
-
Fork both repositories:
-
Clone locally:
git clone https://github.com/your-username/SpringUserFramework.git
git clone https://github.com/your-username/SpringUserFrameworkDemoApp.git
- Add upstream remotes:
cd SpringUserFramework
git remote add upstream https://github.com/devondragon/SpringUserFramework.git
cd ../SpringUserFrameworkDemoApp
git remote add upstream https://github.com/devondragon/SpringUserFrameworkDemoApp.git
- Check the Issues tab.
- Comment to claim an issue.
- Sync your fork and create a new branch off the target branch:
git fetch upstream
git checkout -b feature/my-change upstream/branch-name
- Work on your feature or fix in a branch.
- Make clear, well-scoped commits. Use Conventional Commits.
- Push to your fork:
git push origin feature/my-change
Note: Please do not commit or push changes to the version number in
gradle.properties
or any release metadata. Version management is handled by the project maintainer.
Since this is a library, you’ll want to test changes via the Demo App:
- Build and publish the library locally:
cd SpringUserFramework
./gradlew publishToMavenLocal
- Update the dependency in the demo app:
// In SpringUserFrameworkDemoApp/build.gradle
dependencies {
implementation 'com.yourgroupid:spring-user-framework:1.2.3-SNAPSHOT'
}
- Run the demo app:
cd ../SpringUserFrameworkDemoApp
./gradlew bootRun
cd SpringUserFrameworkDemoApp
docker-compose up -d
All PRs must include appropriate tests:
- New features must include unit tests.
- Bug fixes should include regression tests.
- Modified code should have updated tests.
./gradlew test
PRs without passing tests will not be accepted.
- Follow the Google Java Style Guide.
- Use meaningful variable/method names.
- Keep commits focused and easy to understand.
- Push your feature branch to your fork.
- Open a PR against the appropriate feature or development branch in the original repo.
- Include:
- A clear description
- Related issue number(s)
- Reference to the related DemoApp PR (if applicable)
- Respond to feedback and revise as needed.
If you're adding support for an integration, third-party tool, or external service:
- Please ensure your PR includes clear, step-by-step instructions on how to set up and test the new integration.
- These steps should be easy to follow for both the maintainer and new users trying the feature.
- Add any required configuration to the README or relevant config files.
The goal is to make it simple to verify and adopt your contribution without digging through code or documentation.
If you need help while contributing:
- Open an Issue or a Discussion.
- Tag @devondragon in the comments if you’re stuck or need guidance.
- We’re happy to help clarify workflows or provide feedback on early ideas.
Thank you for helping us make this project better!