{"id":30134499,"url":"https://github.com/marcelfrey29/iu-docc-project-cloud-computing","last_synced_at":"2026-04-10T06:35:47.601Z","repository":{"id":271224678,"uuid":"865581761","full_name":"marcelfrey29/IU-DOCC-Project-Cloud-Computing","owner":"marcelfrey29","description":"Development of a local web application to be migrated to the AWS Cloud. ","archived":false,"fork":false,"pushed_at":"2025-04-11T14:36:05.000Z","size":5629,"stargazers_count":0,"open_issues_count":16,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-07T23:53:26.921Z","etag":null,"topics":["aws","cloudformation","cloudfront","docker","docker-compose","dynamodb","fiber","go","golang","lambda","learning","nextui","nodejs","react","s3","software-engineering"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/marcelfrey29.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-30T19:09:13.000Z","updated_at":"2025-01-06T11:05:28.000Z","dependencies_parsed_at":"2025-01-06T11:52:16.276Z","dependency_job_id":null,"html_url":"https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing","commit_stats":null,"previous_names":["marcelfrey29/iu-docc-project-cloud-computing"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/marcelfrey29/IU-DOCC-Project-Cloud-Computing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelfrey29%2FIU-DOCC-Project-Cloud-Computing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelfrey29%2FIU-DOCC-Project-Cloud-Computing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelfrey29%2FIU-DOCC-Project-Cloud-Computing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelfrey29%2FIU-DOCC-Project-Cloud-Computing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcelfrey29","download_url":"https://codeload.github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelfrey29%2FIU-DOCC-Project-Cloud-Computing/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269788221,"owners_count":24475892,"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-08-10T02:00:08.965Z","response_time":71,"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":["aws","cloudformation","cloudfront","docker","docker-compose","dynamodb","fiber","go","golang","lambda","learning","nextui","nodejs","react","s3","software-engineering"],"created_at":"2025-08-10T21:12:14.113Z","updated_at":"2025-12-30T20:06:08.149Z","avatar_url":"https://github.com/marcelfrey29.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IU-DOCC-Project-Cloud-Computing\n\n[![Node.js CI](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/actions/workflows/ci-node.yml/badge.svg)](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/actions/workflows/ci-node.yml)\n[![Go CI](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/actions/workflows/ci-go.yml/badge.svg)](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/actions/workflows/ci-go.yml)\n[![CFN-Lint](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/actions/workflows/cfn-lint.yml/badge.svg)](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/actions/workflows/cfn-lint.yml)\n[![SAST](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/actions/workflows/sast.yml/badge.svg)](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/workflows/sast.yml)\n\n## Travel Guides\n\n![Application Demo](docs/assets/demo.png)\n\n- [x] Single Page Web Application (**React, NextUI, TypeScript**)\n- [x] Backend with logic and NoSQL Database (**Golang, Fiber, Zap**)\n- [x] Local Version (**Docker, Docker-Compose, Nginx, DynamoDB-Local**)\n- [x] Cloud Version - Refactoring to Serverless (**AWS Lambda, API Gateway, DynamoDB, S3, CloudFront, CloudWatch**)\n- [x] Cloud Deployment to AWS via Infrastructure as Code (**CloudFormation**)\n- [x] Security Scanning for OWASP Top 10 Issues (**Bearer**)\n- [x] HTTP Collection to be used for Integration Testing (**Bruno**)\n- [x] Quality Checks via CI (**GitHub Actions, CFN Lint**)\n\n## Documentation\n\n- [Project Idea](docs/01-Idea.md)\n- [Requirements](docs/02-Requirements.md)\n- [Local Application](docs/03-Local-Application.md)\n- [Cloud Migration Planning](docs/04-Plan-Cloud-Migration.md)\n- [Cloud Migration \u0026 Deployment](docs/05-Cloud-Migration.md)\n\n## Requirements\n\n- Node.js LTS \u003e= 20.0.0\n- Golang \u003e= 1.23.0\n- Docker (incl. Docker Compose)\n- AWS CLI must be installed and configured\n    - For local execution (e.g. DynamoDB Local) Dummy-Access-Keys can be used\n    ```conf\n    # ~/.aws/credentials\n    [default]\n    aws_access_key_id = XXXXX\n    aws_secret_access_key = XXXXX\n    ```\n- [Bearer CLI](https://github.com/Bearer/bearer) (Optional) must be installed for Security Scanning (SAST)\n    - Run SAST with `bearer scan .` in project root\n- [Bruno](https://www.usebruno.com/) (Optional) as HTTP Client\n    - Collection with Assertions is located in `tools/bruno`\n- AWS Account (To deploy the Cloud Version of the Application)\n    - The AWS CLI must be configured with real credentials\n- [AWS CloudFormation Linter](https://github.com/aws-cloudformation/cfn-lint) (Optional)\n\n## Running the Project \n\n### Run Locally\n\n\u003e [!CAUTION]\n\u003e To run the local version you must switch to [Version 1.0.0 (Local Implementation)](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/tree/v1.0.0).\n\u003e\n\u003e The `main` branch (and [Version 2.0.0 (Cloud Migration)](https://github.com/marcelfrey29/IU-DOCC-Project-Cloud-Computing/tree/v2.0.0)) contain the source code of the cloud migration. \n\u003e Local execution is currently not possible because the backend code is designed to run in AWS Lambda only.\n\nAll services can be managed at once via Docker Compose.\n\n\u003e [!TIP]\n\u003e Quick-Start: Run `docker compose up --build -d`\n\n```bash\n# Run latest version of all services\ndocker compose up --build\ndocker compose up --build -d\n\n# Run all services\ndocker compose up\ndocker compose up -d\n\n# Remove all services\ndocker compose down\n\n# Stop \u0026 Start\ndocker compose stop\ndocker compose start\n\n# Get logs when running in detached mode\n# docker logs \u003ccontainer_name\u003e\ndocker logs iu-project-cc-backend\n```\n\n#### Initial Setup of DynamoDB Local\n\nWhen the DynamoDB Local Container started for the first time, we need to create a Table manually (just like we have to when using real AWS infrastructure).\nTo perform this task, the `tools/create-local-table.sh` script can be used. \n\n\u003e [!IMPORTANT]\n\u003e DynamoDB Local must be running.\n\n```bash\n# Create Table\n./tools/create-local-table.sh\n\n# Verify Table Creation\naws dynamodb list-tables --endpoint-url http://localhost:8000\n```\n\nExpected Output: \n```json\n{\n    \"TableNames\": [\n        \"TravelGuides\"\n    ]\n}\n```\n\n### Running on AWS\n\n\u003e [!CAUTION]\n\u003e Not all services are part of the AWS Free Tier, so costs can occur. Deploy at your own risk. \n\n#### Infrastructure Deployment\n\n```bash\n# First-Time Stack Creation (One-Time!)\n./create-stack.sh\n\n# Stack Updates\n./update-stack.sh\n\n# Stack Details\naws cloudformation describe-stacks --stack-name TravelGuides\n\n# Access Outputs\naws cloudformation describe-stacks --stack-name TravelGuides --query 'Stacks[0].Outputs[?OutputKey==`WebAppBucketName`].OutputValue' --output text\n\n# Run Linter\ncfn-lint cloudformation/template.yaml\n```\n\n#### Application Deployment\n\n```bash\n# Update Everything\n./update.sh\n\n# Deploy Web App\n./deploy-web-app.sh\n\n# Upload Lambda Code to S3 and deploy it\n./deploy-backend.sh\n```\n\n#### Delete AWS Resources\n\n```bash\n# Delete \n./delete-stack.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelfrey29%2Fiu-docc-project-cloud-computing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcelfrey29%2Fiu-docc-project-cloud-computing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelfrey29%2Fiu-docc-project-cloud-computing/lists"}