Thank you for your interest in contributing to PayNext! This guide will help you get started.
- Code of Conduct
- How to Contribute
- Development Setup
- Coding Standards
- Testing Requirements
- Pull Request Process
- Documentation
- Be respectful and inclusive
- Focus on constructive feedback
- Follow community guidelines
- Report inappropriate behavior to maintainers
- Check existing issues
- Create detailed bug report
- Include reproduction steps
- Provide system information
- Search existing feature requests
- Create feature proposal
- Describe use case and benefits
- Discuss with maintainers
- Fork the repository
- Create feature branch
- Make changes
- Write tests
- Update documentation
- Submit pull request
# 1. Fork and clone
git clone https://github.com/YOUR_USERNAME/PayNext.git
cd PayNext
# 2. Add upstream remote
git remote add upstream https://github.com/quantsingularity/PayNext.git
# 3. Install dependencies
./scripts/dev_environment_setup.sh
# 4. Create feature branch
git checkout -b feature/my-new-featureGoogle Java Format: All Java code must follow Google Java Format
# Format Java files
java -jar google-java-format.jar --replace src/**/*.java
# Check formatting
./scripts/lint-all.shKey Conventions:
- 2-space indentation
- No wildcard imports
- Descriptive variable names
- JavaDoc for public methods
Prettier: All JS/TS code must use Prettier
# Format code
npm run prettier:fix
# Check formatting
npm run prettier:checkKey Conventions:
- 2-space indentation
- Single quotes
- Semicolons
- ES6+ features
PEP 8: Follow Python PEP 8 style guide
# Format Python code
black ml_services/
# Lint
flake8 ml_services/Required Coverage: 80% minimum
# Run all tests
cd backend
mvn test
# Run with coverage
mvn clean verify
# Check coverage report
open target/site/jacoco/index.htmlRequired Coverage: 70% minimum
# Web frontend
cd web-frontend
npm test -- --coverage
# Mobile frontend
cd mobile-frontend
pnpm test --coverage# Run integration tests
./scripts/run_tests.sh -t integration- Code follows style guidelines
- All tests pass
- New tests added for new features
- Documentation updated
- Commit messages are clear
- Branch is up to date with main
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
Describe testing performed
## Checklist
- [ ] Code follows style guidelines
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] No breaking changes- Submit PR
- Automated checks run (CI/CD)
- Code review by maintainers
- Address feedback
- Approval and merge
When adding features, update:
- API Documentation (
docs/API.md) - Usage Guide (
docs/USAGE.md) - Configuration (
docs/CONFIGURATION.md) - Examples (
docs/examples/)
- Clear, concise language
- Working code examples
- Screenshots where helpful
- Keep TOC updated
- Test all examples
### New Endpoint Name
| Property | Value |
| ----------------- | ------------------- |
| **Method** | POST |
| **Path** | `/api/new-endpoint` |
| **Auth Required** | Yes |
| **Description** | Brief description |
**Request Parameters**
| Name | Type | Required? | Default | Description | Example |
| ------ | ------ | --------- | ------- | ----------- | ------- |
| param1 | string | Yes | - | Description | "value" |
**Example Request**
\`\`\`bash
curl -X POST http://localhost:8002/api/new-endpoint \
-H "Authorization: Bearer $TOKEN" \
-d '{"param1": "value"}'
\`\`\`<type>(<scope>): <subject>
<body>
<footer>
- feat: New feature
- fix: Bug fix
- docs: Documentation only
- style: Formatting, missing semicolons
- refactor: Code restructuring
- test: Adding/updating tests
- chore: Maintenance tasks
feat(payment): add multi-currency support
Added EUR, GBP, JPY currency support with automatic conversion rates
Closes #123
fix(auth): resolve JWT token expiry issue
Updated token expiration from 30min to 1 hour
Fixed refresh token generation
Fixes #456
feature/feature-name- New featuresfix/bug-description- Bug fixesdocs/doc-updates- Documentationrefactor/component-name- Refactoringtest/test-description- Tests only