Giter Club home page Giter Club logo

smartrr-currency-converter's Introduction

Smartrr - Currency Converter

Test

This is my take-home exam for the position of Back End Engineer (TypeScript) at Smartrr.

Technologies

Although the stack chosen for this project is a bit too much for this specific application, I wanted to pick tools that would be applicable on a real Smartrr project (microservices, queues, etc), that is what made the biggest impact on the final decision.

  • Backend

    • Postgres (database)
    • Redis (queue and message broker)
    • Nest (application framework)
    • GraphQL (entrypoint for the api)
    • Jest (testing)
  • Frontend

    • React
    • Tailwind
    • Urql
    • GraphQL Codegen

Architecture

The backend is composed of two different applications, which run independently of each other and communicate via a message broker (Redis).

  • API

    • Handles requests from the web via GraphQL
    • Handles subscriptions via GraphQL and WebSockets (for real-time updates)
  • Worker

    • Handles the conversion queue (retries, circuit breaks, paralellism, timeouts)
    • Handles the cron (runs hourly and enqueues conversions to be processed)

Below is a flow diagram that represents the entire application architecture:

flowchart

Running the application

  1. Copy or rename the .env.example file to .env
  2. Replace <YOUR_RAPID_API_KEY> with your Rapid API key inside the env file

TIP: You can do both steps with a single command:

sed 's/<YOUR_RAPID_API_KEY>/REAL_API_KEY/g' .env.example > .env
  1. Run docker compose up
  2. Wait for the containers to be up
  3. Open http://localhost:3000

Thanks

I had a great time diving into this take-home project. Really appreciate the opportunity to showcase my skills for this position. Hope you like what you see!

Cheers,

Humberto.

smartrr-currency-converter's People

Contributors

hpiaia 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.