{"id":23194233,"url":"https://github.com/bugemarvin/alx-files_manager","last_synced_at":"2026-04-13T00:43:15.447Z","repository":{"id":196609880,"uuid":"623051168","full_name":"bugemarvin/alx-files_manager","owner":"bugemarvin","description":"The following restfull api is for the purpose of learning: authentication, NodeJS, MongoDB, Redis, pagination and background processing.","archived":false,"fork":false,"pushed_at":"2023-11-26T23:15:11.000Z","size":279,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T07:42:22.814Z","etag":null,"topics":["authentication","ex","filesystem","mongodb","nodejs","pagination","redis"],"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/bugemarvin.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}},"created_at":"2023-04-03T15:39:58.000Z","updated_at":"2024-03-17T12:07:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba3e8869-2b82-40f3-a5b0-5c0f7df4fc47","html_url":"https://github.com/bugemarvin/alx-files_manager","commit_stats":null,"previous_names":["bugemarvin/alx-files_manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bugemarvin/alx-files_manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugemarvin%2Falx-files_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugemarvin%2Falx-files_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugemarvin%2Falx-files_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugemarvin%2Falx-files_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bugemarvin","download_url":"https://codeload.github.com/bugemarvin/alx-files_manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugemarvin%2Falx-files_manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31735541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T22:19:12.206Z","status":"ssl_error","status_checked_at":"2026-04-12T22:18:33.088Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["authentication","ex","filesystem","mongodb","nodejs","pagination","redis"],"created_at":"2024-12-18T13:13:30.632Z","updated_at":"2026-04-13T00:43:15.401Z","avatar_url":"https://github.com/bugemarvin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Files manager\na summary of this back-end trimester: \n * authentication\n * NodeJS\n * MongoDB\n * Redis\n * pagination\n * background processing\n\nThe objective is to build a simple platform to upload and view files:\n\n* User authentication via a token\n* List all files\n* Upload a new file\n* Change permission of a file\n* View a file\n* Generate thumbnails for images\\\n\nYou will be guided step by step for building it, but you have some freedoms of implementation, split in more files etc… (utils folder will be your friend)\n\nOf course, this kind of service already exists in the real life - it’s a learning purpose to assemble each piece and build a full product.\n\nEnjoy!\n\n## Resources\n* Node JS getting started\n* Process API doc\n* Express getting started\n* Mocha documentation\n* Nodemon documentation\n* MongoDB\n* Bull\n* Image thumbnail\n* Mime-Types\n* Redis\n\n## Requirements\nAllowed editors: `vi`, `vim`, `emacs`, `Visual Studio Code`.\\\nAll your files will be interpreted/compiled on `Ubuntu 18.04 LTS` using `node` (version 12.x.x)\\\nAll your files should end with a new line\\\nA `README.md` file, at the root of the folder of the project, is mandatory\\\nYour code should use the `js` extension\\\nYour code will be verified against lint using `ESLint`\n\n## Provided files\n\n### package.json\n\n```json\n\n{\n  \"name\": \"files_manager\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"lint\": \"./node_modules/.bin/eslint\",\n    \"check-lint\": \"lint [0-9]*.js\",\n    \"start-server\": \"nodemon --exec babel-node --presets @babel/preset-env ./server.js\",\n    \"start-worker\": \"nodemon --exec babel-node --presets @babel/preset-env ./worker.js\",\n    \"dev\": \"nodemon --exec babel-node --presets @babel/preset-env\",\n    \"test\": \"./node_modules/.bin/mocha --require @babel/register --exit\" \n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"bull\": \"^3.16.0\",\n    \"chai-http\": \"^4.3.0\",\n    \"express\": \"^4.17.1\",\n    \"image-thumbnail\": \"^1.0.10\",\n    \"mime-types\": \"^2.1.27\",\n    \"mongodb\": \"^3.5.9\",\n    \"redis\": \"^2.8.0\",\n    \"sha1\": \"^1.1.1\",\n    \"uuid\": \"^8.2.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.8.0\",\n    \"@babel/core\": \"^7.8.0\",\n    \"@babel/node\": \"^7.8.0\",\n    \"@babel/preset-env\": \"^7.8.2\",\n    \"@babel/register\": \"^7.8.0\",\n    \"chai\": \"^4.2.0\",\n    \"chai-http\": \"^4.3.0\",\n    \"mocha\": \"^6.2.2\",\n    \"nodemon\": \"^2.0.2\",\n    \"eslint\": \"^6.4.0\",\n    \"eslint-config-airbnb-base\": \"^14.0.0\",\n    \"eslint-plugin-import\": \"^2.18.2\",\n    \"eslint-plugin-jest\": \"^22.17.0\",\n    \"request\": \"^2.88.0\",\n    \"sinon\": \"^7.5.0\"\n  }\n}\n\n```\n\n### eslintrc.js\n\n```javascript\n\nmodule.exports = {\n    env: {\n      browser: false,\n      es6: true,\n      jest: true,\n    },\n    extends: [\n      'airbnb-base',\n      'plugin:jest/all',\n    ],\n    globals: {\n      Atomics: 'readonly',\n      SharedArrayBuffer: 'readonly',\n    },\n    parserOptions: {\n      ecmaVersion: 2018,\n      sourceType: 'module',\n    },\n    plugins: ['jest'],\n    rules: {\n      'max-classes-per-file': 'off',\n      'no-underscore-dangle': 'off',\n      'no-console': 'off',\n      'no-shadow': 'off',\n      'no-restricted-syntax': [\n        'error',\n        'LabeledStatement',\n        'WithStatement',\n      ],\n    },\n    overrides:[\n      {\n        files: ['*.js'],\n        excludedFiles: 'babel.config.js',\n      }\n    ]\n};\n\n```\n\n### babel.config.js\n\n```javascript\n\nmodule.exports = {\n    presets: [\n      [\n        '@babel/preset-env',\n        {\n          targets: {\n            node: 'current',\n          },\n        },\n      ],\n    ],\n};\n\n```\n## and…\nDon’t forget to run `$ npm install` when you have the `package.json`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbugemarvin%2Falx-files_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbugemarvin%2Falx-files_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbugemarvin%2Falx-files_manager/lists"}