Skip to content

Repository files navigation


curzy

Check how much it costs to buy some crypto.
https://curzy.pages.dev/

Report Bug · Request Feature

About The Project

If you are sending some money to a crypto exchange, there is always a fee. If you do it from your bank account, there is a fee. If you do it by card, there is a fee 😞. Curzy will aggregate this for you. No more counting of fees by yourself 🎉. You are welcome.

(back to top)

Built and Deploy

The project is composed of multiple components:

  • Frontend website is a React app deployed on cloudflare pages,
  • API fetching data about rates is built with cloudflare workers,
  • Atlas MongoDB is used as a database to store data about rates,
  • Feeder is a scheduled job which is hosted on GCP app engine - it scrapes data from institutions and saves it to MongoDB,
  • Terraform is used to manage infrastructure.

Cloudflare workers puppeteer MongoDB Cloudflare GCP Terraform

(back to top)

Overview

General overview of the project architecture.

flowchart TD
    A["⏰ Feeder"] -- Store data from website --> B[("Database")]
    B -- Query data from database --> C["Curzy API Worker"]
    C -- Fetches data --> D["Website"]
    n1["Revolut"] -- Scrape --> A
    n2["CSOB"] -- Scrape --> A
    n3["Airbank"] -- Scrape --> A
    n1@{ shape: doc}
    n2@{ shape: doc}
    n3@{ shape: doc}
Loading

(back to top)

Getting Started

You can run this project locally (even if it doesn't make much sense :).

Prerequisites

  • Docker with docker-compose

Setup and Run

  1. Copy env files, remove .example postfix, and fill variables in each sub-project:
    • ./apps/feeder/.env.example - feeder
    • ./workers/curzy-api/.dev.vars.example - API
    • ./website/.env.example - website
  2. Run docker-compose up - this will spin up a MongoDB instance and the website
  3. Run npm run start --prefix ./workers/curzy-api to start API
  4. Run npm i --prefix ./apps/feeder to install dependencies
  5. Run npm run dev --prefix ./apps/feeder to start feeder

Usage

  1. Initiate the feeder to load some data into the database by visiting http://localhost:8081/jobs/all
  2. Open the app in a browser on http://localhost:3000/
  3. Check if the API is running on http://localhost:8000/swagger

Showcase

(back to top)

Roadmap

  • Deploy project
  • Add Support for automatic deployment
  • Multi-language Support
    • Czech
    • English
  • Support more banks, payment methods

(back to top)

Contact

Libor Váchal - LinkedIn

Project Link: https://github.com/lipelix/curzy

(back to top)

Acknowledgments

Useful links and other things worth mentioning.

(back to top)

About

Compare and explore the cheapest ways to buy Bitcoin(BTC) with Czech crowns(CZK).

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages