Giter Site home page Giter Site logo

hillaryugwu / aws-cruddur Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 6.64 MB

AWS CRUDDUR Cloud Project - A full-stack Cloud/CRUD - based messaging app.

Home Page: https://ohary37.com

Shell 13.76% Python 32.94% HTML 0.75% CSS 12.25% JavaScript 35.76% Dockerfile 0.19% Ruby 1.93% TypeScript 2.42%
aws python reactjs ruby aws-lambda sql-db non-sql-db aws-cloudformation aws-sam flask cdk

aws-cruddur's Introduction

AWS Cruddur: A Cloud-based full stack application

  • Application: Cruddur
  • Cohort: 2023-A1

This is the starting codebase that will be used in the FREE AWS Cloud Project Bootcamp 2023

Cruddur Graphic

Cruddur Screenshot

Architecture

The architecture of the project is described in the below diagram: Cruddur architecture diagram

AWS services used

The application is deployed on AWS utilizing several AWS services. The backend uses a Flask-based Python application deployed to a Docker container running on ECS Fargate.

Frontend uses ReactJs statically hosted on S3, then cached and distributed via CloudFront.

The application is instrumented using X-Ray as an observability tool.

Amplify and Cognito are used for decentralized authentication.

RDS Postgres database is used for user data storage. DynamoDB and DynamoDB Stream are used as a single table design for real-time messaging and conversation updates.

A hosted zone on Route 53 is linked to the custom domain cloudproject.online. Application load balancer is used to forward requests to the frontend and backend containers.

Serverless image processing is implemented using API Gateway, two Lambda functions, presigned URL, S3 and CloudFront.

CodePipeline, CodeBuild and CodeDeploy are used for CI/CD.

The first version of the project was completed by partially clicking through the AWS console and utilising AWS CLI. Later on, the infrastructure was re-created using CloudFormation. Additionally, the serverless image processing was implemented with AWS CDK using Typescript.

Third-party tools that were used

Honeycomb's OpenTelemetry Flask instrumentation was used as an observability tool for distributed tracing. It was very straightforward to instrument and easy to use.

Rollbar was configured to be used for monitoring and bug-tracking.

Instructions

At the start of the bootcamp you need to create a new Github Repository from this template.

Journal

The /journal directory contains

Vscode setting.json

{
    "workbench.colorTheme": "Predawn",
    "workbench.iconTheme": "ayu",
    "python.defaultInterpreterPath": "/usr/bin/python3",
    "python.formatting.provider": "black",
    "workbench.editor.highlightModifiedTabs": true,
    "editor.formatOnSave": true,
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "code-runner.executorMap": {
        "python": "$pythonPath -u $fullFileName"
    },
    "code-runner.clearPreviousOutput": true,
    "code-runner.showExecutionMessage": false,
    "code-runner.ignoreSelection": true,
    "code-runner.saveFileBeforeRun": true,
    "editor.quickSuggestionsDelay": 100,
    "zenMode.centerLayout": false,
    "zenMode.fullScreen": false,
    "zenMode.hideLineNumbers": false,
    "zenMode.hideTabs": false,
    "editor.minimap.enabled": false,
    "workbench.settings.openDefaultSettings": true,
    "workbench.settings.editor": "json",
    "workbench.settings.useSplitJSON": true,
    "workbench.statusBar.feedback.visible": false,
    "workbench.startupEditor": "newUntitledFile",
    "[python]": {
        "editor.formatOnType": true
    }
}

aws-cruddur's People

Contributors

hillaryugwu avatar

Stargazers

 avatar Nicolae Spinu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.