GDSC FUTO Backend repository for Google Solution Challenge 2023
- Basic Authentication (Register/Login with hashed password)
- Email sending with Nodemailer.
- Computer vision via the Google Cloud Vision API
- JWT Tokens, make requests with a token after login with
Authorization
header with valueyourToken
whereyourToken
will be returned in Login response.
- Validations added.
- Included API collection for Postman.
- Light-weight project.
- Test cases with Mocha and Chai.
- Code coverage with Istanbuljs (nyc).
- Included CI (Continuous Integration) with Travis CI.
- Linting with Eslint.
- Node.js 8+
- MongoDB 3.6+ (Recommended 4+)
- Clone the project from github.
git clone https://github.com/dscfuto-org/fasthrash-BE.git fastrash-BE
- Download repository
- Uncompress to your desired directory
cd fastrash-BE
npm install
- You will find a file named
.env.example
on root directory of project. - Create a new file by copying and pasting the file and then renaming it to just
.env
cp .env.example .env
- The file
.env
is already ignored, so you never commit your credentials. - Change the values of the file to your environment. Helpful comments added to
.env.example
file to understand the constants.
.
├── app.js
├── package.json
├── bin
│ └── www
├── controllers
│ ├── HistoryControllers
│ │ ├── CollectionHistoryController.js
│ │ └── DepositHistoryController.js
│ ├── AuthController.js
| ├── AlertController.js
│ └── ImageUploadController.js
├── models
│ ├── HistoryModels
│ │ ├── CollectionHistory.js
│ │ └── DepositHistory.js
│ ├── alertModel.js
│ └── imgModel.js
| └── userModel.js
| └── tokenModel.js
| └── pointModel.js
├── routes
│ ├── alert.js
│ ├── auth.js
│ └── history.js
│ └── imageUpload.js
| └── testConfig.js
├── middlewares
│ ├── jwt.js
│ └── upload.js
│ └── verifyUser.js
│ └── vision.js
├── helpers
│ ├── apiResponse.js
│ ├── constants.js
│ ├── mailer.js
│ └── utility.js
│ └── cloudStorage.js
├── test
│ ├── testConfig.js
│ ├── auth.js
│ └── alert.js
│ └── history.js
│ └── imageUpload.js
├── views
│ └── resetPassword.ejs
└── public
├── index.html
└── stylesheets
└── style.css
npm run dev
You will know server is running by checking the output of the command npm run dev
Connected to mongodb:YOUR_DB_CONNECTION_STRING
App is running ...
Press CTRL + C to stop the process.
Note: YOUR_DB_CONNECTION_STRING
will be your MongoDB connection string.
npm run test
You can set custom command for test at package.json
file inside scripts
property. You can also change timeout for each assertion with --timeout
parameter of mocha command.
If you need to add more test cases to the project just create a new file in /test/
and run the command.
npm run lint
You can set custom rules for eslint in .eslintrc.json
file, Added at project root.
Every project needs improvements, Feel free to report any bugs or improvements. Pull requests are always welcome.
This project is open-sourced software licensed under the MIT License. See the LICENSE file for more information.