Contributing
Contributors
Opening issues and bug reports
When opening a new issue or submitting a bug report, please include:
- A clear, descriptive title
- For bug reports:
- Description of the expected behavior
- Description of the actual behavior
- Steps to reproduce the issue
- Version information (OS, Python version, package version)
- Any relevant error messages or screenshots
- For feature requests:
- Description of the proposed feature
- Use case or motivation for the feature
- Any implementation suggestions (optional)
Labels help categorize issues: - Use bug for reporting problems - Use enhancement for feature requests - Use documentation for documentation improvements - Use question for general queries
Contributing code
To contribute code to the project:
- Fork the repository and clone your fork locally
- Create a new branch from
mainwith a descriptive name - Review the customization, architecture, and authentication pages for guidance on design patterns and code structure and style
- Ensure all tests pass, including
tytype checking - Stage, commit, and push your changes to the branch:
- Use clear, descriptive commit messages
- Keep commits focused and atomic
- Submit your pull request:
- Provide a clear description of the changes
- Link to any related issues
Optional branches
Core template changes on main propagate automatically to modal, hetzner, and stripe via CI. Pull requests to main that touch shared files (main.py, pyproject.toml, utils/core/db.py, routers/core/organization.py, templates, tests/conftest.py, .env.example) may need manual conflict resolution when those changes are merged into stripe. See the customization guide for the git merge upstream/stripe recipe.
Rendering the documentation
The documentation website is built with Great Docs. If you make changes to the .qmd files in the user_guide/ folder, you will need to rebuild the docs with Great Docs.
Great Docs uses Quarto under the hood and expects environment variables to be set in a file called _environment, so before running Great Docs build commands, you should copy your .env file to _environment.
# To copy the .env file to _environment
cp .env _environment
# To build the documentation website
PYTHONPATH=. uv run great-docs build
# To preview the documentation website locally
uv run great-docs previewNote that even if your pull request is merged, your changes will not be reflected on the live website until a maintainer republishes the docs.
Maintainers
Git flow
When creating new features,
- Open a Github issue with the label
featureand assign it to yourself. - Create a new branch from the issue sidebar.
- Follow the instructions in the popup to check out the branch locally and make your changes on the branch.
- Commit your changes and push to the branch.
- When you are ready to merge, open a pull request from the branch to main.
- Assign someone else for code review.
Publishing the documentation
Documentation is published to GitHub Pages automatically when changes are merged to main. Maintainers can also build locally and deploy the contents of great-docs/_site/.