{"id":18816036,"url":"https://github.com/0-vortex/open-sauced-catsup-app-test","last_synced_at":"2025-09-02T11:05:10.474Z","repository":{"id":151933430,"uuid":"457069101","full_name":"0-vortex/open-sauced-catsup-app-test","owner":"0-vortex","description":"Experimenting with probot and serverless for hot.opensauced.pizza","archived":false,"fork":false,"pushed_at":"2022-02-23T17:50:43.000Z","size":637,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-22T06:11:35.021Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/0-vortex.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"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}},"created_at":"2022-02-08T19:11:15.000Z","updated_at":"2022-02-15T00:08:04.000Z","dependencies_parsed_at":"2023-05-18T02:45:24.215Z","dependency_job_id":null,"html_url":"https://github.com/0-vortex/open-sauced-catsup-app-test","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/0-vortex/open-sauced-catsup-app-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-vortex%2Fopen-sauced-catsup-app-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-vortex%2Fopen-sauced-catsup-app-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-vortex%2Fopen-sauced-catsup-app-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-vortex%2Fopen-sauced-catsup-app-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0-vortex","download_url":"https://codeload.github.com/0-vortex/open-sauced-catsup-app-test/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-vortex%2Fopen-sauced-catsup-app-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273272560,"owners_count":25075985,"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-09-02T02:00:09.530Z","response_time":77,"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":"2024-11-07T23:52:02.777Z","updated_at":"2025-09-02T11:05:10.357Z","avatar_url":"https://github.com/0-vortex.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003cimg alt=\"Open Sauced\" src=\"https://i.ibb.co/7jPXt0Z/logo1-92f1a87f.png\" width=\"300px\"\u003e\n  \u003ch1\u003e🍕 Open Sauced Catsup App Test 🍕\u003c/h1\u003e\n  \u003cstrong\u003eThe path to your next Open Source contribution\u003c/strong\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/0-vortex/open-sauced-catsup-app-test/actions/workflows/release.yml\"\u003e\n    \u003cimg src=\"https://github.com/0-vortex/open-sauced-catsup-app-test/actions/workflows/release.yml/badge.svg\" alt=\"Release\" style=\"max-width: 100%;\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/0-vortex/open-sauced-catsup-app-test/actions/workflows/compliance.yml\"\u003e\n    \u003cimg src=\"https://github.com/0-vortex/open-sauced-catsup-app-test/actions/workflows/compliance.yml/badge.svg\" alt=\"Compliance\" style=\"max-width: 100%;\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/0-vortex/open-sauced-catsup-app-test/actions/workflows/codeql-analysis.yml\"\u003e\n    \u003cimg src=\"https://github.com/0-vortex/open-sauced-catsup-app-test/actions/workflows/codeql-analysis.yml/badge.svg\" alt=\"CodeQL\" style=\"max-width: 100%;\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/languages/code-size/0-vortex/open-sauced-catsup-app-test\" alt=\"GitHub code size in bytes\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/commit-activity/w/0-vortex/open-sauced-catsup-app-test\" alt=\"GitHub commit activity\"\u003e\n  \u003ca href=\"https://github.com/0-vortex/open-sauced-catsup-app-test/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/0-vortex/open-sauced-catsup-app-test\" alt=\"GitHub issues\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/0-vortex/open-sauced-catsup-app-test/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/0-vortex/open-sauced-catsup-app-test.svg?style=flat\" alt=\"GitHub Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.gg/U2peSNf23P\"\u003e\n    \u003cimg src=\"https://img.shields.io/discord/714698561081704529.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2\" alt=\"Discord\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/saucedopen\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/saucedopen?label=Follow\u0026style=social\" alt=\"Twitter\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 📖 Prerequisites\n\nIn order to run the project locally we need `node\u003e=16` and `npm\u003e=8` installed on our development machines.\n\n## 🖥️ Local development\n\nTo install the application:\n\n```shell\nnpm ci\n```\n\nBefor you can run the application we need to start the smee proxy:\n\n```shell\nnpm run proxy\n```\n\nTo start a local copy of the app on port `3000`:\n\n```shell\nnpm start\n```\n\nThe preconfigured app is of almost no use to anyone as it can only be installed by the preconfigured user and send webhooks to a dead server.\n\nIt is quite possible that some of the secrets are rendered invalid as well. THey serve as placeholders and should be replaced with values provided by your testing app.\n\n## 📦 Deploy to production\n\n### Cloudflare account\n\nSet up a cloudflare account and enable workers, change `account_id` in [wrangler.toml](./wrangler.toml) to your account id.\n\nGo to your workers dashboard and create a new worker, select any template, adjust `name` in [wrangler.toml](./wrangler.toml) if it is taken. \n\nSelect the \"Settings\" tab on your newly created worker and click \"Variables\", add the following placeholders for now:\n- `APP_ID`\n- `APP_PK`\n- `DISCORD_URL`\n- `CLIENT_ID`\n- `CLIENT_SECRET`\n- `WEBHOOK_SECRET`\n\n**Note**: At the very end of this process you will have to encrypt all the values for the publish command to work.\n\nCopy the \"Routes\" URL provided by the worker for the next part.\n\n### GitHub App\n\nCreate a new GitHub application with scopes `issues:write` and `metadata:read` while also enabling tracking events.\n\nUpon creation you should have plain-text values for `APP_ID`, `CLIENT_ID`.\n\nClick the \"Generate a new client secret\" button and copy the value of `CLIENT_SECRET`.\n\nIn the webhook return URL copw the value of your worker route as described in the last step of the Cloudflare setup.\n\nIt is advised you generate the `WEBHOOK_SECRET` using the following command:\n\n```shell\n# random key strokes can work too if you don't have ruby(??)\nruby -rsecurerandom -e 'puts SecureRandom.hex(20)'\n```\n\nNow, go to the very bottom and click \"Generate a new private key\" and open a terminal in the location of the downloaded file.\n\nRename this file to `private-key.pem` for the next command to work:\n\n```shell\nopenssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in private-key.pem -out private-key-pkcs8.key\n```\n\nCopy the contents of `private-key-pkcs8.key` to `APP_PK`.\n\n### Discord\n\nGo to your server of choice, click \"Settings\" and then \"Integrations\", create a new webhook and copy the URL and paste that value into `DISCORD_URL`.\n\nNow you are good to use the wrangler release workflows and deploy to production!\n\n### Terminal publish\n\nLogin to cloudflare with your account credentials, advised you let the browser open an OAuth dialog with:\n\n```shell\nnpm run wrangler -- login\n```\n\nNow you can test all the variables are correct by publishing from the terminal:\n\n```shell\n# npm run wrangler -- publish\nnpm run publish\n```\n\nOpen up a production real time log using:\n\n```shell\nnpm run wrangler -- tail\n```\n\n### CI publish\n\nCreate a new GitHub actions secrets named `CF_API_TOKEN`, get its value from Cloudflare's [create a new token](https://dash.cloudflare.com/profile/api-tokens) using the \"Edit Cloudflare Workers\" template.\n\nPush new code to the server, after a release the new code should be sent to the server and instantly propagate.\n\n## 🤝 Contributing\n\nWe encourage you to contribute to Open Sauced! Please check out the [Contributing guide](https://docs.opensauced.pizza/contributing/introduction-to-contributing/) for guidelines about how to proceed.\n\n\u003cimg align=\"right\" src=\"https://i.ibb.co/CJfW18H/ship.gif\" width=\"200\"/\u003e\n\n## 🍕 Community\n\nGot Questions? Join the conversation in our [Discord](https://discord.gg/U2peSNf23P).  \nFind Open Sauced videos and release overviews on our [YouTube Channel](https://www.youtube.com/channel/UCklWxKrTti61ZCROE1e5-MQ).\n\n## 🎦 Repository Visualization\n\n[![Visualization of this repository](./public/diagram.svg)\n](./src)\n\n## ⚖️ LICENSE\n\nMIT © [Open Sauced](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0-vortex%2Fopen-sauced-catsup-app-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0-vortex%2Fopen-sauced-catsup-app-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0-vortex%2Fopen-sauced-catsup-app-test/lists"}