Code Monkey home page Code Monkey logo

agruezo / cloudresumechallenge Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 2.0 4.16 MB

Project that involved creating a resume website, deploying AWS resources (S3 buckets, Cloudfront distributions, an API Gateway, a Lambda function, and a DynamoDB table) via IaC using Terraform, Unit Test via PyTest, End to End Test via Cypress, and CI/CD via GitHub Actions

Home Page: https://www.gruezo.com

HCL 7.95% Python 0.45% JavaScript 16.08% CSS 60.40% HTML 15.12%
css3 html5 aws-cloudfront aws-s3 cypress-io github-actions terraform aws-api-gateway aws-dynamodb aws-lambda aws-route53 javascript

cloudresumechallenge's Introduction

CI/CD


☁️ Cloud Resume Challenge ☁️

📓 Requirements


The full details of the challenge can be found in the link below:

https://cloudresumechallenge.dev/


This is a summary of the actual code related tasks I had to complete for the Cloud Resume Challenge:


  1. HTML

    • Create a resume site written in HTML
  2. CSS

    • The resume site should be styled with CSS
  3. Static S3 Website

    • Deploy as a static S3 website
  4. HTTPS

    • Make the site secure with HTTPS via an Amazon Cloudfront distribution
  5. DNS

    • Point a custom DNS domain to the Cloudfront distribution
    • Amazon Route53 was used in my case
  6. JavaScript

    • Add a visitor counter to the site using JavaScript
  7. Database

    • The visitor counter should have it's count retrieved and updated in a database
    • Amazon DynamoDB was the database of choice
  8. API

    • Communicate with datbase via an API rather than the JavaScript code itself
    • Amazon API Gateway was used to create the service that triggered an Amazon Lambda function that retrieved and updated the database
  9. Python

    • Create an Amazon Lambda function using Python that retrieved the count from and updated the count in the database
  10. Tests

    • Test the code to make sure it is functioning properly
    • A PyTest unit test was used to test the python code for the lambda function
    • A Cypress end-to-end test was used to test the API created
  11. Infrastructure as Code

    • Provision the API Gateway, Lambda function, and DynamoDB using IaC
    • Terraform was the tool of choice in my case, not only to deploy the API resources, but to also deploy the resume website resources and a custom API domain name as well (Route53, Cloudfront distributions, S3 buckets)
  12. Source Control

    • Updates should be made automatically rather than through calls from your laptop
    • GitHub was the obvious tool of choice in my case
  13. CI/CD Backend

    • Any updates to the infrastructure or Python code pushed should automatically be packaged and deployed onto AWS as long as it passes testing
    • GitHub Actions was used to handle this process
  14. CI/CD Frontend

    • Any new website code pushed would automatically update the S3 bucket with the new code as long as it passes testing
    • A Cloudfront invalidation was also triggered after a successful upload to the S3 bucket in order to publish the changes immediately
    • GitHub Actions was also used to handle this process

cloudresumechallenge's People

Contributors

agruezo avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

cloudresumechallenge's Issues

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.