Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bugemarvin/alx-files_manager
The following restfull api is for the purpose of learning: authentication, NodeJS, MongoDB, Redis, pagination and background processing.
https://github.com/bugemarvin/alx-files_manager
authentication ex filesystem mongodb nodejs pagination redis
Last synced: 10 days ago
JSON representation
The following restfull api is for the purpose of learning: authentication, NodeJS, MongoDB, Redis, pagination and background processing.
- Host: GitHub
- URL: https://github.com/bugemarvin/alx-files_manager
- Owner: bugemarvin
- Created: 2023-04-03T15:39:58.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-26T23:15:11.000Z (about 1 year ago)
- Last Synced: 2024-05-28T16:25:55.867Z (7 months ago)
- Topics: authentication, ex, filesystem, mongodb, nodejs, pagination, redis
- Language: JavaScript
- Homepage:
- Size: 272 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Files manager
a summary of this back-end trimester:
* authentication
* NodeJS
* MongoDB
* Redis
* pagination
* background processingThe objective is to build a simple platform to upload and view files:
* User authentication via a token
* List all files
* Upload a new file
* Change permission of a file
* View a file
* Generate thumbnails for images\You 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)
Of 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.
Enjoy!
## Resources
* Node JS getting started
* Process API doc
* Express getting started
* Mocha documentation
* Nodemon documentation
* MongoDB
* Bull
* Image thumbnail
* Mime-Types
* Redis## Requirements
Allowed editors: `vi`, `vim`, `emacs`, `Visual Studio Code`.\
All your files will be interpreted/compiled on `Ubuntu 18.04 LTS` using `node` (version 12.x.x)\
All your files should end with a new line\
A `README.md` file, at the root of the folder of the project, is mandatory\
Your code should use the `js` extension\
Your code will be verified against lint using `ESLint`## Provided files
### package.json
```json
{
"name": "files_manager",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"lint": "./node_modules/.bin/eslint",
"check-lint": "lint [0-9]*.js",
"start-server": "nodemon --exec babel-node --presets @babel/preset-env ./server.js",
"start-worker": "nodemon --exec babel-node --presets @babel/preset-env ./worker.js",
"dev": "nodemon --exec babel-node --presets @babel/preset-env",
"test": "./node_modules/.bin/mocha --require @babel/register --exit"
},
"author": "",
"license": "ISC",
"dependencies": {
"bull": "^3.16.0",
"chai-http": "^4.3.0",
"express": "^4.17.1",
"image-thumbnail": "^1.0.10",
"mime-types": "^2.1.27",
"mongodb": "^3.5.9",
"redis": "^2.8.0",
"sha1": "^1.1.1",
"uuid": "^8.2.0"
},
"devDependencies": {
"@babel/cli": "^7.8.0",
"@babel/core": "^7.8.0",
"@babel/node": "^7.8.0",
"@babel/preset-env": "^7.8.2",
"@babel/register": "^7.8.0",
"chai": "^4.2.0",
"chai-http": "^4.3.0",
"mocha": "^6.2.2",
"nodemon": "^2.0.2",
"eslint": "^6.4.0",
"eslint-config-airbnb-base": "^14.0.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jest": "^22.17.0",
"request": "^2.88.0",
"sinon": "^7.5.0"
}
}```
### eslintrc.js
```javascript
module.exports = {
env: {
browser: false,
es6: true,
jest: true,
},
extends: [
'airbnb-base',
'plugin:jest/all',
],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
},
plugins: ['jest'],
rules: {
'max-classes-per-file': 'off',
'no-underscore-dangle': 'off',
'no-console': 'off',
'no-shadow': 'off',
'no-restricted-syntax': [
'error',
'LabeledStatement',
'WithStatement',
],
},
overrides:[
{
files: ['*.js'],
excludedFiles: 'babel.config.js',
}
]
};```
### babel.config.js
```javascript
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
],
};```
## and…
Don’t forget to run `$ npm install` when you have the `package.json`