{"id":16158911,"url":"https://github.com/markkos89/challenge-js","last_synced_at":"2025-04-07T02:25:30.816Z","repository":{"id":99028847,"uuid":"313442211","full_name":"Markkos89/challenge-js","owner":"Markkos89","description":null,"archived":false,"fork":false,"pushed_at":"2020-11-16T22:42:21.000Z","size":200,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-13T07:33:01.710Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Markkos89.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":"2020-11-16T22:24:09.000Z","updated_at":"2020-11-18T22:28:03.000Z","dependencies_parsed_at":"2023-03-06T00:45:31.429Z","dependency_job_id":null,"html_url":"https://github.com/Markkos89/challenge-js","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/Markkos89%2Fchallenge-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Markkos89%2Fchallenge-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Markkos89%2Fchallenge-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Markkos89%2Fchallenge-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Markkos89","download_url":"https://codeload.github.com/Markkos89/challenge-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247579767,"owners_count":20961487,"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-10T01:55:27.160Z","updated_at":"2025-04-07T02:25:30.798Z","avatar_url":"https://github.com/Markkos89.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Hello!\n\nHere we have a contrived example of an application that deals with a list of\nfiles and their renames over time, represented as versions.\n\nA version is an object with two properties, an `id` and a `name`:\n- `id`: is an always growing positive integer starting at zero, so the first version has `id`\nequals to `0`, the second one has `id` equals to `1`, etc.\n- `name`: a non-empty `string` representing the filename.\n\nWe created this example using as few styles/components/scripts as we could, to\nallow a quick understanding of the codebase.\n\n\n# We need you to\n\n1. Reimplement `addVersion` (see `src/api.js`) in order to insert each new\n   version on the beginning of the stack (currently, each new version is pushed\n   at the end of the stack).\n2. Using React APIs, keep the file list up to date by refreshing it only when\n   the list is changed.\n3. Sort the file list when the user clicks \"Sort A-Z/Z-A\" button.\n    - The list should be sorted A-Z during the first render.\n    - The button label should be \"Sort Z-A\" when the list is sorted \"A-Z\" and\n      \"Sort A-Z\" otherwise.\n4. Check the implementation of `File` component (see `src/Files/index.js`) and\n   add any improvement that you consider (there's no need to improve the\n   styles).\n5. Implement a feature to add files to the list. A new file object should be\n   created from a filename (a non-empty `string`) provided by the user.\n    - Implement `addFile` API (see `src/api.js`).\n    - Add a button below the file list to create a new file. The UI should only\n      require the filename to the user (you can use the simplest approach to\n      ask the filename).\n    - The file list should be refreshed once the file gets created.\n\nWhen possible, add tests to your solution.\n\n\n# Instructions\n\nYou need `node` (version 10 or 12), and `yarn` (latest).\n\n```sh\n# install dependencies\nyarn install\n\n# start app in dev mode\nyarn start\n\n# run tests\nyarn test\n```\n\n# Note\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkkos89%2Fchallenge-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkkos89%2Fchallenge-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkkos89%2Fchallenge-js/lists"}