Skip to content

swciitg/one-stop-2021

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


OneStop : IIT Guwahati campus application

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.

Download Links

🧩 Main Features

  • Bus/Ferry schedule
  • Lost/Found items reporting
  • Buy/Sell items listing service
  • Contacts to vital administrative sections.
  • Cab sharing to share cab expenses
  • Food outlets and hostel messes updated menu
  • Separate categories under Buy & Sell
  • Dynamic scoreboard for Inter-hostel competitions
  • Mobile notifications for multiple services
  • 💻 TechStack Used

    • Node.js
    • Express.js
    • Docker
    • Firebase - Cloud messaging
    • MongoDB
    • 💻 Additional services used

      • Microsoft outlook authentication - Microsoft Azure
      • Cloud Messaging API for mobile notifications - Google Firebase
      • Continous deployment workflow - Github Actions
      • 🍁 Mobile Application

        • Follow this link to app codebase repository.

        App views

        Image 1 Image 1 Image 2 Image 3

        Setting up project on your machine ⚙️

        🎪 Running application

        1. Prerequisites:
          • Node.js installed on your machine.
          • A .env file containing environment variables.
          • push-notification-key json secret file of firebase application

        1. 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"

        1. Clone the Repository:
          git clone https://github.com/swciitg/one-stop-2021.git
          cd one-stop-2021
          
        2. Install packages and start express server:
          npm install && node app.js
          
          

        🎨 Design

        • 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.

        🧛 Future Advancements

        • 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.

        🐛 Bug Reporting

        Feel free to open an issue on GitHub if you find any bug.


        ⭐ Feature Suggestion

        Feel free to open an issue on GitHub if you have feature idea to be added 🙌.