| Hello HN, I've combined my passions for software engineering, graphic design, and pixel art to bring to life a weather app with a unique retro twist: wthr.today. Sometimes you just need to make something. Live Demos: https://slc.wthr.today/ - Salt Lake City, UT (my hometown) https://msu.wthr.today/ - East Lansing, MI (my current town) visit /test - to see all the raw data. What I learned with this project:
- ImageResponse from next/server lets you create images from html on-the-fly.
- Jimp can be used to convert images to pixel art using 'posterize' and 'scan'.
- Vercel serverless functions can use the '/tmp' folder to temporarily store files.
- How to calculate risk of frost using cloudCover, temperature, dewPoint, and windSpeed data.
- Using azimuth and altitude to represent the location of an object in the sky on a 2d plane (still testing this one). Technical Highlights: Platform: Hosted on Vercel. New locations can be added through the locations configuration table. By simply creating a new sub-domain and assigning the ID of the new location as an ENV variable, I can launch new regional WTHR apps! Front-end Stack: I utilized NextJS, Tailwind CSS, and Framer Motion. Data & Updates: The app uses the tomorrow.io API for weather data. Additionally, I've integrated ChatGPT-3.5-turbo to generate a daily, hourly, and minutely weather summary. Updates are pushed every hour through a cronjob, which pings a private endpoint, which updates the database table. I use real-time database synchronization to relay updates to the client. Music: The music for slc.wthr.today is from another project of mine, https://kuaafm.org. msu.wthr.today streams music from WKAR (no affiliation). Todo: remove console logs, cleanup, larger desktop support, better pixel art, unit/e2e tests, improve og:image. I want to find the time to do some write-ups on the techniques I used for this project. This was originally intended to only run on a raspberry pi connected to display in my kitchen, but then things got out of hand and here we are. I'd love to hear your thoughts on the design, usability, and potential features to add. Please ask me any questions you have, I'm happy to answer them! You can also reach me at jesse@jessestewart.com. |