{"id":16287693,"url":"https://github.com/akrantz01/wafflehacks-deployment-workshop-2023","last_synced_at":"2026-04-10T04:56:29.445Z","repository":{"id":175110694,"uuid":"653355267","full_name":"akrantz01/wafflehacks-deployment-workshop-2023","owner":"akrantz01","description":"A workshop teaching you how to deploy an application while fixing common problems along the way","archived":false,"fork":false,"pushed_at":"2023-06-25T03:15:26.000Z","size":169,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-18T18:52:15.918Z","etag":null,"topics":["cors","docker","flask","flyio","react","vercel","vite","wafflehacks"],"latest_commit_sha":null,"homepage":"https://wafflodo-demo.vercel.app/","language":"TypeScript","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/akrantz01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2023-06-13T22:45:10.000Z","updated_at":"2023-06-27T14:59:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"6c8581f4-08e3-4bca-9c14-166dd40052f9","html_url":"https://github.com/akrantz01/wafflehacks-deployment-workshop-2023","commit_stats":null,"previous_names":["akrantz01/wafflehacks-deployment-workshop-2023"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akrantz01/wafflehacks-deployment-workshop-2023","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akrantz01%2Fwafflehacks-deployment-workshop-2023","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akrantz01%2Fwafflehacks-deployment-workshop-2023/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akrantz01%2Fwafflehacks-deployment-workshop-2023/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akrantz01%2Fwafflehacks-deployment-workshop-2023/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akrantz01","download_url":"https://codeload.github.com/akrantz01/wafflehacks-deployment-workshop-2023/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akrantz01%2Fwafflehacks-deployment-workshop-2023/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276204837,"owners_count":25602738,"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-21T02:00:07.055Z","response_time":72,"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":["cors","docker","flask","flyio","react","vercel","vite","wafflehacks"],"created_at":"2024-10-10T19:45:50.043Z","updated_at":"2025-09-21T06:51:27.005Z","avatar_url":"https://github.com/akrantz01.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [WaffleHacks][] 2023 Cloud Deployment Workshop\n\nHave you ever gotten [CORS][] errors, cookie problems, or just ran into trouble\nmaking your incredible app publicly accessible? Worry no longer! We’ll teach\nyou how to deploy your frontend and backend to the cloud so it can go viral.\n\nIn this workshop, we’ll be deploying a simple todo list app consisting of a \nReact (using Vite) frontend and Flask backend connected to an SQL database. \nThe backend and database will be running on Fly.io, a platform for hosting \nDocker containers. The frontend will be hosted on Vercel, the creator of Next.js\nand static site hosting platform.\n\nAfter attending this workshop, you'll know how to:\n- manage configuration according to the [12 Factor App][] specification\n- prepare database migrations using Alembic\n- containerize services using Docker\n- fix [CORS][] issues\n- setup cookie-based authentication\n- use structured logging to debug remotely deploy apps\n\n## Before the workshop\n\nThis workshop assumes you have some familiarity with Python, \nJavaScript/TypeScript, and the command line. None of the language concepts will\nbe explained since we lack the time to do so, and this workshop is focused\non the time after the application is developed. We will only be making small \nchanges to the service to ensure it can be deployed.\n\nIf you need help with writing your application, attend one of our other\nexcellent workshops!\n\nPrior to the workshop, you should do the following:\n- Register for accounts on [GitHub][], [Fly.io][], and [Vercel][]\n  - Note: Fly.io may require a credit card to register, but you will not be \n    charged as we will be staying within the free tier.\n- Install [Fly CLI][]\n- Install [Vercel CLI][]\n- Install [Python Poetry][]\n\n## After the workshop\n\nAll the stages of the code can be found in the following branches:\n\n- [starter](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/main)\n- [cors](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/1-cors) ([view changes](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/compare/main...1-cors))\n- [cookies](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/2-cookies) ([view changes](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/compare/1-cors...2-cookies))\n- [config](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/3-config) ([view changes](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/compare/2-cookies...3-config))\n- [migrations](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/4-migrations) ([view changes](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/compare/3-config...4-migrations))\n- [containers](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/5-container) ([view changes](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/compare/4-migrations...5-container))\n- [deployment](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/6-deploy) ([view changes](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/compare/5-container...6-deploy))\n- [logging](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/tree/7-logging) ([view changes](https://github.com/akrantz01/wafflehacks-deployment-workshop-2023/compare/6-deploy...7-logging))\n\n[WaffleHacks]: https://wafflehacks.org\n[CORS]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS\n[12 Factor App]: https://12factor.net/\n[GitHub]: https://github.com/\n[Fly.io]: https://fly.io/\n[Vercel]: https://vercel.com/\n[Fly CLI]: https://fly.io/docs/hands-on/install-flyctl/\n[Vercel CLI]: https://vercel.com/docs/cli\n[Python Poetry]: https://python-poetry.org/docs/#installation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakrantz01%2Fwafflehacks-deployment-workshop-2023","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakrantz01%2Fwafflehacks-deployment-workshop-2023","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakrantz01%2Fwafflehacks-deployment-workshop-2023/lists"}