Skip to content

lipelix/curzy

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

License

Stars

Watchers

Forks

Packages

No packages published