Giter Club home page Giter Club logo

letsdoitworld / world-cleanup-day Goto Github PK

View Code? Open in Web Editor NEW
109.0 16.0 45.0 405.56 MB

☀️ World Cleanup Day: App (React Native) & Platform (Node). Join us in building software for a cleaner planet! PRs welcome!

Home Page: https://www.letsdoitworld.org/

License: GNU General Public License v3.0

JavaScript 90.12% HTML 0.10% CSS 3.78% Shell 0.56% Python 0.08% Java 0.66% Objective-C 4.35% Ruby 0.36%
nodejs javascript microservices-architecture react react-native android ios senecajs pollution environmentalism

world-cleanup-day's People

Contributors

bednyak avatar broshkovd avatar daniel-jirca avatar densa avatar georg199041 avatar gitter-badger avatar krishaamer avatar kucherenkoihor avatar lynxlynxlynx avatar mihaisaru avatar severianremi avatar slavapanevskiy avatar volodymyr-zhuravlov avatar vsheremet92 avatar yalantisgeorge avatar zuavra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

world-cleanup-day's Issues

Investigate upgrade to expo sdk version 20.0.0

The project currently uses the expo sdk version 19.0.0. According to their release announcement, there are no breaking changes.
However, the new version uses a different version of react-native, and it should be investigated.

Also, it might fix issues with the ImagePicker on lower versions of android ( 4.4 )

See my edited trashpoints in my activity

At the moment, in My activity, only the trashpoint created by the current user are displayed. The trashpoints edited by the current user should be displayed in My activity as well

Tapping a cluster doesn't zoom in fast enough

If you look at the Oslo data or the Belgian 4, you have to tap too many times to get anywhere. The Belgian example zooms you in to an absurd level before the cluster is split. Could be duplicated reports, but the Oslo data also makes it obvious.

Starting with zoomed out Europe, I see a cluster of 15 over Norway. I have to click it some 7 times before it is split into subclusters. I expected to be taken to that zoom level immediately, upon first click.

As a sidenote, related to #5, the cluster position keeps jumping around on the map when you're zooming.

Network error-no internet connection

After photo is added and user is directed to add more information page, it is common to get a network error message on some phones (Samsung S6 Edge, android 7.1.1; Sony Xperia f5321, android 7.1.1)

Better API documentation

Make it super easy to understand (and for Google to find) what APIs exist and how to use them + some showcase examples of apps using them.

offline mapping mode

When creating a trashpoint, if there is no Internet connection, keep the data locally until it can be sent to the database. Display the user a message: Your trashpoint is going to be created when your device is connected to the Internet

Add UX assets to docs

Document mandatory and nice-to-have app features and add relevant wireframes, mockups and design images to each.

Fix invalid placement of trashpoint clusters

Trashpoint clustering means displaying multiple nearby trashpoints as a single marker on the map. This helps to unclutter the view when zoomed out and/or large viewports.

The current trashpoint implementation uses 30 rectangular grids with cell size ranging from 1m to 1000km. The trashpoints are mapped to grid coordinates using CouchDB views. Each grid cell has a status (derived from the most urgent status among the trahspoints in it), a trashpoint count, and a position (at the center of the grid cell). The API endpoint GET /overview/clusters transforms the viewpoirt rectangle from longitude/latitude coordinates to grid coordinates, to determine which grid cells should be displayed. The frontend clients are the ones that decide which grid size to request depending on zoom.

The issue: placing the cluster at the center of the grid cell leads to cases where there is a visible discrepancy between the location of most trashpoints in the cell and the location of the cluster.

Possible solutions:

  1. Make the frontend clients request smaller grid sizes. The current grid sizes have been chosen to be "human readable" (multiples of common sizes), but better sizes can be calculated by picking distances that map to ~1mm on the device screen at a certain zoom level, thus making the displacement mostly undetectable by the user. Please note that the mapping of the trashpoints to the grid is done with CouchDB views, which has two implications: (a) every new grid view needs to be calculated, which may take a while, depending on how many trashpoints there are, and (b) the grid size of a view cannot by dynamic, it is hardcoded in the view's map function, so we need to pick grid sizes that work well with most devices, we cannot request device-specific grids.
  2. Change the cluster placement logic. For simplicity's sake, the cluster position was chosen to always be the center of the grid cell in the reduce functions of the CouchDB views. However, these functions have access to the coordinates of all the trashpoints in the cell, so a better algorithm is possible, as long as it can be implemented in vanilla JS with only the SpiderMonkey engine primitives (Math etc.). A very rudimentary improvement would be to use the center of the bounding box containing all trashpoints, but of course a more advanced algorithm using distribution weights would be even better.

Add “Cleaned” button

Add cleaned button in initial “point status.” Normally, when picking up a handful to bagful of litter, I remove the litter. This is also important to capture all the information on the litter during the first pass. If the average user must go back to document that they picked up, they won’t do it. To me “regular” and “threat” describe the type of trash. “Cleaned” describes my actions.

apply for area leader

From #58 Display a section in the user profile where the volunteer can send an application to the area leader/s that are able to manage his account. The area leader has a section where he sees the list of applications. After the request is solved, area leaders or super admins can dismiss the request which disappears from the list

Add field "Team" to app user profile

Idea is to organise mapping event on 9th of Nov in Amsterdam and allow global admin to see the results. Team name is not visible on trash point ID card

UX: Improvements of login screen

  • Background looping video
  • Align Terms & Conditions and Privacy Policy to bottom
  • increase space between buttons and tryout link

App speed-up

Trash captured - reduce time on this screen from appx 5 seconds to 2 seconds.

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.