{"id":51013440,"url":"https://github.com/trycourier/courier-raffle","last_synced_at":"2026-06-21T06:31:39.237Z","repository":{"id":187591443,"uuid":"641560809","full_name":"trycourier/courier-raffle","owner":"trycourier","description":null,"archived":false,"fork":false,"pushed_at":"2023-06-27T23:24:29.000Z","size":258,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-21T22:32:47.209Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://courier-raffle.vercel.app","language":"JavaScript","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/trycourier.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}},"created_at":"2023-05-16T18:20:39.000Z","updated_at":"2023-08-11T00:31:35.000Z","dependencies_parsed_at":"2023-08-11T09:58:19.309Z","dependency_job_id":null,"html_url":"https://github.com/trycourier/courier-raffle","commit_stats":null,"previous_names":["trycourier/courier-raffle"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trycourier/courier-raffle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-raffle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-raffle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-raffle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-raffle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trycourier","download_url":"https://codeload.github.com/trycourier/courier-raffle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fcourier-raffle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34597337,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"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":[],"created_at":"2026-06-21T06:31:38.536Z","updated_at":"2026-06-21T06:31:39.214Z","avatar_url":"https://github.com/trycourier.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is a [Next.js](https://nextjs.org/) project that is integrated with [Courier](https://courier.com).\n\n## Prerequisites\n\nIn order to run this app, you'll need a [Courier](https://courier.com/?utm_source=courier-raffle\u0026utm_medium=code-template\u0026utm_campaign=devrel-apps) account.\n\n## Getting Started\n\nClone the repo and install dependencies:\n\n```bash\nnpm install\n```\n\nCreate a `.env.local` file at the root of the project to store secrets and configuration for this app.\n\n\n## Configure Courier Account\n\n[Log-in](https://app.courier.com/?utm_source=courier-raffle\u0026utm_medium=code-template\u0026utm_campaign=devrel-apps) to your Courier Account and go to Settings / API Keys. Copy the Production API key and store it as an envvar:\n\n`COURIER_AUTH_TOKEN=pk_prod_xxx`\n\nGo to Users and select (or create) a user that we can use to power the notifications and toasts for the web app. Copy the user's ID and store it as an envvar:\n\n`NEXT_PUBLIC_COURIER_USER=abc`\n\nGo to Channels, scroll to SMS and select the Twilio provider. Configure it using your Twilio Account SID, Auth Token and a From phone number or Messaging Service SID. Click Save.\n\nGo back to Channels, scroll to email and select the Postmark provider. Configure it using a Server Token, From email address and Message Stream. Click Save.\n\nGo back to Channels, scroll to \"other\" and install the Courier provider. Copy the Client Key (Public) and store it as an envvar:\n\n`NEXT_PUBLIC_COURIER_CLIENT_KEY=zzz`\n\nGo to Users and click \"+ List\" to create a new list. Name it whatever you like. Copy the list ID and store it as an envvar:\n\n`COURIER_LIST_ID=yyy`\n\n\n## Configure webhooks\n\nDefine a username and password to use to secure your Twilio and Postmark webhooks and store it as an envvar:\n\n`WEBHOOK_AUTH=username:password`\n\nConfigure your Twilio webhook to use the username and password by specifying a URL like this:\n\n`https://username:password@your.domain.com/twilio`\n\nConfigure your Postmark webhook in the same way. \n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycourier%2Fcourier-raffle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrycourier%2Fcourier-raffle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycourier%2Fcourier-raffle/lists"}