Thank you for your interest in contributing to pyinit! This guide will help you get set up for development.
pyinit is built with a hybrid architecture:
- Core Engine: Written in Go for performance and cross-platform compatibility
- Python Wrapper: Provides seamless installation via pip and integrates with Python workflows
- Template System: Uses Pongo2 templates for flexible project generation
- Distribution: Available via Homebrew (Go binary) and PyPI (Python wrapper)
- Go 1.24+
- Python 3.9+
- uv (recommended for Python package development)
-
Clone the repository
git clone https://github.com/Pradyothsp/pyinit.git cd pyinit -
Set up Go development
go mod download # Build with version info (recommended) make build # Or build directly go build -o pyinit ./cmd/pyinit
-
Set up Python package development
cd python-package pip install -e . # Or with uv (recommended) uv sync
-
Test your changes
# Test Go binary directly ./pyinit # Test Python wrapper cd python-package pyinit
├── cmd/pyinit/ # Go CLI entry point
├── internal/ # Go internal packages
│ ├── config/ # Project configuration
│ ├── generator/ # Project generation logic
│ ├── prompts/ # User interaction
│ └── setup/ # Environment setup
├── pkg/ # Go public packages
│ ├── template/ # Template engine
│ └── ui/ # User interface components
├── templates/ # Project templates (*.j2 files)
├── python-package/ # Python wrapper
│ ├── pyinit_cli/ # Python package
│ └── scripts/ # Python development scripts
├── Formula/ # Homebrew formula
└── .github/workflows/ # CI/CD pipelines
go test ./...cd python-package
python -m pytest# Test full workflow
./pyinit
# Follow the prompts and verify generated project-
Create and push a new tag:
git tag v0.1.0 git push origin v0.1.0
-
GitHub Actions will automatically:
- Build Go binaries for all platforms
- Update Homebrew formula
- Publish Python package to PyPI
- Create GitHub release
See .github/workflows/release.yml for the complete automation pipeline.
- Project Templates: Add new project types (CLI, web, data-science, library)
- Git Integration: Automatic git initialization and first commit
- Platform Support: Windows compatibility
- CI Templates: GitHub Actions and GitLab CI configurations
- Enhanced Prompts: Better validation and user experience
- Configuration: User preferences and project defaults
- Documentation: Examples, tutorials, and guides
- Plugins: Extension system for custom templates
- Themes: Different project structure themes
- Integration: IDE-specific configurations
When reporting bugs, please include:
- Operating system and version
- Python version
- Go version (if building from source)
- Complete error messages
- Steps to reproduce
We love feature ideas! Please:
- Check existing issues first
- Describe the use case clearly
- Explain why it would benefit other users
- Consider if it fits the project's scope
- Follow standard Go formatting (
gofmt) - Use descriptive variable names
- Add comments for public functions
- Keep functions focused and small
- Follow PEP 8
- Use type hints where appropriate
- Add docstrings for public functions
- Use
rufffor formatting and linting
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test thoroughly
- Commit with clear messages
- Push to your fork
- Open a Pull Request
- GitHub Issues: Bug reports and feature requests
- Discussions: Questions and general chat
- Email: contact@pradyoth-sp.me (for private matters)
By contributing, you agree that your contributions will be licensed under the MIT License.