OneStop is developed wih motivation of assisting IIT Guwahati students in daily life utilities like Academic timetable, Food menus, Bus/Ferry timings and more. Students' Web Committee took the lead for this product, involved in its development from ideation, user research to deployment and release.
- Follow this link to app codebase repository.
- Follow this guide to setup Android Studio & Flutter SDK on your machine
- Prerequisites:
- Node.js installed on your machine.
- A
.env
file containing environment variables. - push-notification-key json secret file of firebase application
- Environment variables inside .env:
- BASE_URL=/onestop/api/
- PORT=9010
- API_URL=https://localhost:3000/onestop/api
- DATABASE_URI=YOUR_MONGODB_URI
- MICROSOFT_GRAPH_CLIENT_ID=FROM AZURE ACTIVE DIRECTORY
- OUTLOOK_CLIENT_ID=FROM AZURE ACTIVE DIRECTORY
- OUTLOOK_CLIENT_SECRET=FROM AZURE ACTIVE DIRECTORY
- MICROSOFT_GRAPH_CLIENT_SECRET=FROM AZURE ACTIVE DIRECTORY
- MICROSOFT_GRAPH_TENANT_ID=FROM AZURE ACTIVE DIRECTORY
- SECURITY_KEY=HEADERKEY
- ACCESS_JWT_SECRET=YOUR_JWT_SECRET
- REFRESH_JWT_SECRET=YOUR_REFRESH_JWT_SECRET
- MODERATOR_KEY=SWC_ADMIN_MODERATOR
- ADMIN_PANEL_COOKIE_SECRET="CookieSecret"
- Clone the Repository:
git clone https://github.com/swciitg/one-stop-2021.git cd one-stop-2021
- Install packages and start express server:
npm install && node app.js
- We choose Node.js & Express.js for building backend APIs and have used various npm packages.
- Followed MVC (Model View Controller) Architecture for separtion of different components and scaling can be done easily and best practices on backend.
- Used MongoDB database which is a very popular No-SQL & scalable database in market.
- Followed proper folder structure & best practices to develop different components on application side.
- Why built separate backend service instead of integrating services like Firebase ?
- Integrating Firebase SDK in Flutter causes the app to perform slow compared to directly making API requests to your server.
- Also, now application & backend's code remain separated and development can be done easily, scaling application & backend side.
- Most modern applications follow same practice of separating their different services.
- How Staging environment works ?
- We have setup a CD pipeline on dev branch and with push, the changes are deployed on our staging server.
- We perform proper testing for each release and then, merge dev into main branch for publishing our changes to production.
- Shift to Typescript instead of Javascript because of various advantages.
- Refactor existing code for various features.
- Integrated test-cases for future releases.
- Generate API documentation using tools like Swagger.