GreenVenture is an innovative mobile application that incentivizes users to recycle non-contaminated materials by providing rewards for their efforts. Inspired by the successful Healthy 365 app from the Health Promotion Board (HPB), GreenVenture takes a similar approach, allowing users to scan a QR code to earn points for recycling. This not only motivates users to take action towards a more sustainable future but also provides instant feedback on whether their item is a valid recyclable. By making recycling a more rewarding and engaging experience, GreenVenture aims to encourage a wider community to participate in environmental efforts and make a positive impact on the planet.
GreenVenture consists of two parts:
- GreenVenture Backend (Microservices-Based Architecture)
- GreenVenture Frontend
- Tech Stack
- Features
- Technical Overview Diagram
- Database Entity-Relationship Diagram
- API Documentation
- Requirements
- Screenshots
- Authentication: OAuth2 with Facebook SSO Login
- Front-End: Vue.js & React.js
- Back-End: Flask & Node.js + Express.js
- Databases: MySQL & MongoDB
- Tools: Docker, LavinMQ & nodemailer
- Participate and complete recycling themed missions and earn points
- Redeem vouchers with points
- Participate in the community and view the leaderboards
- Microservices-based Architecture for scalability and flexibility.
Click the image for the expanded view
Click the image for the expanded view
The frontend of the application can be run locally. The backend can be run in a Docker container. The setup requirements are listed below:
Clone greenventure-frontend:
$ git clone git@github.com:xavierkoo/greenventure-frontend.git
Open your terminal in the local project root folder, and execute:
$ npm install
Run the application
$ npm run dev
Application will run by default on port 5173
Clone greenventure-main:
$ git clone git@github.com:xavierkoo/greenventure-main.git
- Run load.sql script to initialize the databases.
- Configure MongoDB connection for Leaderboard Service. Refer to this README.
First build the image:
$ docker-compose build
When ready, run it:
$ docker-compose up
Secondary UIs:
recycling-bin-frontend
-8081
leaderboards
-3000