{"id":23870078,"url":"https://github.com/yuyatinnefeld/cloud-native-kiosk","last_synced_at":"2026-03-09T08:02:03.244Z","repository":{"id":65807022,"uuid":"585279844","full_name":"yuyatinnefeld/cloud-native-kiosk","owner":"yuyatinnefeld","description":"🚀 Hands-On Project 🚀 | Cloud Native Kiosk Project","archived":false,"fork":false,"pushed_at":"2024-06-24T16:17:34.000Z","size":4404,"stargazers_count":2,"open_issues_count":24,"forks_count":3,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-07-31T00:54:59.277Z","etag":null,"topics":["argocd","cloud-native","gitops","k8s","vault"],"latest_commit_sha":null,"homepage":"","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/yuyatinnefeld.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-01-04T19:16:46.000Z","updated_at":"2023-11-15T16:15:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"8847f8f6-d42d-40ab-9f20-81157deb489a","html_url":"https://github.com/yuyatinnefeld/cloud-native-kiosk","commit_stats":{"total_commits":272,"total_committers":5,"mean_commits":54.4,"dds":"0.15808823529411764","last_synced_commit":"d1d6fcddff49701da214f7847cb21e18551873ff"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yuyatinnefeld/cloud-native-kiosk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuyatinnefeld%2Fcloud-native-kiosk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuyatinnefeld%2Fcloud-native-kiosk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuyatinnefeld%2Fcloud-native-kiosk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuyatinnefeld%2Fcloud-native-kiosk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuyatinnefeld","download_url":"https://codeload.github.com/yuyatinnefeld/cloud-native-kiosk/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuyatinnefeld%2Fcloud-native-kiosk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: 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":["argocd","cloud-native","gitops","k8s","vault"],"created_at":"2025-01-03T13:52:11.238Z","updated_at":"2026-03-09T08:02:03.224Z","avatar_url":"https://github.com/yuyatinnefeld.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloud Native Kiosk App on GCP / AWS\n\n![Screenshot](/img/cnk-architecture.png)\n\n## Overview\nThis GitHub project focuses on learning cloud native technologies and frameworks. The objective is to gain hands-on experience with the latest tools and techniques for building scalable and resilient cloud-based applications. Topics covered include Docker, Kubernetes, GCP, AWS, Terraform, and best practices for security, testing, and CI/CD. The project provides interactive, hands-on learning through practical exercises and real-world scenarios. Whether you're a beginner or experienced developer, this project offers the knowledge and skills needed to become proficient in cloud computing.\n\n## Cloud Native Kiosk (cnk)\nThe cloud native kiosk is a monorepo project built using the Python frameworks Flask (for the frontend) and FastAPI (for the backend). You can view a live demo of the project on GCP at http://xxx.com. The app has a login system, where guests can browse, search, and add products to the cart, but only registered users can checkout and make payments.\n\n## Architecture\n\n#### Container Diagram\n![Screenshot](/img/container-diagram.png)\n\n\n#### Component Diagram\n![Screenshot](/img/component-diagram.png)\n\n\n## Project Source Code Documentation\n\n### [CNK Python Backend Application](https://yuyatinnefeld.com/cloud-native-kiosk/docs/app/routes/users/crud)\n\n## Motivation\nThe author decided to continue this project for the following reasons:\n- To build a modern Python monorepo project with Flask and FastAPI that can serve as a template for your own business cases.\n- To gain hands-on experience with cloud native and GitOps tools such as k8s, Prometheus, and ArgoCD.\n- To learn about cloud technologies like GCP, AWS, Terraform, and GitHub.\n\n## Application Use Cases\n- Users can view items available on the kiosk.\n- Users can create and manage their account.\n- Users can add items to their shopping cart.\n\n## Requirements and Technology Stack:\n- Frontend Framework: Flask\n- Backend Framework: FastAPI\n- Deployment Manger: Kubernetes\n- Continuous Integration Tool: GitHub Actions\n- Continuous Delivery Tool: ArgoCD\n- Hosting: Google Cloud (with a hybrid cloud setup using GCP, RPi, and AWS)\n\n\n\n## 1. Local Debugging (Application)\n```bash\ncat .vscode/launch.json\n```\n\n## 2. Local Testing (Cluster)\n\n### Running a k8s Cluster\n```bash\n# deploy a local k8s cluster\nminikube start --cpus 2 --memory 8192\nminikube profile list\nminikube ip\n\n# enable minikube ingress controller to use ./deploy/ingress.yaml\nminikube addons enable ingress\n\n# verify the ingress controller\nkubectl get pods -n ingress-nginx | grep ingress-nginx-controller\n```\n\n### Update Local DNS for Local Domain Access\n```bash\necho -e \"$(minikube ip)\\cnk.com\" | sudo tee -a /etc/hosts\n```\n\n### 2.1. Testing Manually Deployment\n\n```bash\n./deploy/k8s/README.md\n```\n\n### 2.2. Testing with ArgoCD\n\n```bash\n./argocd/REAdME.md\n```\n\n## 3. Monitoring\n```bash\n# install monitoring tool (prometheus + grafana)\nbash monitoring/prometheus.sh\n\n# start grafana\nbash monitoring/grafana.sh\n\n# open port\nopen http://localhost:3000\n```\n\n## 4. Clean up\n```bash\nkubectl delete -f deploy/ingress.yaml\nkubectl delete -f deploy/service.yaml\nkubectl delete -f deploy/pods.yaml\n\nminikube delete --all\n```\n\n## Test DB Connection\n\n```bash\n# TEST IN CLOUD SHELL\nINSTANCE_NAME=\"cnk-sql-instance\"\ngcloud sql connect ${INSTANCE_NAME} --user=postgres --quiet\n\n# TEST WITH PROXY\n\n# download the Cloud SQL Proxy\ncurl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64\n\n# make the proxy executable\nchmod +x cloud_sql_proxy\n\n# create proxy connection\n./cloud_sql_proxy -instances=${INSTANCE_NAME}=tcp:3306\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuyatinnefeld%2Fcloud-native-kiosk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuyatinnefeld%2Fcloud-native-kiosk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuyatinnefeld%2Fcloud-native-kiosk/lists"}