{"id":18358529,"url":"https://github.com/schireson/strapp","last_synced_at":"2025-06-29T03:34:06.850Z","repository":{"id":40400005,"uuid":"246069401","full_name":"schireson/strapp","owner":"schireson","description":"(Boot)strapp your apps!","archived":false,"fork":false,"pushed_at":"2025-03-19T18:12:21.000Z","size":527,"stargazers_count":6,"open_issues_count":9,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-19T18:36:55.471Z","etag":null,"topics":["boilerplate","click","flask","knownip","sentry","sqlalchemy","tidepod"],"latest_commit_sha":null,"homepage":"https://strapp.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schireson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-03-09T15:15:42.000Z","updated_at":"2025-03-19T17:59:28.000Z","dependencies_parsed_at":"2025-03-19T18:41:16.386Z","dependency_job_id":null,"html_url":"https://github.com/schireson/strapp","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schireson%2Fstrapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schireson%2Fstrapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schireson%2Fstrapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schireson%2Fstrapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schireson","download_url":"https://codeload.github.com/schireson/strapp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247488531,"owners_count":20946956,"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","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":["boilerplate","click","flask","knownip","sentry","sqlalchemy","tidepod"],"created_at":"2024-11-05T22:18:18.402Z","updated_at":"2025-04-06T13:31:34.367Z","avatar_url":"https://github.com/schireson.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Github Actions Build](https://github.com/schireson/databudgie/actions/workflows/build.yml/badge.svg) [![codecov](https://codecov.io/gh/schireson/strapp/branch/main/graph/badge.svg)](https://codecov.io/gh/schireson/strapp) [![Documentation Status](https://readthedocs.org/projects/strapp/badge/?version=latest)](https://strapp.readthedocs.io/en/latest/?badge=latest)\n\n# Strapp\n\nA mildly opinionated library used to boot**str**ap **app**s. Its primary use is to commonize\n(and test) the typical bespoke boilerplate most applications tend to reimplement to\nvarying levels of sophistication.\n\nAll dependencies are intentionally optional, and exposed through extras in order to make\nopting into or out of specific strapp decisions and modules entirely optional.\n\n## Package Highlights\n\n- [SQLAlchemy](https://strapp.readthedocs.io/latest/sqlalchemy.html)\n\n  - Session creation helper functions\n    - Opt-in \"dry run\" session feature\n  - Custom `declarative_base`\n\n    - Opt-in created_at/updated_at columns\n    - Opt-out `repr`able models\n    - For type safety, utilize the mypy plugin\n\n      ```toml\n      [tool.mypy]\n      plugins = 'strapp.sqlalchemy.mypy'\n      ```\n\n- [Click](https://strapp.readthedocs.io/latest/click.html)\n\n  - Context \"Resolver\"\n\n- [Flask](https://strapp.readthedocs.io/latest/flask.html)\n\n  - Non-decorator based route registration pattern (removes circular import issues)\n  - Opt-in error handlers\n  - Opt-in database handling\n\n- [Logging](https://strapp.readthedocs.io/latest/logging.html)\n\n  - Logging verbosity helper\n\n- [Sentry](https://strapp.readthedocs.io/latest/sentry.html)\n\n  - Setup helper\n  - Context helper\n\n- [Dramatiq](https://strapp.readthedocs.io/latest/dramatiq.html)\n  - Interface helpers (`configure`, `enqueue`, `get_results`)\n  - Declarative actors (`PreparedActor`)\n  - Optional middlewares: `SentryMiddleware`, `DatadogMiddleware`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschireson%2Fstrapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschireson%2Fstrapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschireson%2Fstrapp/lists"}