This project is a summary of this back-end trimester: authentication, NodeJS, MongoDB, Redis, pagination and background processing.
The 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
- how to create an API with Express
- how to authenticate a user
- how to store data in MongoDB
- how to store temporary data in Redis
- how to setup and use a background worker
- Node.js
- A Google API should be created with at least an email sending scope and a valid URL (e.g.;
http://localhost:5000/
) should be one of the redirect URIs. Thecredentials.json
file should be stored in the root directory of this project.
The required environment variables should be stored in a file named .env
and each line should have the format Name=Value
. The table below lists the environment variables that will be used by this server:
Name | Required | Description |
---|---|---|
GOOGLE_MAIL_SENDER | Yes | The email address of the account responsible for sending emails to users. |
PORT | No (Default: 5000 ) |
The port the server should listen at. |
DB_HOST | No (Default: localhost ) |
The database host. |
DB_PORT | No (Default: 27017 ) |
The database port. |
DB_DATABASE | No (Default: files_manager ) |
The database name. |
FOLDER_PATH | No (Default: /tmp/files_manager (Linux, Mac OS X) & %TEMP%/files_manager (Windows)) |
The local folder where files are saved. |
- Clone this repository and switch to the cloned repository's directory.
- Install the packages using
npm install
.
Start the Redis and MongoDB services on your system and run npm run start-server
.
- Create a separate
.env
file for the tests named.env.test
and store the value of the environment variables for the testing event in it. - Run ``npm run test` to execute the E2E tests.