{"id":19431984,"url":"https://github.com/naskio/collective-technical-test","last_synced_at":"2026-05-29T16:31:18.556Z","repository":{"id":107850697,"uuid":"425073297","full_name":"naskio/collective-technical-test","owner":"naskio","description":"Collective - Technical test using NestJS and ReactJS","archived":false,"fork":false,"pushed_at":"2021-11-08T00:57:33.000Z","size":583,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-25T06:16:27.688Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naskio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-11-05T20:14:54.000Z","updated_at":"2021-11-08T00:57:35.000Z","dependencies_parsed_at":"2023-07-12T09:32:03.285Z","dependency_job_id":null,"html_url":"https://github.com/naskio/collective-technical-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/naskio/collective-technical-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naskio%2Fcollective-technical-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naskio%2Fcollective-technical-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naskio%2Fcollective-technical-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naskio%2Fcollective-technical-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naskio","download_url":"https://codeload.github.com/naskio/collective-technical-test/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naskio%2Fcollective-technical-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33662205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"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":[],"created_at":"2024-11-10T14:33:32.325Z","updated_at":"2026-05-29T16:31:18.535Z","avatar_url":"https://github.com/naskio.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# collective-technical-test\n\nTechnical test for Collective.Work using NestJS and ReactJS.\n\n## Description\n\nThis project is composed of two parts:\n\n### Backend\n\nThe backend has the following features:\n\n- Endpoint to fetch the top 150 cryptos, it also allows us to search by keyword.\n- A caching system to store the data in memory, so we don't have to fetch it every time.\n- A [scheduled task](./backend/src/app.service.ts) to fetch the data every 5 seconds and cache it to stay up to date.\n- [Swagger documentation](http://localhost:3000).\n- It also contains [tests](./backend/src/cryptos/cryptos.service.spec.ts) for the cryptos service.\n\n### Frontend\n\nThe frontend has the following features:\n\n- A simple search bar to search by keyword. The input is debounced in order to avoid unnecessary api calls.\n- A DataGrid to display the cryptos. it also supports features like sorting by columns and pagination.\n- The data is fetched from the backend dynamically every 5 seconds in order to stay up to date.\n- The table is animated with colors when the data changes.\n- We use snackbars to display errors.\n\n# Running the project\n\n## Requirements\n\n- Docker 20.10.7+\n- docker-compose 1.29.2+\n\nin order to run the project without Docker, please follow the instructions in both folders:\n\n- [Running the Backend](./backend/README.md)\n- [Running the Frontend](./frontend/README.md)\n\n## Configuration\n\nStart by setting the environment variables:\n\n- cp ```.env_example``` to ```.env``` using the following command:\n    ```shell\n    cp .env_example .env\n    ```\n\n## Build\n\nOnce the environment variables are set, you can build the project by running the following command:\n\n```shell\ndocker-compose build\n```\n\n## Run\n\nto run the project, you can run the following command:\n\n```shell\ndocker-compose up -d \n```\n\nin order to stop the containers, you can run the following command:\n\n```shell\ndocker-compose down\n```\n\n## Usage\n\n- The Swagger documentation is available at: [http://localhost:3000/](http://localhost:3000/)\n- The SPA s are available at: [http://localhost:3001/](http://localhost:3001/)\n\n# Improvements\n\nI would suggest that we collect the data more frequently, and send it to the frontend using sockets in order to avoid\nfetching it every time and to stay always up to date.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaskio%2Fcollective-technical-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaskio%2Fcollective-technical-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaskio%2Fcollective-technical-test/lists"}