{"id":25065857,"url":"https://github.com/arvindk2025/koinx_backend_assignment_","last_synced_at":"2026-04-10T06:34:51.528Z","repository":{"id":232696498,"uuid":"784637268","full_name":"arvindk2025/KoinX_Backend_Assignment_","owner":"arvindk2025","description":"This Project is a Server Side Application that allows users to fetch all CryptoCurrency List , Facilitate Price Conversion on a particular date and Provides List of Companies that holds a specific CryptoCurrency.","archived":false,"fork":false,"pushed_at":"2024-04-17T17:34:21.000Z","size":470,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-30T08:08:28.738Z","etag":null,"topics":["axios","coingecko-api","cors","expressjs","mongodb","node-scheduler","nodejs","postman"],"latest_commit_sha":null,"homepage":"https://koinx-backend-assignment-ah3d.onrender.com","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/arvindk2025.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":"2024-04-10T08:46:50.000Z","updated_at":"2024-05-29T17:03:40.000Z","dependencies_parsed_at":"2024-04-17T18:45:08.409Z","dependency_job_id":"919cccaa-f2e9-4e67-975c-f80f9a28373e","html_url":"https://github.com/arvindk2025/KoinX_Backend_Assignment_","commit_stats":null,"previous_names":["arvindk2025/koinx_backend_assignment_"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindk2025%2FKoinX_Backend_Assignment_","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindk2025%2FKoinX_Backend_Assignment_/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindk2025%2FKoinX_Backend_Assignment_/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindk2025%2FKoinX_Backend_Assignment_/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arvindk2025","download_url":"https://codeload.github.com/arvindk2025/KoinX_Backend_Assignment_/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237538904,"owners_count":19326561,"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":["axios","coingecko-api","cors","expressjs","mongodb","node-scheduler","nodejs","postman"],"created_at":"2025-02-06T19:45:14.626Z","updated_at":"2025-12-30T20:03:57.813Z","avatar_url":"https://github.com/arvindk2025.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KoinX Backend Assignment \nThis project is a server-side application that allows users: \n1. To fetch all the Cryptocurrency lists from the Coingecko API :-\n```\nhttps://api.coingecko.com/api/v3/coins/list\n``` \n2. To facilitate the Price Conversion of one Crypto Currency to another Crypto Currency \n3. To fetch the List of Companies holding specific Cryptocurrencies Usin API :-\n ``` \nhttps://api.coingecko.com/api/v3/companies/public_treasury/${currency} \n```\n\n---\n\n## Important Links:- \n| Project  Demo Video Link | https://asset.cloudinary.com/arvindkumar/ab0493dbc217b32244ee32153eb75307|\n|---|---|\n\n\n| Documentation.pdf Link |https://drive.google.com/file/d/10f-CJMNFoOYhdJ-j9CiXg49ACQ6u2XkS/view?usp=sharing|\n|---|---|\n\n| Project Hosted Link on Render |https://koinx-backend-assignment-ah3d.onrender.com/|\n|---|---|\n\n--- \n\n## Task 1: Fetch Cryptocurrency Names and IDs\n1. Note:- Testing URL for POSTMAN for Task-1\n```\nDefine PORT = 8000\nhttp://localhost:8000/api/cryptocurrencylist\n```\n\n2. Fetching The Cryptocurrencies data from the Coingecko API :- \n```\nhttps://api.coingecko.com/api/v3/coins/list \n``` \n![Koinx_Backend_Assignment ](./assets/1.png?raw=true \" Koinx_Backend_Assignment \")\n3. And After Fetching Data I am storing fetched data in MongoDB Database in the name and Id's format.\n![Koinx_Backend_Assignment ](./assets/2.png?raw=true \" Koinx_Backend_Assignment \")\n4. **For updating the data at Every hour** we are using “node-shedule” package . This package \nprovides a flexible and powerful way to define rules for scheduling tasks at specific times or intervals.\n5. We are using “schedule.shedulejob” method to update the data at every hour\n![Koinx_Backend_Assignment ](./assets/3.png?raw=true \" Koinx_Backend_Assignment \")\n\n--- \n## Task 2: Cryptocurrency Price Conversion API\n\n1. Generated API that takes the Coingecko IDs of 2 cryptocurrencies and returns the price of one currency in another on a particular date.\n   (Price Conversion Logic is written in the `currencyConverter.controller.js` file under `controllers` folder. \n```\nDefine PORT = 8000\nhttp://localhost:8000/api/currencyCoverter\n```\n\n2. **Request Schema:**\n    ```json\n        {\n            \"fromCurrency\": \"bitcoin\",\n            \"toCurrency\": \"ethereum\",\n            \"date\": \"12-01-2024\"\n        }\n    ```\n3. **Response:**\n    ```json\n       {\n            \"success\": true,\n            \"data\":{\n                \"convertedPrice\": 17.688510609605387\n             }\n       }\n    ```\n4. Converted Price in POSTMAN during the Testing Verification\n![Koinx_Backend_Assignment ](./assets/4.png?raw=true \" Koinx_Backend_Assignment \")\n\n---\n\n## Task 3: Companies Holding Cryptocurrency API\n1. implemented an API that retrieves a list of companies holding a specific cryptocurrency.\n```\nDefine PORT = 8000\nhttp://localhost:8000/api/companies/public_treasury\n```\n2. Implemented the `getListofCompanies` function in the `listofCompaniesData.controller.js` file under `controllers` to handle the retrieval of company data.\n3. Tested the API functionality using Postman.\n![Koinx_Backend_Assignment ](./assets/5.png?raw=true \" Koinx_Backend_Assignment \")\n\n#### Request and Response Examples\n2. **Request Schema:**\n    ```json\n    {\n        \"currency\": \"bitcoin\"\n    }\n    ```\n3. **Response:**\n    ```json\n    {\n    \"success\": true,\n    \"List of Companies that holds bitcoin\": [\n                    \"MicroStrategy Inc.\",\n                    \"Galaxy Digital Holdings\",\n                    \"Marathon Digital Holdings\",\n                    \"Tesla, Inc.\",\n                    \"Hut 8 Mining Corp\",\n                    \"Coinbase Global, Inc\",\n                    \"Block Inc.\",\n                    \"Riot Platforms, Inc\",\n                    \"Hive Blockchain\",\n                    \"CleanSpark Inc.\",\n                    \"NEXON Co Ltd\",\n                    \"Exodus Movement Inc\",\n                    \"Meitu Inc\",\n                    \"Bit Digital, Inc\",\n                    \"Bitfarms Limited\",\n                    \"NFT Investments PLC\",\n                    \"Cipher Mining\",\n                    \"DMG Blockchain Solutions Inc.\",\n                    \"Neptune Digital Assets Corp.\",\n                    \"BIGG Digital Assets Inc.\",\n                    \"Advanced Bitcoin Technologies AG\",\n                    \"FRMO Corp.\",\n                    \"The Brooker Group\",\n                    \"DigitalX\",\n                    \"LQwD Technologies Corp\",\n                    \"Cypherpunk Holdings Inc\",\n                    \"Core Scientific\",\n                    \"Mogo Inc.\"\n            ]\n       }\n    ```\n\n--- \n\n#  Testing: For Testing this Server App in POSTMAN use following URL\n- **Task-1**: Get request to fetch All CryptoCurrency List\n```\nhttp://localhost:8000/api/cryptocurrencylist\n```\n- **Task-2** : Post request to convert one Currency to another\n```\nhttp://localhost:8000/api/currencyCoverter\n```\n- **Task-3** : Post request to fetch ListofCompanies\n```\nhttp://localhost:8000/api/companies/public_treasury\n```\nOr \n\n##  Testing: For Testing this Server App using Deployed Link in POSTMAN use following URL\n- **Task-1**: Get request to fetch All CryptoCurrency List\n```\nhttps://koinx-backend-assignment-ah3d.onrender.com/api/cryptocurrencylist\n```\n- **Task-2** : Post request to convert one Currency to another\n```\nhttps://koinx-backend-assignment-ah3d.onrender.com/api/currencyCoverter\n```\n- **Task-3** : Post request to fetch ListofCompanies\n```\nhttps://koinx-backend-assignment-ah3d.onrender.com/api/companies/public_treasury\n```\n---\n\n## Technologies Used\n\n- Node.js\n- Express.js\n- MongoDB\n- Coingecko API\n- Render\n- MongoDB Atlas\n- POSTMAN\n- Cors\n- Axios\n- Node-Schedule Package\n- schedule.schedule job Method\n\n--- \n# Installation \u0026 Steps to Run the Project Your Locally Storage\n1. Download or Clone the repository:\n```\n git clone https://github.com/arvindk2025/KoinX_Backend_Assignment_.git\n```\n\n2. Install all the required dependencies:\n```\n npm install\n```\n\n3. Connect the MongoDB database by adding the Connection URL and PORT to the .env file (you can use MongoDB Atlas or Compass) : \n ```\nMONGODB_URL = paste from connection string \nPORT = 8000\n```\n4. Finally, Run the project:\n```\n npm start\n```\nOr\n```\nnpm run start\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farvindk2025%2Fkoinx_backend_assignment_","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farvindk2025%2Fkoinx_backend_assignment_","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farvindk2025%2Fkoinx_backend_assignment_/lists"}