{"id":31483371,"url":"https://github.com/ryancswallace/production-python-template","last_synced_at":"2025-10-02T08:15:02.123Z","repository":{"id":316051794,"uuid":"1061476870","full_name":"ryancswallace/production-python-template","owner":"ryancswallace","description":"Python project template with production-ready, best-practice defaults. Generates scaffolding tailored to the project type you choose: library, CLI app, or web service.","archived":false,"fork":false,"pushed_at":"2025-09-22T10:53:09.000Z","size":1,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-22T12:18:39.887Z","etag":null,"topics":["copier","copier-template","production-python","project-generator","project-template","python","python-template","template"],"latest_commit_sha":null,"homepage":"https://ryancswallace.dev/posts/production-ready-python/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryancswallace.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-22T01:04:56.000Z","updated_at":"2025-09-22T10:53:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"cbfb7c21-5147-4671-801c-9027bcc796dc","html_url":"https://github.com/ryancswallace/production-python-template","commit_stats":null,"previous_names":["ryancswallace/production-python-template"],"tags_count":null,"template":true,"template_full_name":null,"purl":"pkg:github/ryancswallace/production-python-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancswallace%2Fproduction-python-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancswallace%2Fproduction-python-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancswallace%2Fproduction-python-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancswallace%2Fproduction-python-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryancswallace","download_url":"https://codeload.github.com/ryancswallace/production-python-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryancswallace%2Fproduction-python-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277974524,"owners_count":25908427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-02T02:00:08.890Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["copier","copier-template","production-python","project-generator","project-template","python","python-template","template"],"created_at":"2025-10-02T08:15:00.947Z","updated_at":"2025-10-02T08:15:02.118Z","avatar_url":"https://github.com/ryancswallace.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Template for Production Python Projects\n\n## Configuring GUI-only GitHub Project Settings\n\n* Settings \u003e General \u003e Default branch: `main`\n* Settings \u003e General \u003e Enable release immutability \u003e Enable\n* Settings \u003e General \u003e Features \u003e Disable any unused features. For example:\n  * Disable: Wikis, Sponsorships, Projects\n  * Enable: Issues, Preserve this repository, Discussions\n* Settings \u003e Rules \u003e Rulesets \u003e Create ruleset \"protect-version-tags\" protecting tags \"v*\" from creation, update, deletion except bypass list of repository admin and maintainers\n* Settings \u003e Rules \u003e Rulesets \u003e Create ruleset \"protect-main-branch\" protecting default branch with rules\n  * Restrict updates\n  * Restrict deletions\n  * Require pull request before merging\n    * Required approvals: 1\n    * Dismiss stale pull request approvals when new commits are pushed\n    * Require review from Code Owners\n  * Require status checks to pass\n    * Do not require status checks on creation\n    * Required checks  # TODO\n  * Block force pushes\n  * Require code scanning results\n    * CodeQL\n      * Security alerts: High or higher\n      * Alerts: errors\n* Settings \u003e Actions \u003e General \u003e Allow \u003caccount/organization\u003e, and select non-\u003caccount/organization\u003e, actions and reusable workflows\n  * Under Allow or block specified actions and reusable workflows \u003e enter `actions/*, github/codeql-action/*`\n  * Allow actions created by GitHub \u003e Enable\n* Settings \u003e Actions \u003e General \u003e Approval for running fork pull request workflows from contributors \u003e Require approval for all external contributors\n* Settings \u003e Actions \u003e General \u003e Workflow permissions \u003e Read and write permissions\n* Settings \u003e Actions \u003e General \u003e Allow GitHub Actions to create and approve pull requests \u003e Enabled\n* Settings \u003e Advanced security \u003e Private vulnerability reporting \u003e Enabled\n* Settings \u003e Advanced security \u003e Dependency graph \u003e Enabled\n* Settings \u003e Advanced security \u003e Dependabot \u003e Alerts \u003e Enabled\n* Settings \u003e Advanced security \u003e Dependabot \u003e Security updates \u003e Enabled\n* Settings \u003e Advanced security \u003e Dependabot \u003e Grouped security updates \u003e Enabled (matter of preference)\n* Settings \u003e Advanced security \u003e Secret Protection \u003e Enable\n* Settings \u003e Advanced security \u003e Secret Protection \u003e Push protection \u003e Enable\n* Settings \u003e Email notifications \u003e Enter address (preferably a mailing list with maintainers)\n* Settings \u003e Pages \u003e Build and deployment \u003e Source \u003e GitHub Actions\n* Homepage \u003e Edit repository details (gear icon) \u003e Complete\n  * Description\n  * Website (e.g., enable \"Use your GitHub Pages website\")\n  * Topics\n  * Include in the home page \u003e Enable\n    * Releases\n    * Packages\n    * Deployments\n\nWarning/disclaimer that the template does not necessarily include everything required to build a project ready for production. Reminder to take care of security, reliability, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryancswallace%2Fproduction-python-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryancswallace%2Fproduction-python-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryancswallace%2Fproduction-python-template/lists"}