Storage Drive for digital assets which can be adopted by enterprises and integrated with their other systems. Features include:
- Upload file.
- View all files.
- Download file.
- Rename file.
- Delete file.
- Add to favorites.
- Trash storage.
- Share file with a url for certain expiry time.
- Recent files by modified time.
- Error handling for all routes.
- Authentication for users to login.
- Created and updated time of file.
- Search files
Node.js version 14+ and npm must be installed on your machine. MongoDb must be installed and runing on port:27017. In terminal type the following commands to run the api server:
git clone https://github.com/Crio-Winter-of-Doing-2021/VICARA-T3
cd backend
touch dev.env
vim dev.env
sudo npm install
npm run dev
Insert the following lines in dev.env, replacing all <content> with your own information:
PORT=3000
MONGODB_URL=<mongodb connection string>
JWT_SECRET=<unique key of your choice to generate JSON web tokens>
ACCESS_KEY_ID=<aws s3 access key>
SECRET_ACCESS_KEY=<aws s3 secret access key>
BUCKET_NAME=<aws s3 bucket name>
In another terminal to run the application
cd frontend
touch dev.env
vim dev.env
sudo npm install
npm run dev
Insert the following lines in dev.env, replacing all <content> with your own information:
PORT=8000
The server is made on nodejs (v14.15.4)
Express.js is used as the server framework
-
cors- to provide a Connect/Express middleware that can be used to enable CORS . -
env-cmd- to use env variables. -
mongoose- MongoDB library for JS. -
hbs- to render hbs files. -
aws-sdk- to use aws s3 bucket. -
jsonwebtoken- to create authentication token.. -
bcryptjs- to encrypt plain password. -
validator- to validate and sanitize string.
-
The various requests and endpoints are:-
-
POST
/signup- to create user. -
POST
/login- to login. -
POST
/logout- to logout. -
POST
/logoutAll- to logout all sessions. -
GET
/me- to get user profile. -
PATCH
/me- to update user information. -
DELETE
/me- to delete user profile. -
POST
/upload- to upload a file. -
POST
/share- to share a file. -
GET
/download/:file_id- to download a file. -
GET
/files- to view all files. -
GET
/trash- to view all trash files. -
GET
/files/fav- to view all favorite files. -
PATCH
/rename/:file_id- to rename a file. -
PATCH
/trash/:file_id- to update trash status of a file. -
PATCH
/fav/:file_id&:fav- to update favorite status of a file. -
DELETE
/files/:file_id- to delete a file.
-
-
Use POSTMAN to fire off the requests to the endpoints.
