Skip to content

Mayhul-Jindal/crypto-alert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto Alert System

  • A complete system to create alerts for crypto currency prices.
  • No frameworks are used. Everything is architected in Go using hex architecture and DDD design principles.
  • Follow the setup instructions to run the project.
  • Then after creating a demo alert, don't forget to check your spam email for the alert notification :)

Setup

  1. Install docker and docker-compose on your system by following official docs

  2. Clone the repo

git clone https://github.com/Mayhul-Jindal/crypto-alert
  1. Run docker-compose up
docker-compose up
  1. Use this postman instance to play with the API
https://www.postman.com/mission-physicist-26981670/workspace/crypto-alert-system/request/19360543-0bcd8c0d-640c-431f-bd15-fd70bd1fcc8d?tab=headers

System design

High level

Low level

  • Alert Service

  • Email Service

Database Design

Postgres

Redis

Todos

  • Create a rest API endpoint for the user’s to create an alert alerts/create/
  • Create a rest API endpoint for the user’s to delete an alert alerts/delete/
  • Create a rest API endpoint to fetch all the alerts that the user has created.
  • The response should also include the status of the alerts (created, triggered, completed, deleted)
  • Paginate the response.
  • Include filter options based on the status of the alerts
  • binance’s websocket connection to get real time price updates
  • When the price of the coin reaches the price specified by the users, send an email to the user that the target price has been hit smtp
  • Add a caching layer redis
  • Add user authentication to the endpoints. Use JWT tokens.
  • Go
  • Use Postgres to store data and redis for sorted sets (or any DB you feel that gets the job done)
  • Kafka as a message broker for the task to send emails /print the output
  • Bundle everything inside a docker-compose file so it’s easier for us to test.
  • Document your solution in README.md file. Consider adding the following details
  • Steps to run the project (eg: docker-compose up)
  • Document the endpoints
  • Document the solution for sending alerts
  • edraw max --> work breakdown structure
  • [ ]