{"id":17236612,"url":"https://github.com/illright/demo-crypto-exchange","last_synced_at":"2026-01-20T01:56:26.235Z","repository":{"id":40634675,"uuid":"496166377","full_name":"illright/demo-crypto-exchange","owner":"illright","description":"A demo application for placing trading orders with realtime updates","archived":false,"fork":false,"pushed_at":"2024-01-10T00:23:00.000Z","size":1273,"stargazers_count":0,"open_issues_count":7,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-12T13:47:28.398Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/illright.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-25T09:32:21.000Z","updated_at":"2022-05-25T09:34:45.000Z","dependencies_parsed_at":"2022-09-14T10:11:55.422Z","dependency_job_id":null,"html_url":"https://github.com/illright/demo-crypto-exchange","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illright%2Fdemo-crypto-exchange","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illright%2Fdemo-crypto-exchange/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illright%2Fdemo-crypto-exchange/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illright%2Fdemo-crypto-exchange/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/illright","download_url":"https://codeload.github.com/illright/demo-crypto-exchange/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247451666,"owners_count":20940944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T05:36:33.316Z","updated_at":"2026-01-20T01:56:26.186Z","avatar_url":"https://github.com/illright.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Hi,\n\nPlease find below the exercise which is timeboxed to max 4 hours starting from now. The goal of the assignment is to demonstrate your design and coding skills. You can use your preferred programming language, libraries and frameworks.\n\nGood luck!\n\n---\n\nCryptocurrency Exchange\n\nA cryptocurrency exchange accepts user orders, matches the orders and settles the (crypto)currencies. The goal of this assignment to create a simplified exchange front-end and back-end.\n\n1. Place order\n\nAn order consists of a price, size, currency pair (e.g. BTC/USD) and the side (buy or sell). Price is expressed in base currency (e.g. USD) and size is expressed in traded currency (e.g. BTC).\n\nBuild an user interface to submit an order. Pay attentention to responsiveness, usability and seperaton of concerns (e.g. styling should be done with CSS).\n\nOnce the order is submitted in the front-end, the order is send to the back-end (http or websocket).\nIf you don't know how a (crypto) exchange front-end can look like, please have a look at https://www.binance.com/en/trade/BTC_USDT.\n\n2. Backend-end\n\nThe back-end matches placed sell orders with existing buy orders in the orderbook and placed buy orders with existing sell orders in the orderbook.\nThe front-end orderbook (see section 3) should be notified by the back-end if an existing order is traded.\nAn new buy order trades with existing sell orders if the price equals or is higher than existing sell orders, or in case of a new sell order, if the price equals or is lower than existing buy orders.\nIf an existing order is traded, the existing order is removed from the front-end orderbook (see section 3).\n\nCreate a simple back-end which interacts with the front-end by means of http or websocket communication.\n\n3. Orderbook\n\nThe orderbook displays the buy orders and sell orders. Any new placed order which does not trade directly with an order from the orderbook (see section 2) is added to the orderbook by the back-end and, notified to the front-end and displayed by the front-end. The front-end orderbook sorts the buy orders by price descending and the sell orders by price ascending.\n\nAdd an orderbook to the user interface created at section 1. Pay attention to responsiveness, usability and seperation of concerns (e.g. styling should be done with CSS).\n\n---\n\nFor simplicity, you can ignore the concept of an user (account). This means that all orders are inserted and matched without the existence of a counterparty (i.e. you are trading with yourself).\n\nBONUS FEATURE: upon placing the order in section 1, add a confirmation dialog for the order price.\nIf the price of a placed buy order is more than 10% higher than the highest price of the orderbook's buy orders, or if the price of a placed sell order is more than 10% lower than the lowest price of the orderbook's sell orders, a confirmation dialog or a message should popup in order to confirm the order.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fillright%2Fdemo-crypto-exchange","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fillright%2Fdemo-crypto-exchange","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fillright%2Fdemo-crypto-exchange/lists"}