Coder Social home page Coder Social logo

messman / tidy Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 8.48 MB

Find out when to go out on the beach in Wells, Maine.

Home Page: https://wellsbeachtime.com

License: MIT License

TypeScript 96.13% JavaScript 2.58% Shell 0.57% EJS 0.31% Dockerfile 0.41%

tidy's People

Contributors

messman avatar

Stargazers

 avatar

Watchers

 avatar

tidy's Issues

Streamline the server deploy process

Why's it so bad?
We use local dependencies between the projects in development (file references in package.json) and we don't host any of the code publicly on npm. This puts us in a unique situation when trying to bundle code.

Current process

  • Run a special tsc in server-http to build for the azure-deploy directory
  • For shared and server, build them with production settings and npm pack them
  • Install regular dependencies with the ad-hoc package.json

Not too bad, but could be better.

Add marine life to the app

Users (like my sister) of older versions enjoyed the crab that sat on the rock. Try to bring back some version of that or other marine life.

Maybe not always visible, but shows on changelogs or special alerts?

Add animations for UI components

When the application refreshes data, some pieces (like the tide chart or sun chart) flash to update (because they require knowledge of their bounds). We should animate these for a smoother effect.

Additionally, the loading screen should transition in and out using opacity. A generic component could be added to handle this.

Feature Request: Add basic education information about tides

Thought of this while working on the settings page - why not include some of the information learned about tides while creating this app?

Some of the things to talk about:

  • Why tides are 6 hours apart, not 12
  • If tides are always the same time apart, because it doesn't seem like it
  • To what extent the sun influences the tides
  • How tide heights are displayed in this application (relative to what?)

Adjust timeline to a set number of hours, not days

Right now the logic for determining timeline time is "end of this day, plus 2 days". That means we could end up with almost 72 hours of timeline, which is at least 3600 pixels.

Use hours instead, so we can keep things manageable. Either update the API or do it all client-side.

Make day of the week visible in summary view

Raised by mom. Right now, day of week can be reasoned from timeline and forecast view but isn't apparent on the screen.
It's not 100% necessary feature-wise, but it's valid.

Adjust light theme to be less shocking

Moving from the dark theme to the light theme turns users off from the light theme - it's just too bright. Improve the contrast and maybe CSS transition between themes.

The daily weather forecast problem

In this application, the weather API data is different from tide or sun data - it is only recent. AFAIK, with this NWS API there's no way to go back in time to view yesterday's weather or the weather from earlier today.

That means that at 8PM today, the only weather information I have for today is 8PM to the end of the day - so I can't really create a good summary of that entire day for the Forecast view. Hence, why we only show 'Tomorrow' and forward.

There's probably either a different API from NWS or another API entirely that can provide this - it will just take some time to research.

Correct usage of start/stop and begin/end

Start goes with Stop, Begin goes with End,
But Start does not go with End, my friend.

Unfortunately, I forgot that until halfway through. I can feel the disappointment from my old coworker Kousay.

Feature Request: Provide more information about hourly weather data

Right now the timeline weather data is squished together so

  • We can't explain the data we show (it's hard to know exactly what that status icon means)
  • We can't show all the information we have (visibility, dewpoint)

We need a clean design to allow everything to be shown (probably on click/tap).

Feature Request: User-viewable changelog

Three parts here:

  • When the user first comes to the app after a new version, a pop-up will tell them what's new (only if it's important)
  • They can see that info for the last few new versions in the app somewhere
  • There is a link to a page on this GitHub repo with the entire changelog history

Cache tide and weather information long-term

A quick test on timing reveals:

weather 1 done 6386.6288100034
predictions done 6415.023443996906
weather 2 done 6642.094659000635

Meaning, first request to weather API to discover the station takes about 6 seconds. Then the other two requests finish quickly. Our bottleneck is the first call to NWS.
The result of that call is the information we use to call the second time to NWS, but it doesn't change often. We could cache it and check against an item in our result set of the second call to know whether it's still valid.

Or, maybe using a different API would solve this and #14 at the same time.

Optimize

Fix the madness with:

  • Extra renders due to rogue useEffects
  • Extra renders due to misuse of resizing code
  • Abuse of styled-components

Add access to the application general information during an error

There needs to be a way, no matter what (barring a failure by React) for a user to see the basic information about the app:

  • App name and purpose
  • Developer and contact link
  • Link to this GitHub repository
  • Build version and time (to help with issue reporting)

In order to see this when there's an app-wide error, we might need to add a new icon to the menu bar and disable all other icons. Bleh.

Extend request timeout

The API is deployed on Azure, so it's subject to go to sleep after 60 (?) minutes of inactivity. Then it needs to warm up, and so the first request by a user may fail.

Conveniently, the user can tap the screen to try again. But maybe increase the timeout a little more to lessen the chance of that happening.

Feature Request: Support for custom (or just more) locations

This is the obvious "next step" for this application and would help its adoption with a wider audience.

What stands in the way, as I see it now:

  • I'm not sure what the request limits are on the APIs I use for tide data and weather data, so I'm trying to be more on the cautious side. If we hit the limit because of more users we could get banned.
  • It's more difficult to cache more locations. I'll need some storage.
  • This feature would mean potentially more users, which could mean abuse of the public API, so I'll have to focus more on security and maybe add auth.

Write some articles about this project

In order to:

  • Have a record so you can remember what a pain in the ass this project was
  • Remember and document some of the interesting problems you encountered
  • Impress people who think this was an easy project
  • Help others going through the same issues

Feature Request: Add context points

Part of the original design of this page, but was moved out of MVP.

Some elements on the page, like the summary blocks, can be tapped to show more information. There should be some UI indicator to let a user know that they should try to click or tap.

This indication could be turned off or could automatically turn off once the user has tapped correctly once.

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.