{"id":22347546,"url":"https://github.com/chand1012/newsletter-fastapi","last_synced_at":"2026-05-15T21:39:19.562Z","repository":{"id":115579628,"uuid":"323245776","full_name":"chand1012/newsletter-fastapi","owner":"chand1012","description":"Newsletter management system for my blog.","archived":false,"fork":false,"pushed_at":"2021-01-07T17:53:45.000Z","size":39,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-14T07:07:05.075Z","etag":null,"topics":["automation","deta","fastapi","newsletter","python","python3"],"latest_commit_sha":null,"homepage":"https://chand1012.dev/newsletter","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/chand1012.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"chand1012","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-12-21T06:04:19.000Z","updated_at":"2024-01-22T01:45:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"a64cc5fb-80db-4323-9d38-d53940e36e9d","html_url":"https://github.com/chand1012/newsletter-fastapi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chand1012/newsletter-fastapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chand1012%2Fnewsletter-fastapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chand1012%2Fnewsletter-fastapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chand1012%2Fnewsletter-fastapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chand1012%2Fnewsletter-fastapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chand1012","download_url":"https://codeload.github.com/chand1012/newsletter-fastapi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chand1012%2Fnewsletter-fastapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33080779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["automation","deta","fastapi","newsletter","python","python3"],"created_at":"2024-12-04T10:09:46.489Z","updated_at":"2026-05-15T21:39:19.547Z","avatar_url":"https://github.com/chand1012.png","language":"Python","funding_links":["https://github.com/sponsors/chand1012"],"categories":[],"sub_categories":[],"readme":"# FastAPI Newsletter Management\n\nThis is a small Python application, designed for the [Deta](https://www.deta.sh/) platform, that will manage [my blog's](https://chand1012.dev) Newsletter. If you would rather host this yourself via Docker, or on Heroku via Docker, you still need a [Deta Base](https://tinyurl.com/y7q38aek), which is a small NoSQL Database. You can sign up [here](https://web.deta.sh/) and get 2GB of storage for free. \n\n# Why?\n\nI needed a simple way to have users sign up to my email subscription, and this method allows me host it myself (or rather have someone else host it for me). I can also set up the form on my own web page, and just send a Form `POST` request to the `/subscribe` endpoint and it will return a relative redirect to `/confirmation` if successful.\n\n# .env\n\nThe `.env` file has four attributes: `SENDGRID_API_KEY`, `SENDGRID_SEND_EMAIL`, `API_KEY`, and `BASE_URL`. \n\n - `SENDGRID_API_KEY` is your API key for the [SendGrid](https://sendgrid.com/) platform to send emails.\n - `SENDGRID_SEND_EMAIL` is the email from which your emails will be coming from. SendGrid will walk you through setting this up on your account.\n - `API_KEY` is a password so bots can't use the `/new_post` endpoint as that's just for you. You can pass it with the header `X-Api-Key`.\n - `BASE_URL` is the base URL of the application. This is usually a DNS record preceded by `https://`. \n\nAfter you've created your Deta Micro and populated these attributes in the file `.env`, you can upload them to your project with `deta update -e .env`.\n\n# Hosting on Heroku\n\nIf you would rather use Heroku, you can host this application with the Dockerfile. You will have to set all of the variables found in the `.env` file as Config Vars on Heroku, as well as the additional variable `DETA_PROJECT_KEY` with your Deta Project Key, which is used to access the Deta Base. More information on how to set up your Deta Base can be found [here](https://tinyurl.com/y9nnxpqe).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchand1012%2Fnewsletter-fastapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchand1012%2Fnewsletter-fastapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchand1012%2Fnewsletter-fastapi/lists"}