{"_id":"@dwmkerr/tripweather","_rev":"2-85fe1deb0775345a187eedb43502605a","name":"@dwmkerr/tripweather","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.1":{"name":"@dwmkerr/tripweather","version":"0.1.1","private":false,"scripts":{"start":"node scripts/start.js","start:local":"TRIPWEATHER_USE_EMULATOR=1 node scripts/start.js","build":"node scripts/build.js","emulator":"npm run build --prefix functions -- --watch | firebase emulators:start","functions:shell":"firebase functions:shell","test":"NODE_OPTIONS=--experimental-vm-modules jest","lint":"eslint .","lint:fix":"eslint --fix .","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch --no-coverage","test:debug":"NODE_OPTIONS=--experimental-vm-modules node --inspect-brk ./node_modules/.bin/jest --runInBand --watch","tsc":"tsc"},"dependencies":{"@babel/core":"^7.16.0","@babel/plugin-proposal-private-property-in-object":"^7.21.11","@emotion/react":"^11.11.3","@emotion/styled":"^11.11.0","@esri/arcgis-rest-auth":"^3.7.0","@esri/arcgis-rest-geocoding":"^3.7.0","@esri/arcgis-rest-request":"^3.7.0","@mui/icons-material":"^5.15.7","@mui/joy":"^5.0.0-beta.25","@mui/lab":"^5.0.0-alpha.163","@mui/material":"^5.15.10","@mui/x-data-grid":"^6.19.5","@pmmmwh/react-refresh-webpack-plugin":"^0.5.3","@svgr/webpack":"^5.5.0","@testing-library/react":"^13.4.0","@testing-library/user-event":"^13.5.0","@types/autosuggest-highlight":"^3.2.3","@types/jest":"^29.0.0","@types/node":"^16.18.79","@types/react":"^18.2.52","@types/react-dom":"^18.2.18","autosuggest-highlight":"^3.3.4","babel-jest":"^29.7.0","babel-loader":"^8.2.3","babel-plugin-named-asset-import":"^0.3.8","babel-preset-react-app":"^10.0.1","bfj":"^7.0.2","browserslist":"^4.18.1","buffer":"^6.0.3","camelcase":"^6.2.1","case-sensitive-paths-webpack-plugin":"^2.4.0","css-loader":"^6.5.1","css-minimizer-webpack-plugin":"^3.2.0","dotenv":"^10.0.0","dotenv-expand":"^5.1.0","eslint":"^8.3.0","eslint-config-react-app":"^7.0.1","eslint-plugin-html":"^7.1.0","eslint-webpack-plugin":"^3.1.1","file-loader":"^6.2.0","firebase":"^10.8.0","firebase-admin":"^11.8.0","firebase-functions":"^4.7.0","firebase-tools":"^13.3.1","fs-extra":"^10.0.0","html-webpack-plugin":"^5.5.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","jest-resolve":"^27.4.2","jest-watch-typeahead":"^2.2.2","mini-css-extract-plugin":"^2.4.5","moment":"^2.30.1","node-polyfill-webpack-plugin":"^3.0.0","postcss":"^8.4.4","postcss-flexbugs-fixes":"^5.0.2","postcss-loader":"^6.2.1","postcss-normalize":"^10.0.1","postcss-preset-env":"^7.0.1","prompts":"^2.4.2","react":"^18.2.0","react-app-polyfill":"^3.0.0","react-dev-utils":"^12.0.1","react-dom":"^18.2.0","react-refresh":"^0.11.0","react-router-dom":"^6.22.1","resolve":"^1.20.0","resolve-url-loader":"^4.0.0","sass-loader":"^12.3.0","semver":"^7.3.5","source-map-loader":"^3.0.0","style-loader":"^3.3.1","tailwindcss":"^3.0.2","terser-webpack-plugin":"^5.2.5","ts-jest":"^29.1.2","typescript":"^4.9.5","web-vitals":"^2.1.4","webpack":"^5.64.4","webpack-dev-server":"^4.6.0","webpack-manifest-plugin":"^4.0.2","workbox-webpack-plugin":"^6.4.1"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"devDependencies":{"@testing-library/jest-dom":"^6.4.2","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","identity-obj-proxy":"^3.0.0","ts-jest-resolver":"^2.0.1"},"babel":{"presets":["react-app"]},"_id":"@dwmkerr/tripweather@0.1.1","gitHead":"ce588b775dc94d1652b5789b7ec765e2470f151e","description":"[![main](https://github.com/dwmkerr/lifeline/actions/workflows/main.yaml/badge.svg)](https://github.com/dwmkerr/lifeline/actions/workflows/main.yaml) [![codecov](https://codecov.io/gh/dwmkerr/tripweather/graph/badge.svg?token=7e6XaNFvoG)](https://codecov.","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-+Rd3dIABRyPq5b3d9XhCkYnsUo6KD8HjDJI7l5UWBNuywuB09q0nDZhtyIqpQrWox5sbffU3XjSzgzDrlWs61A==","shasum":"7856466ec8a1a6b1d51149861def530adbc337c0","tarball":"https://registry.npmjs.org/@dwmkerr/tripweather/-/tripweather-0.1.1.tgz","fileCount":100,"unpackedSize":3517134,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1hklWUMKGp4xmSF8hV3n//q2/DNbTYV/+5jnTfx0HfgIhAPlxKo1jBjxtiq0Eel2vd4rX6XzDXeibWqDc/3DmcXbp"}]},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"directories":{},"maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tripweather_0.1.1_1709181494820_0.9042259020609253"},"_hasShrinkwrap":false},"0.1.3":{"name":"@dwmkerr/tripweather","version":"0.1.3","private":false,"scripts":{"start":"node scripts/start.js","start:local":"TRIPWEATHER_USE_EMULATOR=1 node scripts/start.js","build":"node scripts/build.js","emulator":"npm run build --prefix functions -- --watch | firebase emulators:start","functions:shell":"firebase functions:shell","test":"NODE_OPTIONS=--experimental-vm-modules jest","lint":"eslint .","lint:fix":"eslint --fix .","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch --no-coverage","test:debug":"NODE_OPTIONS=--experimental-vm-modules node --inspect-brk ./node_modules/.bin/jest --runInBand --watch","tsc":"tsc"},"dependencies":{"@babel/core":"^7.16.0","@babel/plugin-proposal-private-property-in-object":"^7.21.11","@emotion/react":"^11.11.3","@emotion/styled":"^11.11.0","@esri/arcgis-rest-auth":"^3.7.0","@esri/arcgis-rest-geocoding":"^3.7.0","@esri/arcgis-rest-request":"^3.7.0","@mui/icons-material":"^5.15.7","@mui/joy":"^5.0.0-beta.25","@mui/lab":"^5.0.0-alpha.163","@mui/material":"^5.15.10","@mui/x-data-grid":"^6.19.5","@pmmmwh/react-refresh-webpack-plugin":"^0.5.3","@svgr/webpack":"^5.5.0","@testing-library/react":"^13.4.0","@testing-library/user-event":"^13.5.0","@types/autosuggest-highlight":"^3.2.3","@types/jest":"^29.0.0","@types/node":"^16.18.79","@types/react":"^18.2.52","@types/react-dom":"^18.2.18","autosuggest-highlight":"^3.3.4","babel-jest":"^29.7.0","babel-loader":"^8.2.3","babel-plugin-named-asset-import":"^0.3.8","babel-preset-react-app":"^10.0.1","bfj":"^7.0.2","browserslist":"^4.18.1","buffer":"^6.0.3","camelcase":"^6.2.1","case-sensitive-paths-webpack-plugin":"^2.4.0","css-loader":"^6.5.1","css-minimizer-webpack-plugin":"^3.2.0","dotenv":"^10.0.0","dotenv-expand":"^5.1.0","eslint":"^8.3.0","eslint-config-react-app":"^7.0.1","eslint-plugin-html":"^7.1.0","eslint-webpack-plugin":"^3.1.1","file-loader":"^6.2.0","firebase":"^10.8.0","firebase-admin":"^11.8.0","firebase-functions":"^4.7.0","firebase-tools":"^13.3.1","fs-extra":"^10.0.0","html-webpack-plugin":"^5.5.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","jest-resolve":"^27.4.2","jest-watch-typeahead":"^2.2.2","mini-css-extract-plugin":"^2.4.5","moment":"^2.30.1","node-polyfill-webpack-plugin":"^3.0.0","postcss":"^8.4.4","postcss-flexbugs-fixes":"^5.0.2","postcss-loader":"^6.2.1","postcss-normalize":"^10.0.1","postcss-preset-env":"^7.0.1","prompts":"^2.4.2","react":"^18.2.0","react-app-polyfill":"^3.0.0","react-dev-utils":"^12.0.1","react-dom":"^18.2.0","react-refresh":"^0.11.0","react-router-dom":"^6.22.1","resolve":"^1.20.0","resolve-url-loader":"^4.0.0","sass-loader":"^12.3.0","semver":"^7.3.5","source-map-loader":"^3.0.0","style-loader":"^3.3.1","tailwindcss":"^3.0.2","terser-webpack-plugin":"^5.2.5","ts-jest":"^29.1.2","typescript":"^4.9.5","web-vitals":"^2.1.4","webpack":"^5.64.4","webpack-dev-server":"^4.6.0","webpack-manifest-plugin":"^4.0.2","workbox-webpack-plugin":"^6.4.1"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"devDependencies":{"@testing-library/jest-dom":"^6.4.2","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","identity-obj-proxy":"^3.0.0","ts-jest-resolver":"^2.0.1"},"babel":{"presets":["react-app"]},"_id":"@dwmkerr/tripweather@0.1.3","gitHead":"41980d35e6af7c97d6b631b208db1f2bba82edce","description":"[![main](https://github.com/dwmkerr/lifeline/actions/workflows/main.yaml/badge.svg)](https://github.com/dwmkerr/lifeline/actions/workflows/main.yaml) [![codecov](https://codecov.io/gh/dwmkerr/tripweather/graph/badge.svg?token=7e6XaNFvoG)](https://codecov.","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-X/VKyyxspGW5eu/8p8Ve0GGUnyh1+XpYaGIb+a3uQMOM+iYuLPxq2qzANdG1CGqZhe+QDzv1izUO0oLs9J8c1A==","shasum":"0850a4411f62d1452705c87e394645d1318431ac","tarball":"https://registry.npmjs.org/@dwmkerr/tripweather/-/tripweather-0.1.3.tgz","fileCount":100,"unpackedSize":3519162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCliRzoVgJTzKWW1SQ5NfUi9ppRHiqrxhuqO6YX+F97FwIhAPYYp02chn2J6RAla2zpzyPh1TWGdWsMpLm5+q5I450f"}]},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"directories":{},"maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tripweather_0.1.3_1709185712455_0.9637641347243482"},"_hasShrinkwrap":false},"0.2.0":{"name":"@dwmkerr/tripweather","version":"0.2.0","private":false,"scripts":{"start":"node scripts/start.js","start:local":"TRIPWEATHER_USE_EMULATOR=1 node scripts/start.js","build":"node scripts/build.js","emulator":"npm run build --prefix functions -- --watch | firebase emulators:start","functions:shell":"firebase functions:shell","test":"NODE_OPTIONS=--experimental-vm-modules jest","lint":"eslint .","lint:fix":"eslint --fix .","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch --no-coverage","test:debug":"NODE_OPTIONS=--experimental-vm-modules node --inspect-brk ./node_modules/.bin/jest --runInBand --watch","tsc":"tsc"},"dependencies":{"@babel/core":"^7.16.0","@babel/plugin-proposal-private-property-in-object":"^7.21.11","@emotion/react":"^11.11.3","@emotion/styled":"^11.11.0","@esri/arcgis-rest-auth":"^3.7.0","@esri/arcgis-rest-geocoding":"^3.7.0","@esri/arcgis-rest-request":"^3.7.0","@mui/icons-material":"^5.15.7","@mui/joy":"^5.0.0-beta.25","@mui/lab":"^5.0.0-alpha.163","@mui/material":"^5.15.10","@mui/x-data-grid":"^6.19.5","@pmmmwh/react-refresh-webpack-plugin":"^0.5.3","@svgr/webpack":"^5.5.0","@testing-library/react":"^13.4.0","@testing-library/user-event":"^13.5.0","@types/autosuggest-highlight":"^3.2.3","@types/jest":"^29.0.0","@types/node":"^16.18.79","@types/react":"^18.2.52","@types/react-dom":"^18.2.18","autosuggest-highlight":"^3.3.4","babel-jest":"^29.7.0","babel-loader":"^8.2.3","babel-plugin-named-asset-import":"^0.3.8","babel-preset-react-app":"^10.0.1","bfj":"^7.0.2","browserslist":"^4.18.1","buffer":"^6.0.3","camelcase":"^6.2.1","case-sensitive-paths-webpack-plugin":"^2.4.0","css-loader":"^6.5.1","css-minimizer-webpack-plugin":"^3.2.0","dotenv":"^10.0.0","dotenv-expand":"^5.1.0","eslint":"^8.3.0","eslint-config-react-app":"^7.0.1","eslint-plugin-html":"^7.1.0","eslint-webpack-plugin":"^3.1.1","file-loader":"^6.2.0","firebase":"^10.8.0","firebase-admin":"^11.8.0","firebase-functions":"^4.7.0","firebase-tools":"^13.3.1","fs-extra":"^10.0.0","html-webpack-plugin":"^5.5.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","jest-resolve":"^27.4.2","jest-watch-typeahead":"^2.2.2","mini-css-extract-plugin":"^2.4.5","moment":"^2.30.1","node-polyfill-webpack-plugin":"^3.0.0","postcss":"^8.4.4","postcss-flexbugs-fixes":"^5.0.2","postcss-loader":"^6.2.1","postcss-normalize":"^10.0.1","postcss-preset-env":"^7.0.1","prompts":"^2.4.2","react":"^18.2.0","react-app-polyfill":"^3.0.0","react-dev-utils":"^12.0.1","react-dom":"^18.2.0","react-refresh":"^0.11.0","react-router-dom":"^6.22.1","resolve":"^1.20.0","resolve-url-loader":"^4.0.0","sass-loader":"^12.3.0","semver":"^7.3.5","source-map-loader":"^3.0.0","style-loader":"^3.3.1","tailwindcss":"^3.0.2","terser-webpack-plugin":"^5.2.5","ts-jest":"^29.1.2","typescript":"^4.9.5","web-vitals":"^2.1.4","webpack":"^5.64.4","webpack-dev-server":"^4.6.0","webpack-manifest-plugin":"^4.0.2","workbox-webpack-plugin":"^6.4.1"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"devDependencies":{"@testing-library/jest-dom":"^6.4.2","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","identity-obj-proxy":"^3.0.0","ts-jest-resolver":"^2.0.1"},"babel":{"presets":["react-app"]},"_id":"@dwmkerr/tripweather@0.2.0","gitHead":"de7075af6e7fe78b2b8ba1406c37ad397a7d5e44","description":"[![main](https://github.com/dwmkerr/tripweather/actions/workflows/main.yaml/badge.svg)](https://github.com/dwmkerr/tripweather/actions/workflows/main.yaml) [![codecov](https://codecov.io/gh/dwmkerr/tripweather/graph/badge.svg?token=7e6XaNFvoG)](https://co","_nodeVersion":"18.19.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-KVPh5VFyAUM/u/P/Tiblg2T90fhYEq+Atz9ZVyfkOBYiqQpI2Hyep1AQJquOEj+WC3QN+G14Iv2X+WN5eYbk1w==","shasum":"702ac85ca98afc4056a7c805276676aac614bb7c","tarball":"https://registry.npmjs.org/@dwmkerr/tripweather/-/tripweather-0.2.0.tgz","fileCount":112,"unpackedSize":3550283,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsKlbpzMscd1bBtV7jnRcVBFWsBPTt1K0xWtcOUcdaVAiEA186XHA0FAK3CUyjrDWUINSBaYOgdCKmMZulVNsPDxc8="}]},"_npmUser":{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"},"directories":{},"maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tripweather_0.2.0_1709444449193_0.2762037215140485"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-29T04:38:14.723Z","0.1.1":"2024-02-29T04:38:15.064Z","modified":"2024-03-03T05:40:49.928Z","0.1.3":"2024-02-29T05:48:32.673Z","0.2.0":"2024-03-03T05:40:49.479Z"},"maintainers":[{"name":"dwmkerr-admin","email":"dwmkerr@gmail.com"}],"description":"[![main](https://github.com/dwmkerr/tripweather/actions/workflows/main.yaml/badge.svg)](https://github.com/dwmkerr/tripweather/actions/workflows/main.yaml) [![codecov](https://codecov.io/gh/dwmkerr/tripweather/graph/badge.svg?token=7e6XaNFvoG)](https://co","readme":"# tripweather\n\n[![main](https://github.com/dwmkerr/tripweather/actions/workflows/main.yaml/badge.svg)](https://github.com/dwmkerr/tripweather/actions/workflows/main.yaml) [![codecov](https://codecov.io/gh/dwmkerr/tripweather/graph/badge.svg?token=7e6XaNFvoG)](https://codecov.io/gh/dwmkerr/tripweather)\n\nExperimentation project for a climbing trip planner app\n\nhttps://dwmkerr-tripweather.web.app/\n\n<!-- vim-markdown-toc GFM -->\n\n- [Developer Guide](#developer-guide)\n    - [Firebase](#firebase)\n    - [Firebase Functions](#firebase-functions)\n- [Releasing](#releasing)\n- [Service Tiers](#service-tiers)\n    - [Guest](#guest)\n    - [User](#user)\n    - [Subscriber](#subscriber)\n- [Research](#research)\n- [TODO](#todo)\n    - [0.1.0](#010)\n    - [0.2.x](#02x)\n    - [Future](#future)\n\n<!-- vim-markdown-toc -->\n\n## Developer Guide\n\n| Command | Description |\n| ------- | ----------- |\n| `npm run start` | Run the website locally, connected to the cloud |\n| `npm run start:local` | Run the website locally, connected to the local emulator |\n| `npm run lint` | Lint the code with eslint/prettier |\n| `npm run lint:fix` | Fix the code with eslint/prettier |\n\n### Firebase\n\nUse the [Firebase Local Emulator Suite](https://firebase.google.com/docs/emulator-suite) to help when working with Firebase.\n\nSetup looks like this:\n\n```bash\n# Install firebase CLI tools, then login.\n# Don't install with:\n#   curl -sL https://firebase.tools | bash\n# As this seems to suffer from some CLI issues:\n#   - https://github.com/firebase/firebase-tools/issues/6446\nnpm install -g firebase-tools\nfirebase login\n\n# Initialise the firebase project (not needed for most users, only if you are\n# forking and building your own project from scratch).\n#\n# firebase init\n#\n# Choose: Firestore, Emulators. Lifeline project. Default options seem to be fine.\n\n# Start the emulator, optionally open the web interface.\nfirebase emulators:start\nopen http://localhost:4000\n```\n\nDeploy indexes and rules with:\n\n```bash\nfireabase deploy --only firestore\n```\n\n### Firebase Functions\n\nTo watch for changes in the code and run the Firebase functions in the emulator, run:\n\n```bash\nnpm run emulate\n```\n\nTo [test functions interactively](https://firebase.google.com/docs/functions/local-shell):\n\n```bash\nfirebase functions:shell\n\n# Then e.g:\n# await weather({data: {latitude: \"-1.56266\", longitude: \"53.11893\"}})\n# await arcGisSuggest({data: {location: \"Peak District\"}})\n```\n\nFirebase function parameters and configuration are defined in `./functions/src/parameters.ts`. These parameters are loaded from Firebase at runtime, but can also be defined in `./functions/.secrets.local` if needed.\n\n## Releasing\n\nThis project uses [Release Please](https://github.com/googleapis/release-please) to manage releases. As long as you use [Conventional Commit messages](https://www.conventionalcommits.org/en/v1.0.0/), release please will open up a 'release' pull request on the `main` branch when changes are merged. Merging the release pull request will trigger a full release to NPM.\n\n```bash\nVERSION=\"0.1.0\" git commit --allow-empty -m \"chore: release ${VERSION}\" -m \"Release-As: ${VERSION}\"\n```\n\nNote that currently firestore configuration (security rules and indexes) is not deployed as part of this process, to avoid unexpected downtime while indexes rebuild. Manually deploy these changes as needed.\n\n## Service Tiers\n\n### Guest\n\n- Can use one location\n- Can use one week\n\n### User\n\n- Can use five locations\n- Can use one week\n- Can share and view/edit other trips\n\n### Subscriber\n\n- Unlimited locations\n- Unlimited dates\n\n## Research\n\nFront end component framework:\n\n- [MUI Core](https://mui.com) really solid looking react components based on Material UI. Has 'suggest' boxes.\n- [Joy UI](https://mui.com/joy-ui/getting-started/) looks like great React Components, same authors as Material UI above but less google-centric. Has 'suggest' boxes.\n\nGeolocation Services:\n\n- [ArcGIS](https://developers.arcgis.com/rest/): API is simple and well-documented, [pricing](https://developers.arcgis.com/pricing/) seems not too bad for now for experimenting.\n\nWeather Services:\n\n- [PirateWeather](https://pirateweather.net/en/latest/): based on government-provided weather sources, drop in replacement for Dark Sky, 15000 requests per month\n- [OpenWeather](https://openweathermap.org/): more commercial than the above\n\nWeather icons:\n\nAmazing icons at: https://basmilius.github.io/weather-icons/index-line.html\n\nExample weather forecast in the dark sky style: https://merrysky.net/forecast/howden/si\nUse for reference in my own.\n\n## TODO\n\n### 0.1.0\n\n- [x] check name 'trip weather'\n- [x] feat: weather icon - sunshine\n- [x] feat: basic structure - search bar and suggest function\n- [x] feat: error handling and context\n- [x] feat: add location to list\n- [x] feat: main page with navbar\n- [x] feat: main page search\n- [x] feat: basic weather api call\n- [x] feat: handle weather api errors e.g https://api.pirateweather.net/forecast/bpUlCYTXUho6JuCR7bD0dWdrscOHtlBw/150.37111,150.37111\n- [x] feat: basic location grid\n- [x] feat: settings context with specification of start / end date\n- [x] feat: start/end date in search bar\n- [x] feat: weather grid, showing specified days\n- [x] feat: weather grid format day titles better\n- [x] feat: smaller progress indicator for loading weather\n- [x] bug: weather data fields for day are different to minute/hour - fix the mapping. This will fix the temperatures.\n- [x] feat: add temp to weather cells, add feels like, ensure units are correct.\n- [x] feat: when change dates or units, mark weather as stale and refresh\n- [x] bug: on settings change (e.g. change units) units change immediately but instead we should show a reloader for each weather setting\n- [x] feat: main page list, with location details having a loader\n- [x] feat: delete location\n- [x] bug: wrap text in cell\n- [x] chore: recycle arcgis keys\n- [x] feat: weather icon credits in footer - other credits too? arcgis/pirate\n- [x] build: check new firebase api key works\n- [x] build: ensure https://dwmkerr-tripweather.web.app/ deploys\n\n### 0.2.x\n\n- [x] feat: address/gps/favourite selector left of search bar\n- [x] feat: add address by coordinate\n- [x] feat: basic sign in menu\n- [x] feat: require sign in alert \n- [x] bug: weather outside of UK doesn't ever seem to show, even though GPS coordinates seem correct\n- [x] feat: when using favorites if not logged in use set alert context to show a login alert with a login action\n- [x] feat: favorite icon in red, on the left\n- [ ] feat: enable add only when valid gps and mask gps input\n- [ ] bug: clear selection on favorite/address/gps add\n- [ ] feat: debounce search input\n- [ ] feat: set location label? (see TODO in code)\n- [ ] bug: undefined cell value when shortening end date range\n- [x] bug: TripLocation has longitude and latitude but these seem to be set from IPoint objects so the values are wrong - or are they? Checking blue mountains it seems OK. Update: checking the coordinates manually seems they are OK\n- [ ] refactor: favourites as a sub-collection of user\n- [ ] bug: after address or GPS (or favorite) is selected and added, clear the selection\n- [ ] bug: if can't set weather show an error icon in the weather panel\n\n**Needs bug fix**\n\n- [ ] bug: state management bug in onRemoveFavoriteLocation, also user in requirelogin\n- [ ] feat: favorite - require sign in to use\n\n**Nice to have**\n\n- [x] warnings in console when searching for location\n- [ ] feat: manage favorites page\n- [ ] minor bug (settings): on date change, when make starting day current val + 1 get pop error\n- [ ] minor bug (settings): on unit change, new units flash before the loader updates\n- [ ] refactor: hydrate dates weather can ignore weather we've already loaded\n- [ ] monitor: do we still lose the search from time to time in the address search bar?\n\nv0.3\n\n- [ ] feat: weather icon is link to details on Merry Sky\n- [ ] feat: pinned/favourite locations, use AirBnB trips as an example of UI\n- [ ] feat: activity select in navbar\n- [ ] feat: save search details\n- [ ] feat: share button offers link to share\n- [ ] feat: open saved trip from URL\n- [ ] feat: name trips\n- [ ] feat: 'my trips'\n- [ ] feat(settings): temperature: apparent/recorded low/high/max/min\n- [ ] feat: settings drawer with farhenhiet / celcius selector\n\nv0.4\n\n- [ ] better date range selector, before search bar\n- [ ] feat: toggle grid/map/grid+map view\n- [ ] feat: save units as a user preference\n- [ ] feat: show weather for selected location\n- [ ] feat: save location as favourite, quick search for favourites\n- [ ] score icons for walking/climbing\n- [ ] ads based on score icons, e.g. climbing books for selected area\n- [ ] feat: spinner when loading location suggestions\n\n### Future\n\n- Location map\n\n**X-Data-Grid Pro**\n\n- [ ] feat: re-order locations\n- [ ] feat: resize columns\n","readmeFilename":"README.md"}