GithubHelp home page GithubHelp logo

creometry-vessel / colibris Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 2.0 21.82 MB

Holds the code and config file for Colibris app

Home Page: https://colibris.creometry.dev

License: GNU General Public License v3.0

Dockerfile 0.39% JavaScript 49.94% CSS 44.04% HTML 4.11% SCSS 0.27% Go 1.24%
incubating greentech startups creometry-vessel

colibris's Introduction

Colibris Tunisia أعمل إلي عليك

Logo

Overview

Colibris is an environmental service company that provides door-to-door pick up of recyclabe waste with an incentive system and behavioural mechanisms to encourage eco-responsible waste management. This repository hosts the software used by Colibris to automate the business process and track customers, pick-ups, incentives, and generate insights.

Contribution guidelines

Feel free to fork the repo and send PRs

License

This project is licensed under the terms of the GPLv3 license. do almost anything they want with your project, except distributing closed source versions.

Maintainers

This software is developed and maintained by Creometry Lab

Please report vulnerabilities privately to the maintainers via email

colibris's People

Contributors

aziz-bhy avatar dependabot[bot] avatar hadhemi-ouni avatar meherhendi avatar mghlaiel avatar mohamed-benattia avatar seifbarouni avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

colibris's Issues

Mobile App:

  • Create new or edit the existing Android client in ./Android folder

Admin Dashboards

Create an admin dashboard with a new Facebook auth client that will manage admin access from Facebook dev portal

Besides Facebook auth, the Admin dashboard offers at least the following functionalities:

  • Fetch schedule by date and by shift (without sorting)

  • View/Edit/delete pick-up requests

  • Sort (button) the fetched pick-up requests (Before or after editing)

  • Add/edit Google Maps API key for web and backend services

update admin manifests

  • update Deployment name + service name + labels from dashboard to adminweb
  • update Deployment name + service name + labels from dashboard to adminweb
  • update nodeSelector in web.yaml and replace key host with key community
  • Update ingress to exposes admin web service on /admin-web endpoint

add MAPS keys to GitHub secrets

store G MAPS keys in GitHub secrets following this pattern

  • GMAPS_API_NAME (e.g. GMAPS_EMBED_API, GMAPS_GEOCODING_API)

  • FB_API

update actions to use API secrets when building artifact

Only secret values that are necessary during the build process are concerned by this. Other values may be better suited for a Kubernetes secret.

  • Decide a naming convention for each API key secrets per client per service per API (eg. Geocoding-coverage-android)
  • Generate all keys from colibris[at]creometry.dev and store them in GitHub secrets following the naming conventions
  • Pass env variables to containers build action (syntax)
  • Add actions for newly merged services

Add admin dashboard

  • The admin dashboard gives access to one or more specific designated Admins to view, edit, and remove appointments.

  • More actions allowed to admins will be added in the future such as viewing ratings, pick-up status, and adding partners.

Taking Appointments

App needs to take user's chosen address (street, city, governorate) and get available dates based on it

Collector Service:

  • Create a function to retrieve a list of appointments from the appointments service for a given DAY and ZONE and a shift (Morning shift and Afternoon shift)
  • Create an functions (can be a separate service) that sends a the locations in each appointment to Google Maps direction API and return an itinerary (max 20 locations per itinerary)
  • #29
  • #29 Collector confirms pick-up by pressing "X" and "green V Check". if "X" the collector chose a reason from a defined list (Reason1, reason2, reason3, etc.)
  • #29 If pick-up is successful (green check), the collector will input rating based on Quantity, quality, and treatment.
  • Post rating results to rating service
  • save pick-up to DB which keeps logs of all appointments outcome whether it's successful or not (save appointment logs without ratings. ratings should be saved to a separate rating DB)

Controls on user inputs and UX flow

Currently, the UI does not implement any controls on inputs or steps that depend on previous steps
the following is a non-exhaustive list of the controls that need to be implemented:

  • Phone Number must NOT contain letters and has a Length of exactly 8 characters
  • Street address auto-completion (see example and docs)
  • Make address validation mandatory before submitting.

user accounts

DATA

  • First name
  • Last name
  • Primary Phone #
  • Secondary Phone #
  • Multiple locations: Boolean
  • Address(es) [Type (Residence, Villa, apt, office, etc.) | Street address fields (Street #, Apt #, Building name, Street name, City, Postal Code, Longitude, Latitude]
  • Badge/Score: (1 to 5)
  • More?

Functionalities:

  • if the user DOES NOT exist -> create a profile
  • if the user exist -> display the profile with an update button to edit it
  • Long/Lat read from a map for each address
  • Must be able to serve First and last name + Phone number + Multiple Location value fields + all Addresses Fields to appointment service.
  • This service updates the user's badge/score after every pick confirmation received from the history service

update volumes in manifest

TODO:

  • Update manifests to use dynamically provisioned volumes.
  • Update config map with hostnames and API endpoint values.

Fix: Removing and editing appointements

  • When a user clicks on the remove button to delete a scheduled appointment, they must refresh the page to see it disappear. A easy fix for this would avoid users confusion whether the appointment is deleted or not.

  • Add an edit button next to the remove button to allow users to change the time and date of a scheduled appointment.

Create a service that reads a list of locations and generates an itinerary

the itinerary will be displayed one destination at a time.
Every destination must show the navigation map, the customer name and 3 buttons:

  • Phone button
  • Successful button
  • Failed button (when pressed) displays a list of reasons to select why the pick-up has failed.

All destinations and their results are kept in a "journal" where trips are logged for history tracking.

Sort Pick-up requests and generate an itinerary/route

Note: This feature is part of the scheduling code

Using GMAPs Distance Matrix, Send 2 or more pick-up locations (LongLat values from the pick-up request object to be sorted by distance)

For each item in the sorted list, find the corresponding pick-up request object and patch the field "rank"

Possible enhancements:
What triggers the sorting process?:

  • A threshold limit reached: what if the threshold isn't reached? e.g. Monday has only 10 pick-up requests when the limit is 20. In this case, the sorting wouldn't be triggered at all.
  • (re)Sort upon every new pick-up request registration, this would generate too many/costly calls to GMAPS Distance Matrix API.
  • Upon collector request of a route: possibly the best option.

Please discuss below

Rating service: calculates rating for every pick-up and stores the details in its DB.

  • When pick-up is successful, the collector gets to rate it. Collect service sends Rating data (data quality, Quantity, treatment) to rating service.
  • Rating service calculates overall Rating and reward points according to a basic average formula (subject to change according to colibris' requirements)
  • Rating service stores Details of "rating data" and overall rating per pick-up, Customer, Location, Date, and time.
  • Rating service sends newly calculated "overall rating" + "reward points" to User service to update Data in User profile

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.