A scalable waste management system powered by IoT.
- cleanurge-mcu: Containing the source code for the microcontroller
- cleanurge-backend: Containing the source code for the Express backend
- cleanurge-app: Containing the source code for the Android App
- Description
- Project structure
- Getting started
- Live demo
- Built with
- Contributing
- Authors
- License
- Acknowledgments
Today, waste is a significant global issue. Increasing volumes of waste are being generated as the global population and living standards rise. The environmental impact is significant, with massive volumes of waste generated annually with only basic or little treatment to minimise its impact. People are increasingly concerned about the production of waste and its effect, and are seeking ways to deal with the problem.
Our project serves to prevent overaccumulation of waste at public bins by maintaining a log of their waste accumulation levels. The authorities will have the feature to get live status of the various public bins and appoint garbagemen to clear off any bins on overaccumulation.
The idea is to have wireless beacons configured at various public bins to detect and measure the level of waste accumulation at the bins. When the level at any of the bins cross a certain level, a request is triggered to a web server that is then used to send notifications to the authorities in an app as well as web based software. The mobile application also supports the feature for individuals living in a locality to report of any waste accumulation directly to the authorities.
This repository hosts only the server side code
/
├── .github/ github related files like PR templates, contribution guidelines
├── controllers/ controller functions for every route. controllers make calls to services
├── middlewares/ middlewares for various routes go here
├── models/ database schema / models go here
├── routes/ routes or endpoint definitions go here, routes make calls to controllers
├── services/ files that process and query the database go here
├── utils/ utility or helper functions go here
├── .env environment variables used in the project
├── .gitignore stores files and directories to be ignored in commits
├── .prettierrc configuration for prettier to help maintain a common code formatting
├── app.js entry point for our project
├── LICENSE the open source license
├── code_of_conduct.md code of conduct for open source contribution
├── contributing.md contribution guidelines
├── package.json metadata of the project
├── package-lock.json stores version of every package used in the project
└── readme.md details and instructions about the project go here
Everyone is welcomed to contribute to our project. Mentioning in bold, you do not need to know the tech stack and tools beforehand to be a part of our project. This is a learn-and-build projects where the contributors build alongside learning the various concepts and technologies involved. Below are a few prerequisites and installation guides:
- A web browser
- Node and npm
The best way to learn the following is to google each and everything!
-
Very basic understanding of git and github:
- What are repositories (local - remote - upstream), issues, pull requests
- How to clone a repository, how to fork a repository, how to set upstreams
- Adding, committing, pulling, pushing changes to remote repositories
-
For backend:
- Reading this blog on overview of HTTP
- Reading this blog on APIs
- Reading this blog on npm
- Creating a free MongoDB cluster and fetching the connection URI. (you may read my gist on how to - here)
-
For frontend:
- Understanding the differences between HTML and EJS.
- Using variables, if else, loops in EJS.
- CSS !
A step by step series of instructions that tell you how to get the project running locally is given below. Google every issue you face following the below instructions or just ask us in our Discord / WhatsApp group.
- Fork and clone the repository followed by opening the project in your text editor (with a terminal)
- create a
.env
file, copy the contents from.env.example
file to.env
. Replace the values ofPORT
,MONGO_URI
andJWT_SECRET
with your own values. - In the terminal, make sure you are in the project directory.
- run the command
npm install
ornpm i
- (you should learn when and why to use this command!) - run the command
npm start
- you will then receive a message mentioning of an address where the project is live - open the browser and browse to the above address!
The server is live here:
https://cleanurge.herokuapp.com/
Please read contributing.md for details on our code of conduct, and the process for submitting pull requests to us.
This project is licensed under the GNU Public License - see the LICENSE file for details.