Skip to content

David-Inkheart/alx-files_manager

Repository files navigation

File Manager Backend Service

This project is a summary of my back-end learning journey. It encompasses various concepts and technologies including authentication, NodeJS, MongoDB, Redis, pagination, and background processing.

The objective of this project is to build a simple platform for file management. The key features of this platform include:

  1. User Authentication via Token: Users will be able to authenticate themselves using a token-based authentication system.
  2. File Listing: Users can view a list of all files uploaded to the platform.
  3. File Upload: Users can upload new files to the platform.
  4. File Permission Management: Users can change the permission settings of their uploaded files.
  5. File Viewing: Users can view the contents of a file.
  6. Thumbnail Generation: The platform will automatically generate thumbnails for image files.

Throughout the development process, I will be guided step by step, but I will have the freedom to make certain implementation choices. This includes organizing code into separate files and utilizing the utils folder for additional functionality.

It is important to note that similar file management services already exist in real life. However, the purpose of this project is purely for learning and practicing the different components required to build a complete product.

Learning Objectives

By completing this project, I aim to achieve the following learning objectives:

  1. Creating an API with Express: I will gain a comprehensive understanding of how to build a robust API using the Express framework.
  2. User Authentication: I will learn how to implement user authentication using token-based authentication techniques.
  3. Data Storage with MongoDB: I will understand how to store and retrieve data using MongoDB, a popular NoSQL database.
  4. Temporary Data Storage with Redis: I will explore the concept of using Redis as a temporary data store for efficient caching and session management.
  5. Background Worker Setup and Usage: I will gain practical experience in setting up and utilizing background workers to perform asynchronous tasks.

Throughout the development process, I will strive to achieve a deep understanding of these concepts and be able to confidently explain them to others without the need for external references.

Getting Started

To get started with this project, follow the instructions provided in the installation guide. This guide will walk you through the necessary steps to set up the project on your local machine and start building the file manager backend service.

Contribution Guidelines

If you find any issues or have suggestions for improving this project, please feel free to contribute. You can follow the contribution guidelines to contribute to this project.

License

This project is licensed under the MIT License. Feel free to use and modify this project for your own learning purposes.

Acknowledgements

I would like to express my gratitude to the mentors and instructors of alx_africa who have guided me throughout this learning journey. Their support and expertise have been invaluable in helping me gain a solid understanding of backend development and build this file manager backend service.