{"id":19637261,"url":"https://github.com/suyashjoshi179/crypt-web","last_synced_at":"2026-04-11T02:04:17.470Z","repository":{"id":37080016,"uuid":"361442064","full_name":"SuyashJoshi179/Crypt-Web","owner":"SuyashJoshi179","description":"Crypt is a free cryptocurrency website which uses free open API's efficiently in order to visualise data, which helps you to analyse and predict their future, so you can invest your money wisely.","archived":false,"fork":false,"pushed_at":"2023-04-04T17:58:16.000Z","size":57,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-27T09:33:15.016Z","etag":null,"topics":["analysis-tools","bootstrap","coingecko-api","cryptocurrency-prices","cryptowatch-api","database-caching","firebase","firestore","free","google-charts","reactjs","request-throughput-tradeoff","rest-api","tradeoff","visualize-data"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/SuyashJoshi179.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-25T13:53:14.000Z","updated_at":"2025-07-11T08:24:30.000Z","dependencies_parsed_at":"2025-01-09T16:59:08.322Z","dependency_job_id":"52333838-aaa5-48bf-8711-2901153192e6","html_url":"https://github.com/SuyashJoshi179/Crypt-Web","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SuyashJoshi179/Crypt-Web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuyashJoshi179%2FCrypt-Web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuyashJoshi179%2FCrypt-Web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuyashJoshi179%2FCrypt-Web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuyashJoshi179%2FCrypt-Web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SuyashJoshi179","download_url":"https://codeload.github.com/SuyashJoshi179/Crypt-Web/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuyashJoshi179%2FCrypt-Web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272302910,"owners_count":24910293,"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","status":"online","status_checked_at":"2025-08-27T02:00:09.397Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["analysis-tools","bootstrap","coingecko-api","cryptocurrency-prices","cryptowatch-api","database-caching","firebase","firestore","free","google-charts","reactjs","request-throughput-tradeoff","rest-api","tradeoff","visualize-data"],"created_at":"2024-11-11T12:33:51.716Z","updated_at":"2026-04-11T02:04:17.437Z","avatar_url":"https://github.com/SuyashJoshi179.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crypt Cryptocurrency Website\n\u003cp align='justify' \u003eCrypt is a cryptocurrency website, where you can check out latest cryptocurrencies, their current rates, historical rates and their trend. Which helps you to predict their future, so you can invest your money wisely.\u003c/p\u003e\n\u003cp align='justify' \u003eCrypt is free, hosted on firebase. Data for current rates is provided by coingecko and history by cryptowatch.\u003c/p\u003e\n\u003ch2\u003eIdea\u003c/h2\u003e\n\u003cp align='justify' \u003e\u0026emsp; Surfing through the internet, trying to predict cryptocurrency trends, I thought of making a better and free alternative for allready present sites. You can see the Ideation of this project \u003ca target='_blank' rel=\"noreferrer\" href='https://drive.google.com/file/d/1MMf2BLCpdCHLJ_-R2rfF31vHdpLrqWD9/view?usp=sharing'\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs you can see from the ideation, lot of things have changed during the project, such as UI and the API used. Reason for why api has been changed is given in the making and working section. Some features have been added, whereas some have been removed.\u003c/p\u003e\n\u003ch2\u003eMaking and Working of Crypt\u003c/h2\u003e\n\u003cp align='justify' \u003e\u0026emsp; Crypt gets the cryptocurrency data from API's and displays it in a manner that is easily undastandable and visually appealing. For this, it uses various frameworks and libraries.\u003c/p\u003e\n\u003cp align='justify' \u003e\u0026emsp; The website is made using  \u003ca target='_blank' rel=\"noreferrer\" href='https://reactjs.org/' \u003eReactJS\u003c/a\u003e. It gives crypt it's dynamic behaviour. Crypt gets the required data by sending http requests to the REST Api endpoints provided by \u003ca target='_blank' rel=\"noreferrer\" href='https://cryptowat.ch/products/cryptocurrency-market-data-api' \u003eCryptowatch\u003c/a\u003e and \u003ca target='_blank' rel=\"noreferrer\" href='https://www.coingecko.com/en/api' \u003eCoingecko\u003c/a\u003e. Almost all REST Api's for cryptocurrency data out there have some sort of limit for free use. For Crypt to be free, all requests combined should be within the given limit.\u003c/p\u003e\n\u003cp align='justify' \u003e\u0026emsp; \u003ca target='_blank' rel=\"noreferrer\" href='https://www.coinapi.io/' \u003eCoinApi\u003c/a\u003e is good but has very small limit(only 100 requests a day). So, the Cryptowatch having 10 sec of computer time a day(666 requests a day on avg.) was a obvious choice.\u003c/p\u003e\n\u003cp align='justify' \u003e\u0026emsp; The thing is, every visitor makes more than one requests to the api in one visit(22 requests are made just on loading). Thats why even a handful people can saturate the api limit. For this reason, crypt is optimised to use minimum number of requests by storing the data which is repetadely accessed and which does not change frequently, such as historical data.\u003c/p\u003e\n\u003cp align='justify' \u003e\u0026emsp; Historical data is accessed by every user and as history data doesn't change in the course of a day, that can be stored and retrived only once a day. For storing purpose, crypt uses \u003ca target='_blank' rel=\"noreferrer\" href='https://firebase.google.com/products/firestore/' \u003eCloud Firestore\u003c/a\u003e, provided by \u003ca target='_blank' rel=\"noreferrer\" href='https://firebase.google.com/' \u003eFirebase\u003c/a\u003e. For every cryptocurrency, a server timestamp of 'updatedOn' is stored, only if the difference between this timestamp and current timestamp exceeds one day, the request is sent to the API. That means, only the first user who opens the website, actually sends the request and updates the backend. If a new cryptocurrency is found, it makes a new document for it and uploads the data in it. All other users access the history data from database itself.\u003c/p\u003e\n\u003cp align='justify' \u003e\u0026emsp; There is a slight problem with Cryptowatch Api, it doesn't provides the market cap data, which is useful for ranking the cryptocurrencies. For this purpose, crypt uses a second cryptocurrency api named CoinGecko. CoinGecko provides market cap data along with all the data for current rate's. CoinGecko also has a larger limit with 100 requests a minute. CoinGecko has a nasty api endpoint for history and only provides small amount of information in a single request. Thats why its better to stick with two API approach, one for rankings and prices and one for history.\u003c/p\u003e\n\u003cp align='justify' \u003e\u0026emsp; Crypt uses firebase for hosting and database with free \u003ca target='_blank' rel=\"noreferrer\" href='https://firebase.google.com/pricing/' \u003espark plan\u003c/a\u003e in mind. Spark plan allows 20k reads and 50k writes a day which are more than enough and will not be a bottleneck.\u003c/p\u003e\n\u003cp align='justify' \u003e\u0026emsp; Cryptowatch dosn't send Allow-Origin header in the http response, that meanse sending requests from frontend will be bloked by \u003ca target='_blank' rel=\"noreferrer\" href='https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS' \u003eCORS policy\u003c/a\u003e. To tackle this, a proxy server is used which acts like a middleman in frontend and API server. Proxy server adds the Allow-Origin header in te response so that the browser doesn't block the response. Crypt uses a seperate proxy server using \u003ca target='_blank' rel=\"noreferrer\" href='https://github.com/Rob--W/cors-anywhere' \u003eCORS-Anywhere\u003c/a\u003e, deployed on \u003ca target='_blank' rel=\"noreferrer\" href='https://www.heroku.com/' \u003eHeroku\u003c/a\u003e. \u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuyashjoshi179%2Fcrypt-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuyashjoshi179%2Fcrypt-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuyashjoshi179%2Fcrypt-web/lists"}