FileDrive-Management
Frontend: FileDrive-Management App
Backend: FileDrive-Management API
Note: The frontend is deployed on AWS EC2, and AWS S3 is utilized as a storage bucket for documents. The EC2 instance's deployment link is not provided due to fear of billing; however, the frontend is accessible through the provided Netlify link: Frontend Deployed Link.
-
[Proprietary License](#Proprietary License)
Welcome to File Drive – a cutting-edge file management platform designed for secure and collaborative document control. Seamlessly upload, share, and organize files, enhancing productivity and ensuring efficient team workflows.
- Node.js
- Express.js
- React
- MongoDB
- Amazon S3
List of dependencies used for this backend.
- Express.js
- Multer
- aws-sdk
- Mongoose
- Bcrypt
- Jsonwebtoken
- cors
- Clone the repository.
- Install dependencies using
npm install
. - Configure environment variables in a
.env
file. - Run the server using
npm run server
.
- POST /user/register: Register a new user.
- POST /user/login: Log in a user.
- POST /file/upload: Upload a file to S3 and save metadata to MongoDB. (Authenticated)
- GET /file/files: Retrieve all files ( Admin Access && Authenticated).
- GET /file/files/:userId: Retrieve files for a specific user. (Authenticated)
- PUT /file/update/:filename: Update a file from S3 and MongoDB. (Authenticated)
- DELETE /file/delete/:filename: Delete a file from S3 and MongoDB. (Authenticated)
- User registration with hashed passwords using bcrypt.
- User login with JWT token generation.
- Role-based access control (admin, user).
- Middleware (
RoleBase
) to check user roles for specific routes.
List of dependencies used for this frontend.
- React
- React Router
- SweetAlert2
- Navigate to the
frontend
directory. - Install dependencies using
npm install
. - Run the development server using
npm start
.
Briefly describe key components and their functionalities.
- Login: User login page.
- Register: User registration page.
- FileUpload: File upload and management page.
- Navbar: Navigation bar component.
- Authentication Check: Utilizes conditional rendering to determine whether a user is authenticated.
- Dynamic Component Display: Adjusts component rendering based on user authentication status for a seamless user experience.
- Password hashing using bcrypt.
- JWT for authentication.
Unauthorized copying, reproduction, or distribution of the Software is strictly prohibited.