Thank you for considering contributing to IMS PocketBase BaaS Starter! This document provides guidelines and information for contributors.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
Before creating bug reports, please check the existing issues to avoid duplicates. When creating a bug report, include:
- Clear title and description
- Steps to reproduce the issue
- Expected vs actual behavior
- Environment details (Go version, PocketBase version, OS)
- Code samples that demonstrate the issue
Enhancement suggestions are welcome! Please provide:
- Clear title and detailed description
- Use case explaining why this enhancement would be useful
- Possible implementation details if you have ideas
- Fork the repository
- Create a feature branch from
main - Make your changes following our coding standards
- Add tests for new functionality
- Ensure all tests pass
- Update documentation if needed
- Submit a pull request
# Clone your fork
git clone https://github.com/Innovix-Matrix-Systems/ims-pocketbase-baas-starter
cd ims-pocketbase-baas-starter
# Setup environment
make setup-env
# Start development environment
make dev
# Run tests
make test- Follow Go standard coding conventions
- Use meaningful variable and function names
- Add type declarations where possible
- Write comprehensive tests for new features
- Keep backward compatibility in mind
We use Go's standard formatting tools:
# Format code
make format
# Run linter
make lintAll contributions must include appropriate tests:
# Run all tests
make test- Use Go's standard testing package
- Test both happy path and edge cases
- Mock external dependencies when appropriate
Example test structure:
func TestFeature(t *testing.T) {
// Setup
app := setupTestApp()
// Test case
result, err := app.DoSomething()
// Assertions
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
if result != expectedResult {
t.Errorf("Expected %v, got %v", expectedResult, result)
}
}When making changes that require database schema modifications:
- Follow the Database Migrations Guide
- Create properly numbered migration files
- Include both forward and rollback migrations
- Test migrations thoroughly
- Update README.md for new features
- Add inline documentation for complex functions
- Include usage examples in comments
- Update configuration examples when needed
Use clear, descriptive commit messages:
feat: add support for custom middleware
fix: resolve authentication issue
docs: update migration instructions
test: add tests for RBAC system
refactor: improve error handling
Prefix types:
feat:New featuresfix:Bug fixesdocs:Documentation changestest:Test additions/changesrefactor:Code refactoringstyle:Code style changeschore:Maintenance tasks
- Automated checks must pass (tests, code style)
- Manual review by maintainers
- Discussion if changes are needed
- Approval and merge
For Docker-based development:
# Build development image
make dev-build
# Start development environment
make dev
# View logs
make dev-logs
# Clean up
make dev-clean- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and general discussion
- Email: Contact maintainers directly for sensitive issues
Contributors will be acknowledged in:
- CHANGELOG.md for their contributions
- README.md contributors section
- GitHub contributors page
Thank you for helping make IMS PocketBase BaaS Starter better! 🚀