First off, thank you for considering contributing to FineTuneLLM! It's people like you that make this project great.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Branch Naming Conventions
- Commit Message Format
- Pull Request Process
- Code Style Guidelines
- Testing Requirements
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/finetuneLLM.git cd finetuneLLM - Add upstream remote:
git remote add upstream https://github.com/H0NEYP0T-466/finetuneLLM.git
- Node.js 18+
- Python 3.9+
- MongoDB (for full stack development)
# Install dependencies
npm install
# Start development server
npm run dev# Navigate to backend
cd backend
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Start backend server
cd app && python main.py# Start all services
docker-compose up -d
# View logs
docker-compose logs -f backend- Use the Bug Report template
- Search existing issues first to avoid duplicates
- Include detailed steps to reproduce
- Provide system information (OS, Python version, Node version)
- Use the Feature Request template
- Explain the problem you're trying to solve
- Describe your proposed solution
- Consider alternatives you've thought about
- Find an issue to work on or create one
- Comment on the issue to let others know you're working on it
- Create a branch following our naming conventions
- Make your changes with clear, focused commits
- Test your changes thoroughly
- Submit a pull request
Use the following prefixes for your branches:
feat/- New features- Example:
feat/add-model-caching
- Example:
fix/- Bug fixes- Example:
fix/mongodb-connection-error
- Example:
docs/- Documentation changes- Example:
docs/update-api-docs
- Example:
refactor/- Code refactoring- Example:
refactor/simplify-chat-component
- Example:
test/- Adding or updating tests- Example:
test/add-api-integration-tests
- Example:
chore/- Maintenance tasks- Example:
chore/update-dependencies
- Example:
perf/- Performance improvements- Example:
perf/optimize-token-streaming
- Example:
We follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Code style changes (formatting, missing semicolons, etc.)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasksci: CI/CD changes
feat(frontend): add token streaming animation
Implemented smooth token-by-token display with fade-in effect
for better user experience.
Closes #42
fix(backend): resolve MongoDB connection timeout
- Increased connection timeout to 30 seconds
- Added retry logic with exponential backoff
- Improved error logging
Fixes #38
- Update documentation if you've changed functionality
- Update the README.md if needed
- Follow the PR template when creating your pull request
- Link related issues using keywords (Closes #123, Fixes #456)
- Request review from maintainers
- Address feedback promptly and professionally
- Squash commits if requested before merging
Before submitting, ensure:
- Code follows the project's style guidelines
- Self-review completed
- Comments added for complex code
- Documentation updated
- No new warnings generated
- Tests added/updated and passing
- All existing tests pass
- Follow the existing ESLint configuration (see
eslint.config.js) - Use TypeScript for type safety
- Follow React best practices and hooks guidelines
- Use functional components with hooks
- Keep components small and focused
- Use meaningful variable and function names
Linting:
npm run lint- Follow PEP 8 style guide
- Use type hints where appropriate
- Write docstrings for functions and classes
- Keep functions focused and modular
- Handle errors appropriately
Format checking:
# Install black and flake8
pip install black flake8
# Format code
black backend/
# Check style
flake8 backend/- Write clear, self-documenting code
- Add comments for complex logic
- Keep line length reasonable (80-120 characters)
- Use consistent naming conventions
- Avoid magic numbers - use named constants
# Run frontend tests
npm test# Run backend tests
cd backend
pytest
# Run specific test
pytest test_api.py -v
# Run with coverage
pytest --cov=app# Run integration tests
./test_integration.sh- Write tests for new features
- Update tests when modifying existing code
- Aim for meaningful test coverage
- Test edge cases and error conditions
- Use descriptive test names
All submissions require review. We use GitHub pull requests for this purpose. Reviewers will check for:
- Code quality and style
- Test coverage
- Documentation updates
- Potential bugs or security issues
- Performance considerations
- Questions? Open a Discussion
- Stuck? Comment on the issue you're working on
- Need clarification? Ask in your pull request
Contributors will be recognized in:
- GitHub's contributors page
- Release notes (for significant contributions)
- Project documentation (for major features)
Thank you for contributing to FineTuneLLM! π