{"id":24557336,"url":"https://github.com/0x6f677548/fastapi-bootstrap","last_synced_at":"2025-10-14T05:35:55.965Z","repository":{"id":273733411,"uuid":"919090629","full_name":"0x6f677548/fastapi-bootstrap","owner":"0x6f677548","description":"FastAPI Bootstrap is a project template that bundles NGINX, FastAPI and OpenTelemetry, providing a bootstrap for anyone that wants to expose an API securely and with instrumentation.","archived":false,"fork":false,"pushed_at":"2025-01-22T16:26:25.000Z","size":34,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-02T13:44:49.162Z","etag":null,"topics":["fastapi","nginx","opentelemetry"],"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/0x6f677548.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":1869051208}},"created_at":"2025-01-19T17:24:14.000Z","updated_at":"2025-08-19T10:58:17.000Z","dependencies_parsed_at":"2025-01-22T17:41:09.862Z","dependency_job_id":null,"html_url":"https://github.com/0x6f677548/fastapi-bootstrap","commit_stats":null,"previous_names":["0x6f677548/fastapi-bootstrap"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/0x6f677548/fastapi-bootstrap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x6f677548%2Ffastapi-bootstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x6f677548%2Ffastapi-bootstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x6f677548%2Ffastapi-bootstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x6f677548%2Ffastapi-bootstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0x6f677548","download_url":"https://codeload.github.com/0x6f677548/fastapi-bootstrap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x6f677548%2Ffastapi-bootstrap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018010,"owners_count":26086235,"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-14T02:00:06.444Z","response_time":60,"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":["fastapi","nginx","opentelemetry"],"created_at":"2025-01-23T05:15:24.508Z","updated_at":"2025-10-14T05:35:55.920Z","avatar_url":"https://github.com/0x6f677548.png","language":"Python","funding_links":["https://github.com/sponsors/1869051208"],"categories":[],"sub_categories":[],"readme":"# FastAPI Bootstrap\n[![PyPI - Version](https://img.shields.io/pypi/v/fastapi-bootstrap.svg)](https://pypi.org/project/fastapi-bootstrap)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fastapi-bootstrap.svg)](https://pypi.org/project/fastapi-bootstrap)\n[![Deploy to GHCR](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/build-and-publish-to-ghcr.yml/badge.svg)](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/build-and-publish-to-ghcr.yml)\n[![Deploy](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/deploy-to-dockerhost.yml/badge.svg)](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/deploy-to-dockerhost.yml)\n[![GitHub - Lint](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/lint.yml/badge.svg)](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/lint.yml)\n[![GitHub - Test](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/test.yml/badge.svg)](https://github.com/0x6f677548/fastapi-bootstrap/actions/workflows/test.yml)\n\nFastAPI Bootstrap is a project template that bundles NGINX, FastAPI and OpenTelemetry, providing a bootstrap for anyone that wants to expose an API securely and with instrumentation. \n\n# Architecture\nThe project is composed of the following containers:\n- **api-proxy**: An NGINX server that acts as a reverse proxy for api-server (FastAPI). \nAll inbound requests are limited to cloudflare IPs and forwarded to the api-server, after initial checks. Nginx longs are send through syslog to the otel-collector.\n- **api-server**: A FastAPI server that exposes a router through a REST API and is instrumented with OpenTelemetry, sending traces, metrics, and logs to the otel-collector.\n- **otel_collector**: An OpenTelemetry collector that exposes syslog and otel endpoints to receive logs, traces, and metrics from the api-proxy and api-server and forwards them to a remote OTEL compliant backend, which may be Jaeger, Prometheus, New Relic, Datadog, or any other backend that supports the OpenTelemetry protocol.\n- **jaeger**: A Jaeger server that receives traces from the otel-collector and displays them in a web interface.\n\n## GitHub Actions\nSome github actions are also included to lint, test, build, and deploy the project. Deployments are made to a remote server using TailScale, SSH, and Docker.\n- **lint**: Lints the code using black and ruff (through hatch).\n- **test**: Runs the tests using pytest.\n- **lint-super-linter**: Lints the code using super-linter.\n- **create-draft-release**: Creates a draft release.\n- **build-artifacts**: Builds the artifacts for the project.\n- **build-and-publish-to-ghcr**: Builds the Docker images and publishes them to the GitHub Container Registry.\n- **build-and-publish-to-pypi**: Builds the Python package and publishes it to PyPI.\n- **deploy-to-dockerhost**: Deploys the Docker images to a remote server using TailScale, SSH, and Docker.\n- **clear-actions-cache**: Clears the GitHub Actions cache.\n- **debug-context**: Prints the GitHub Actions context.\n\n\n \n## Other components\nSome of the tools and libraries used in this project are:\n- **FastAPI**: A modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.\n- **Hatch**: A modern project, package, and virtual env manager for Python.\n- **NGINX**: A web server that can also be used as a reverse proxy, load balancer, etc.\n- **OpenTelemetry**: A set of APIs, libraries, agents, and instrumentation to provide observability.\n- **Tailscale**: A ZeroTier alternative that provides a secure, private network for your servers.\n- **Docker**: A set of platform as a service products that use OS-level virtualization to deliver software in packages called containers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x6f677548%2Ffastapi-bootstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0x6f677548%2Ffastapi-bootstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x6f677548%2Ffastapi-bootstrap/lists"}