dcalacci / gigbox Goto Github PK
View Code? Open in Web Editor NEWGigbox is an open-source tracker for gig workers, letting workers export their data while sharing it with researchers.
License: Other
Gigbox is an open-source tracker for gig workers, letting workers export their data while sharing it with researchers.
License: Other
We should make a quick onboarding that gives an overview of the app as a whole -- tracking jobs, saving data, sharing with researchers -- before diving into consent.
We need to show users what kinds of screenshots they can upload to enter pay and tips.
We are hand-rolling types to have consistency between our graphql API in the flask backend and our frontend.
Options:
Assignees: @dcalacci
Labels: enhancement
!-- Edit the body of your new issue then click the โ "Create Issue" button in the top right of the editor. The first line will be the issue title. Assignees and Labels follow after a blank line. Leave an empty line before beginning the body of the issue. -->
it should instead use the begininng of this week
We should automatically deploy our server code to our k8s cluster (development or production/default namespace) when we push to develop
or master
, respectively.
In the shift detail screen, when a user deletes a shift, it should...actually delete it.
Instead of first-letters (I, S, D, etc) the boxes should show the recognizable brand icons for those apps
Line 2 in f8c78a9
We are not currently testing our graphql api!!
Linking to PR #26
Line 10 in 6d3f7d6
A 'smart' way to do this would be to compute only new distance, but it's seemingly cheap right now to compute mileage.
This issue is a request for a new feature, a map aggregation of all of a user's jobs from the filter screen.
A common way that people track tips and work is on a map -- who has tipped, what stores they shopped at, etc. No trackers currently offer this feature.
A few possible implementations:
1. Users filter jobs on the 'jobs list' screen, and then can tap a button to see a map view of all their jobs
** 2. We implement a separate map screen, with markers for job starts and stops, with its own filter (same filter as the job list) **
Things to consider / solve
After onboarding, users should hit a brief app walkthrough that shows them how to use gigbox, how to track a shift & jobs, and how to edit / enter pay
Right now our user flow looks something like:
Right now, there are a few issues with this flow:
TO fix this issue, we need to:
We need to develop the consent flow in routing and state
gigbox/features/shiftList/Shift.tsx
Line 62 in 6b3f6ce
I should be able to zoom in on a map for a job or shift to see its details.
One way, using cronJobs in kubernetes and s3: https://jmrobles.medium.com/how-backup-your-postgres-db-into-aws-s3-in-kubernetes-edf6cf0db11
We need to implement a back-end API to process user screenshots using methods from shipt calculator.
We can use the layoutLM approach eventually but to start, I think a simple OCR solution should work better.
gigbox/components/JobsList.tsx
Line 26 in 3662cb2
The OSRM map matching algorithm adds false miles trips when a user stays stationary for a long period of time.
To close this issue, the following needs to happen:
When a user forgets to end a shift, it can be much longer than their real time working.
We should:
The last job displayed is below the screen. Seems to be pushed down by the header with stats.
I think it should be in the form of cards that sit on the screen, above the today and this week cards, that are a call to action for users.
If a user forgets to end a shift or job, it will continue tracking for many hours. We should both end shifts at a reasonable time and allow users to manually edit the start and stop times of both shifts and jobs.
Right now, to publish our we either depend on our workflow having the correct API_URL
env var (in github), or setting the env var manually when we publish (i.e. $ API_URL=https://dev.gigbox.org expo build:ios --release-channel develop
).
Instead, we should make these env vars:
API_URL=app.gigbox.org
DEV_API_URL=dev.gigbox.org
STAGING_API_URL=staging.gigbox.org
and then, in our config/code, we should test which release candidate we are building for, and use the proper var:
import { Constants } from 'expo'
function getApiUrl () {
const rc = Constants.manifest.releaseChannel
if (rc === 'develop) { ...}
}
we get a response 'too big' from OSRM. I've tried changing limits in our docker-compose.yml.
This feature should enable us to:
start_date
and end_date
)I think this means we need to implement a map-matching service on our backend.
Options:
This is a C++ backend that integrates with data from OSM. No docker image. For each shift, the flow would be:
fmm
to match trajectory to osmnx street driving networkThis is a more fully-featured system and might result in faster queries, especially if we download the US road map ahead of time from e.g. geofabrik. The US road map is 7.3GB currently, and we will need to keep this up to date.
I think I prefer this route because:
fmm
, I imagine that we'd eventually want to cache parts of bounding boxes from requests. I don't think this app has to implement that kind of caching to work properlyassociated:
Location records do not have an associated user_id. This makes finding e.g. total mileage for a user over a time period greater than a shift difficult.
gigbox/server/api/graphql/query.py
Line 72 in 3c54992
When location is being tracked on a shift, and we see that a user has stopped or started driving out of a stop, we should prompt them to start a job.
After consent, users should be given an initial survey that asks some basic demographic information and what apps they work for.
We need to update the OSRM docker image to run the US latest maps or on planet, to provide accurate mileage. This is a big image and will take some time to build!
We should display a separate view for each "trip" in a tracked shift.
Mileage is calculated on-demand when a query hits the GetWeeklySummary endpoint. Instead, we should cache this result in the Shift model itself when it's saved.
Workers should be able to export their data to a CSV that they can then email or just download to their phone
We should send a toast or some similar UX validation when an OTP is sent to a user to make sure they know it's been sent
Instead of the source for images being a user's copy // the local URI for a resource, we should request and display the image that's been uploaded to the server instead. This allows a user to use multiple devices, and it means that the local screenshot can be deleted but this feature will still work.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.