{"id":13690359,"url":"https://github.com/accent-starlette/boilerplate","last_synced_at":"2025-05-02T06:32:36.253Z","repository":{"id":100212848,"uuid":"185394909","full_name":"accent-starlette/boilerplate","owner":"accent-starlette","description":"Empty boilerplate project for Starlette with docker, auth, css and more.","archived":true,"fork":false,"pushed_at":"2022-01-04T17:30:53.000Z","size":166,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-12T15:43:30.883Z","etag":null,"topics":["boilerplate","docker","python3","starlette"],"latest_commit_sha":null,"homepage":"","language":"Python","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/accent-starlette.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}},"created_at":"2019-05-07T12:13:37.000Z","updated_at":"2023-08-16T11:17:18.000Z","dependencies_parsed_at":"2023-03-13T15:39:19.913Z","dependency_job_id":null,"html_url":"https://github.com/accent-starlette/boilerplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/accent-starlette%2Fboilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/accent-starlette%2Fboilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/accent-starlette%2Fboilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/accent-starlette%2Fboilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/accent-starlette","download_url":"https://codeload.github.com/accent-starlette/boilerplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251998765,"owners_count":21678007,"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","docker","python3","starlette"],"created_at":"2024-08-02T16:01:04.072Z","updated_at":"2025-05-02T06:32:35.910Z","avatar_url":"https://github.com/accent-starlette.png","language":"Python","funding_links":[],"categories":["Projects"],"sub_categories":["Boilerplate"],"readme":"# Starlette Boilerplate Project\n\n[![Sourcery](https://img.shields.io/badge/Sourcery-refactored-blueviolet.svg)](https://sourcery.ai)\n![](https://github.com/accent-starlette/boilerplate/workflows/Test/badge.svg?branch=master)\n![](https://github.com/accent-starlette/boilerplate/workflows/Publish%20to%20ECR/badge.svg?branch=master)\n\n## Getting Started\n\nBuild the container:\n\n```bash\ndocker-compose build\n```\n\nUp the container:\n\n```bash\ndocker-compose up\n```\n\nSetup your database by creating your first revision, you may need to add some missing imports:\n\n```bash\ndocker-compose exec app sh\nalembic revision --autogenerate -m \"first revision\"\n```\n\nThen apply it:\n\n```bash\ndocker-compose exec app sh\nalembic upgrade head\n```\n\n## Ready!!\n\nThe container is ready at http://localhost\n\n## Environment Variables\n\n### base\n- ALLOWED_HOSTS\n- DATABASE_URL\n- DEBUG\n- SECRET_KEY\n\n### email\n- EMAIL_HOST\n- EMAIL_PORT\n- EMAIL_DEFAULT_FROM_ADDRESS\n- EMAIL_DEFAULT_FROM_NAME\n- EMAIL_USERNAME\n- EMAIL_PASSWORD\n\n### aws\n- AWS_ACCESS_KEY_ID\n- AWS_SECRET_ACCESS_KEY\n- AWS_BUCKET\n- AWS_REGION\n\n### other\n- SENTRY_DSN\n\n## Formatting and Linting\n\nSorts imports, removes unused variables, max line length etc\n\n```bash\ndocker-compose exec app ./scripts/lint\n```\n\n## Testing\n\nRun tests and coverage\n\n```bash\ndocker-compose exec app ./scripts/test\n```\n\n## New User \u0026 Example Scope\n\n```bash\ndocker-compose exec app python\n```\n\nThe following will just paste into the python shell to\nsave you copying each line.\n\n```python\nfrom app.db import db\nfrom starlette_auth.tables import Scope, User\nscope = Scope(code=\"admin\", description=\"Full administrators access\")\nuser = User(email='admin@example.com', first_name='Admin', last_name='User')\nuser.set_password('password')\nuser.scopes.append(scope)\nuser.save()\n```\n\n## Styles\n\nnpm install:\n\n```bash\nnpm install\n```\n\nbuild css:\n\n```bash\nnpm run watch-css\n```\n\n## Postgres Query Stats\n\nThe following line must be added the the `postgresql.conf` file:\n\n```bash\nshared_preload_libraries = 'pg_stat_statements'\n```\n\nEnable the extension in postgres:\n\n```sql\nCREATE EXTENSION pg_stat_statements;\n```\n\nReset stats:\n\n```sql\nSELECT pg_stat_statements_reset();\n```\n\nView all logged stats:\n\n```sql\nSELECT\nquery,\ncalls,\ntotal_time,\nmin_time,\nmax_time,\nmean_time,\nrows,\n100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent\nFROM pg_stat_statements\nINNER JOIN pg_catalog.pg_database db\nON pg_stat_statements.dbid = db.oid\nWHERE db.datname = 'appdb'\nORDER BY total_time\nDESC LIMIT 25;\n```\n\nMore info: https://www.postgresql.org/docs/current/pgstatstatements.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faccent-starlette%2Fboilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faccent-starlette%2Fboilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faccent-starlette%2Fboilerplate/lists"}