{"id":30237260,"url":"https://github.com/hectron/fauci.d","last_synced_at":"2026-04-18T04:01:47.168Z","repository":{"id":45363023,"uuid":"414252067","full_name":"hectron/fauci.d","owner":"hectron","description":"A Slack bot that finds COVID-19 vaccine appointments.","archived":false,"fork":false,"pushed_at":"2021-12-17T23:02:11.000Z","size":70,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-15T02:34:10.586Z","etag":null,"topics":["covid-19","covid-19-vaccination","covid-19-vaccine","golang","serverless","slack","vaccine-appointments","vaccine-tracker"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hectron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-06T14:46:32.000Z","updated_at":"2022-01-20T17:08:33.000Z","dependencies_parsed_at":"2022-09-21T11:52:43.221Z","dependency_job_id":null,"html_url":"https://github.com/hectron/fauci.d","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/hectron/fauci.d","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hectron%2Ffauci.d","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hectron%2Ffauci.d/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hectron%2Ffauci.d/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hectron%2Ffauci.d/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hectron","download_url":"https://codeload.github.com/hectron/fauci.d/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hectron%2Ffauci.d/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31955919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"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":["covid-19","covid-19-vaccination","covid-19-vaccine","golang","serverless","slack","vaccine-appointments","vaccine-tracker"],"created_at":"2025-08-15T02:01:33.657Z","updated_at":"2026-04-18T04:01:47.136Z","avatar_url":"https://github.com/hectron.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fauci.d\n\n![Fauci showing how getting vaccinated is cool](https://cdn.vidyard.com/thumbnails/7814513/50jFqyrE1bufVRU_JXZct5UCKTudWzcX.gif)\n\nThis repository contains a Slack bot that finds COVID-19 vaccines in the United States.\n\nThe application registers each vaccine as [a Slack `slash command`](https://api.slack.com/interactivity/slash-commands):\n\n- `/pfizer \u003cpostal code\u003e`\n- `/moderna \u003cpostal code\u003e`\n- `/jj \u003cpostal code\u003e`\n\nFor example, if you wanted to find `Pfizer` vaccinations near `60601`, you'd run the following command:\n\n```\n/pfizer 60601\n```\n\n## Architecture\n\nThis repository uses [Serverless](https://www.serverless.com) to provide bot functionality to Slack. We use\n[Serverless](https://serverless.com) to spin up the infrastructure needed to run an AWS lambda (we could also spin up\nBCP or Azure  functions using Serverless).\n\nThe functions are stored in the `functions` directory, by chat program.\n\nWithin the Slack directory, there are two folders -- `backend` and `handler`. The `handler` is the interface that we\nprovide to the Slack. The `backend` is the interface that gathers the providers, and presents them to the user. We use\nthis pattern because Slack slash commands need to be acknowledged within 3 seconds. Some provider searches can take over\n8 seconds.\n\nThe handler receives the request, and immediately responds to Slack with a 200, indicating that\nwe've acknowledged the request. The handler also asynchronously invokes the `backend` lambda, which can take a little\nbit longer to load the providers and notify the user in Slack.\n\n## Development\n\nIf you want to test out this application locally, you'll need to [set up a Slack App for your workspace](https://app.slack.com/apps-manage/).  You'll also want to setup the following environment variables:\n\n- `SLACK_API_TOKEN` - the token for your bot\n- `MAPBOX_API_TOKEN` - the token to use to communicate with Mapbox\n- `SENTRY_DSN` - URL to post messages to sentry\n- `SENTRY_ENVIRONMENT` - which environment the application is running on\n- `SENTRY_RELEASE` - used to tag the errors in sentry\n\nUseful files:\n\n- `examples/sample_bot.go` -- how to search for a vaccine and post a message to Slack with the results.\n- `slack/bot_manifest.yml` -- example configuration settings for a Slack app.\n\nTo run the example:\n\n```bash\ngo run example.go\n```\n\n## Running the test suite\n\n- Test entire suite: `go test ./...` or `make test`\n- Test individual package: `go test \u003cpackage\u003e`\n- Test vaccines package: `go test github.com/hectron/fauci.d/vaccines`\n\n## Deployment\n\nThe application is now automatically deployed using Github Actions when a new **Release** is created. Check the file `.github/workflows/cd.yml` for more information.\n\nIf you add any environment variable dependencies, add them to the repository's secrets in Github.\n\n### Manual Deployment\n\nIn order to **manually** deploy the application, you will need:\n\n- [Make](https://www.gnu.org/software/make/)\n- [serverless CLI](https://www.serverless.com/framework/docs/providers), [**configured to support AWS**](https://www.serverless.com/framework/docs/providers/aws/guide/installation)\n- Environment variables required in [`serverless.yml`](https://github.com/hectron/fauci.d/blob/main/serverless.yml#L52-L57) (these can be available using `.envrc`)\n\n### Actual deployment\n\n```bash\nmake deploy\n```\n### Testing deploy\n\n```bash\nserverless invoke -f slackbot -t\n```\n\n### Destroying the lambda (permanently)\n\n```bash\nserverless remove\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhectron%2Ffauci.d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhectron%2Ffauci.d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhectron%2Ffauci.d/lists"}