Coder Social home page Coder Social logo

eugeniosales / coin-converter Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 506 KB

Exchange Rate Converter POC

TypeScript 89.16% HCL 10.84%
aws aws-apigateway aws-dynamodb aws-eventbridge aws-lambda aws-load-balancer aws-natgw aws-sqs aws-vpc microsservices nodejs typescript

coin-converter's Introduction

Welcome to my profile!

About Me

  • ๐Ÿ”ญ I am a Software Engineer with 5 years of professional experience
  • ๐Ÿ–ฅ๏ธ I have been mainly focused on AWS, Javascript and DevOps
  • โ˜๏ธ I am a big fan of Cloud Computing and that is the field I have been specializing in
  • ๐Ÿš€ 2X AWS Certified -> Credly
  • ๐Ÿ’ก Active leetcode practitioner

Skills

Connect with me

My Stats โšก

coin-converter's People

Contributors

eugeniosales avatar

Watchers

 avatar

coin-converter's Issues

[BE] Add Docs

Acceptance criteria:

  • Add solution architeture
  • Add Architectural Decision Record (ADR)
  • Add Products API Doc

[FE] Create products page

Description:

Create page to provide product currency update by exchange rate api visualization.

Acceptance criteria:

  • Create page with the image test properties
  • Add option to switch between currencies

[BE] Create microservice to provide current exchange rate info

Description:

Create job to provide current exchange rate info from the ExchangeRate table in DynamoDB.

Acceptance criteria:

  • Add lambda getExchangeRate of ExchangeRate domain
  • Add unit test to business and adapters layer
  • Create private subnets in two availability zones
  • Create Application Load Balancer and attach to private subnets
  • Attach lambda to private subnets

[BE] Create Circuit Breaker for External API unavailability handling

Description:

Add circuit breaker pattern to updateExchangeRate microservice (#3) for handling Exchange Rates External API unavailbility in job.

Acceptance criteria:

  • Create a table CircuitBreaker in DynamoDB to controll state over microsservice calls
  • The Circuit Breaker must contain 2 states: open and closed.
  • Add Circuit Breaker to updateExchangeRate microsservice
  • Mock "New Relic" event to monitor Circuit Breaker state regarding observability issues

[BE] Create job to save exchange rates from external API

Description:

Create job to get every single minute the exchange rates with BRL Base from exchangeRates API and save data in ExchangeRate table in DynamoDB.

Exchange Rates External API: https://exchangeratesapi.io/documentation/

Acceptance criteria:

  • Add rule update-exchange-rate-rule no EventBridge para agendamento de evento por minuto
  • Add SQS update-exchange-rate-queue to receive events from rule
  • Add lambda UpdateExchangeRate of ExchangeRate domain triggered by SQS
  • Create ExchangeRate table in DynamoDB
  • Add unit test to business and adapters layer

[BE] Add initial project setup

Acceptance criteria:

  • Add project base
  • Add clean archicteture structure
  • Add Jest to unit tests
  • Add tslint
  • Add serverless framework to deploy lambdas
  • Add terraform to create resources
  • Configure Github Actions for CI
  • Configure Github Actions for Terraform CD

[BE] Create microservice to load produtcts

Description:

Create microsservice to load produtcts from the Products table in DynamoDB. Also, the microsservice needs to make an asynchrounous call to getExchangeRate microservice to display the currency accordingly.

Acceptance criteria:

  • Create Product table in DynamoDB
  • Add lambda getProducts of Product domain
  • Add unit test to business and adapters layer
  • Crate Api Gateway and attach to getProducts lambda
  • Attach lambda to default VPC and private subnets
  • Create public subnet and Internet Gateway to provide internet access
  • Create NAT Gateway to public subnet
  • Create a route table to private subnets routing to NAT Gateway
  • Create a route table to public subnet routing InternetGateway

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.