npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@dwmkerr/tripweather

v0.2.0

Published

[![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

Downloads

4

Readme

tripweather

main codecov

Experimentation project for a climbing trip planner app

https://dwmkerr-tripweather.web.app/

Developer Guide

| Command | Description | | ------- | ----------- | | npm run start | Run the website locally, connected to the cloud | | npm run start:local | Run the website locally, connected to the local emulator | | npm run lint | Lint the code with eslint/prettier | | npm run lint:fix | Fix the code with eslint/prettier |

Firebase

Use the Firebase Local Emulator Suite to help when working with Firebase.

Setup looks like this:

# Install firebase CLI tools, then login.
# Don't install with:
#   curl -sL https://firebase.tools | bash
# As this seems to suffer from some CLI issues:
#   - https://github.com/firebase/firebase-tools/issues/6446
npm install -g firebase-tools
firebase login

# Initialise the firebase project (not needed for most users, only if you are
# forking and building your own project from scratch).
#
# firebase init
#
# Choose: Firestore, Emulators. Lifeline project. Default options seem to be fine.

# Start the emulator, optionally open the web interface.
firebase emulators:start
open http://localhost:4000

Deploy indexes and rules with:

fireabase deploy --only firestore

Firebase Functions

To watch for changes in the code and run the Firebase functions in the emulator, run:

npm run emulate

To test functions interactively:

firebase functions:shell

# Then e.g:
# await weather({data: {latitude: "-1.56266", longitude: "53.11893"}})
# await arcGisSuggest({data: {location: "Peak District"}})

Firebase 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.

Releasing

This project uses Release Please to manage releases. As long as you use Conventional Commit messages, 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.

VERSION="0.1.0" git commit --allow-empty -m "chore: release ${VERSION}" -m "Release-As: ${VERSION}"

Note 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.

Service Tiers

Guest

  • Can use one location
  • Can use one week

User

  • Can use five locations
  • Can use one week
  • Can share and view/edit other trips

Subscriber

  • Unlimited locations
  • Unlimited dates

Research

Front end component framework:

  • MUI Core really solid looking react components based on Material UI. Has 'suggest' boxes.
  • Joy UI looks like great React Components, same authors as Material UI above but less google-centric. Has 'suggest' boxes.

Geolocation Services:

  • ArcGIS: API is simple and well-documented, pricing seems not too bad for now for experimenting.

Weather Services:

  • PirateWeather: based on government-provided weather sources, drop in replacement for Dark Sky, 15000 requests per month
  • OpenWeather: more commercial than the above

Weather icons:

Amazing icons at: https://basmilius.github.io/weather-icons/index-line.html

Example weather forecast in the dark sky style: https://merrysky.net/forecast/howden/si Use for reference in my own.

TODO

0.1.0

  • [x] check name 'trip weather'
  • [x] feat: weather icon - sunshine
  • [x] feat: basic structure - search bar and suggest function
  • [x] feat: error handling and context
  • [x] feat: add location to list
  • [x] feat: main page with navbar
  • [x] feat: main page search
  • [x] feat: basic weather api call
  • [x] feat: handle weather api errors e.g https://api.pirateweather.net/forecast/bpUlCYTXUho6JuCR7bD0dWdrscOHtlBw/150.37111,150.37111
  • [x] feat: basic location grid
  • [x] feat: settings context with specification of start / end date
  • [x] feat: start/end date in search bar
  • [x] feat: weather grid, showing specified days
  • [x] feat: weather grid format day titles better
  • [x] feat: smaller progress indicator for loading weather
  • [x] bug: weather data fields for day are different to minute/hour - fix the mapping. This will fix the temperatures.
  • [x] feat: add temp to weather cells, add feels like, ensure units are correct.
  • [x] feat: when change dates or units, mark weather as stale and refresh
  • [x] bug: on settings change (e.g. change units) units change immediately but instead we should show a reloader for each weather setting
  • [x] feat: main page list, with location details having a loader
  • [x] feat: delete location
  • [x] bug: wrap text in cell
  • [x] chore: recycle arcgis keys
  • [x] feat: weather icon credits in footer - other credits too? arcgis/pirate
  • [x] build: check new firebase api key works
  • [x] build: ensure https://dwmkerr-tripweather.web.app/ deploys

0.2.x

  • [x] feat: address/gps/favourite selector left of search bar
  • [x] feat: add address by coordinate
  • [x] feat: basic sign in menu
  • [x] feat: require sign in alert
  • [x] bug: weather outside of UK doesn't ever seem to show, even though GPS coordinates seem correct
  • [x] feat: when using favorites if not logged in use set alert context to show a login alert with a login action
  • [x] feat: favorite icon in red, on the left
  • [ ] feat: enable add only when valid gps and mask gps input
  • [ ] bug: clear selection on favorite/address/gps add
  • [ ] feat: debounce search input
  • [ ] feat: set location label? (see TODO in code)
  • [ ] bug: undefined cell value when shortening end date range
  • [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
  • [ ] refactor: favourites as a sub-collection of user
  • [ ] bug: after address or GPS (or favorite) is selected and added, clear the selection
  • [ ] bug: if can't set weather show an error icon in the weather panel

Needs bug fix

  • [ ] bug: state management bug in onRemoveFavoriteLocation, also user in requirelogin
  • [ ] feat: favorite - require sign in to use

Nice to have

  • [x] warnings in console when searching for location
  • [ ] feat: manage favorites page
  • [ ] minor bug (settings): on date change, when make starting day current val + 1 get pop error
  • [ ] minor bug (settings): on unit change, new units flash before the loader updates
  • [ ] refactor: hydrate dates weather can ignore weather we've already loaded
  • [ ] monitor: do we still lose the search from time to time in the address search bar?

v0.3

  • [ ] feat: weather icon is link to details on Merry Sky
  • [ ] feat: pinned/favourite locations, use AirBnB trips as an example of UI
  • [ ] feat: activity select in navbar
  • [ ] feat: save search details
  • [ ] feat: share button offers link to share
  • [ ] feat: open saved trip from URL
  • [ ] feat: name trips
  • [ ] feat: 'my trips'
  • [ ] feat(settings): temperature: apparent/recorded low/high/max/min
  • [ ] feat: settings drawer with farhenhiet / celcius selector

v0.4

  • [ ] better date range selector, before search bar
  • [ ] feat: toggle grid/map/grid+map view
  • [ ] feat: save units as a user preference
  • [ ] feat: show weather for selected location
  • [ ] feat: save location as favourite, quick search for favourites
  • [ ] score icons for walking/climbing
  • [ ] ads based on score icons, e.g. climbing books for selected area
  • [ ] feat: spinner when loading location suggestions

Future

  • Location map

X-Data-Grid Pro

  • [ ] feat: re-order locations
  • [ ] feat: resize columns