mzogheib / quoll Goto Github PK
View Code? Open in Web Editor NEWVisualise your personal data all in one place!
Visualise your personal data all in one place!
This confirms that it has not been changed for malicious purposes.
BE unit tests first, since that's where a lot of the important data transformations happen
packages/ui-components
client
?import { Button } from '@quoll/ui-components
References:
Current Behaviour
Expected Behaviour
Currently it just sends back activities that are intended to be displayed as a polyline.
Implement to satisfy figma designs, i.e. an entry can be a single place (coordinate) and any activities that happen at this place are wrapped up into that feed entry.
This should then mean that all feed entries have a corresponding map element.
Mobile only?
Every time you change route away from Home onMapMounted
is called with mapRef = null
, which blows up the google maps instance. This never used to happen.
Something like:
<Icon.Help size={32} color={green} />
<IconButton.Cross size={32} color={red} onClick={handleClose} />
Currently network requests are done inside the components and don't know much about the redux store.
Currently plain text dates are sent in the format YYYY-MM-DD
, which is what the toshl API expects.
Send something more generic that can then be converted to the expected formats for the toshl, strava and any other APIs. This will likely involve creating a proper date picker on the client side.
Be careful of timezones.
e.g. add escape to close.
Basically an opportunity to integrate a real modal solution into the FE.
Currently you have to re-connect to the data source(s) every time the server restarts. Implement a basic login and user profile that saves your settings, e.g. access tokens, so that you can login again in future and not have to reconnect.
Currently:
Consider:
Now with HMR + RHL (#43) the following happens:
yarn start
Ideally, it would just hot swap the fixed module ... but not sure if this is possible.
Issue #418
in the webpack repo might be related.
This seems to be a helpful solution
https://www.freecodecamp.org/news/learn-webpack-for-react-a36d4cac5060/
Toshl auth will need to be mocked
Getting errors like Can't render headers after they are sent to the client.
when attempting to refresh auth and the request fails.
Pretty sure error handling is not implemented properly, e.g. may need to pass errors through to next()
in the route handlers.
Toshl
Strava
API docs say it will be returned as is. I guess it should be the client's responsibility to uriEncode it on the way to the Toshl auth page so why would Toshl uriEncode it again?
Refer to this comment in issue #12.
Toshl is not returning state param during oauth flow so it's being faked.
Remove this hack when the parameter starts getting returned.
GET /feed?from=2018-06-01&to=2018-06-01
GET /feed-auth?source=strava
POST /feed-auth?source=strava&code=1234&userId=1234
DELETE /feed-auth?source=strava&userId=1234
https://developer.uber.com/docs
OAuth for each 3rd party api is handled via a number of very similar node wrapper packages. See https://github.com/mzogheib/quoll/blob/master/packages/api/package.json.
This isn't very scalable. A more generic/abstract solution would be better.
Ideas:
As per figma.
Button that links to settings
Can be opened via the help icon in the sidebar.
Max for per_page is 500, which leads to a reduced subset of locations.
Need to keep fetching more than 500 if necessary.
The solution for #48 only supported local development, i.e. through yarn workspaces.
In order to deploy the app to heroku with these new packages, they'll need to be published to npm so that heroku can run npm install
etc.
Lerna will likely be a useful tool here.
This will be a good time to implement an automated changelog solution like conventional commits.
References:
Click on an item
Highlight it
Display infoWindow
Click on a map element
Display infoWindow
Expand summary list
Highlight the item
Looks like the queryParams parser is not carrying out uri decoding properly but this only happens sometimes, e.g. =
at the end of the base64 encoded string is returned as %25D or whatever.
Can recreate with the following state object
{id: "toshl", token: "z38ph0sozo"}
Should be closely tied to or done together with ISSUE #27
Consider:
index.html
, favicon.ico
(and anything else?) be in a /public
folder? Why?Useful links:
This seems to only happen in this project. Have recreated a simpler version of this project with the exact same structure and it's not an issue there. No idea why.
Observations:
const server = app.listen(app.get('port'), () => {})
in server.js appears to be the culprit. Commenting this out stops the issue altogether. Perhaps it's unable to properly close the server?nodemon --delay 1 server.js
was helping but not anymore[0] throw er; // Unhandled 'error' event
[0] ^
[0]
[0] Error: listen EADDRINUSE :::3001
[0] at Object._errnoException (util.js:1024:11)
[0] at _exceptionWithHostPort (util.js:1046:20)
[0] at Server.setupListenHandle [as _listen2] (net.js:1351:14)
[0] at listenInCluster (net.js:1392:12)
[0] at Server.listen (net.js:1476:7)
[0] at Function.listen (/Users/marwan/Documents/dev/#projects/quoll/node_modules/express/lib/application.js:618:24)
[0] at Object.<anonymous> (/Users/marwan/Documents/dev/#projects/quoll/packages/server/server.js:16:20)
[0] at Module._compile (module.js:635:30)
[0] at Object.Module._extensions..js (module.js:646:10)
[0] at Module.load (module.js:554:32)```
Thoughts
../date-picker
rather than know that it's a containerCurrently it all stays on the same tab/window so you leave then come back and lose your state.
Launch in a different tab/window and handle all the logic on the settings page.
Currently it's just JSON files stored on disk (server). Client side also just uses local storage to manage user access with UUIDs.
Can be a simple MongoDB, Firebase etc. Cookies?
References:
Ideas:
Needs to fit all markers and polylines every they change
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.