A case for a side-project: weather comparison website — dosh.at

October 13, 2024

Announcing a project: weather comparison website — dosh.at

I want to share a story, how I came up to creating the dosh.at — website to track and compare weather across multiple places.

It all started from the realization that I, while being on different roles in software engineering for the last 10 years, doesn’t have anything that was “mine” and that I’m basically still exchanging my time for the money. Moreover, I realized that the stuff I enjoy — making stuff, releasing it to the users, observing the effect – is usually not very connected with the typical software engineering process on the backend track.

The idea of such website came after I moved to Netherlands, and wanted to compare the weather in Amsterdam with other big tech hubs, like Berlin or London. I found that existing websites have many limitations, like inability to compare more than 2 cities, or the interface that came out from 95s, or the interface that looked like it was made for scientists, or technically-unadvanced users. So I thought, I can try and enter this field with the website that will be fast, responsive and simple, will be built with modern technologies and thus receive high ranks in search engines.

When I bonded with the idea, I started thinking about few topics: for whom I will be creating it, what approach to the website organization should I take, what strategy should I choose to eventually make it profitable.

Auditory

This was the easiest one. The auditory of this website as I imagined:

  • people who want to travel, and so they prepare and want to choose the place with a good weather in a particular period of the year, comparing typical touristic destinations
  • people who are preparing to move for a long stand in a different city / country, so they want to compare yearly cycles of the weather in different cities
  • people who live in few different geozones: need to track and/or travel multiple times a year by their work needs
  • comparison of the weather is a side case of just outputting the weather in single location, so I decided not to discard it and support cases of outputting weather for a single location and thus to include much wider auditory of people who has interest in general weather

Search Engine-optimized website or dynamic web-app

Next question I wanted to clear for myself, is what kind of website I will be building:

  • Initial idea was to create a Gmail single-page-style web-app, that will support user authentication, and will allow users to create lists and include weather. I disliked this idea in favor of:
  • Search engine-optimized traditional website-like design, that will be optimized for crawlers and gathering traffic.

Favor of second one was made after I realized, that until I will have someone who needsspecific functionality in weather comparison, it’s much easier to find users using search engines as a source of traffic, having more than 150,000 of indexable webpages with combinations of different cities.

Profitability

This is still needs to be cleared out, and so far I see 3 ways of getting profit:

  • Google Ads. Not something that I like: first of all, ads tend to crowd the website and I think they will decrease conversion of new users into permanent audience. And almost everyone who I know already disables them in some way. Also ads are only good when you don’t know what to sell to the users, giving this to Google, and in my case, I think I know what to sell to the users
  • Disable some features by default and give them to subscribed users. Again, this could work (even in conjunction with the ads, where payment would be one of the options to disable them), but I don’t yet know how useful the website is, and also it will require development of some kind of authentication mechanism, so I’m deciding to stick with:
  • Affiliate programs with websites in the area of tourism, selling tickets and accommodation: this choice seems to be the most natural for me. I will be able to control how to show this content in a way which doesn’t harm user experience, and I tend to think it will have the most value for the imagined audience of the website.

So at the moment I decided to stick with affiliate programs (this is yet to be developed at the moment of writing the article and yet to confirm the theory).

Technologies used

Architectural diagram of the Dosh
Architectural diagram of the Dosh

There are 2 micro-services written in Scala:

  • Weather aggregator, which owns everything weather data-related, including forecasts and historical data by day, performing data aggregations.
  • location resolver, holding the data about the locations.

, and a frontend-microservice written in Typescript with Next.js.

The most interesting thing for me was choosing the Next.js framework, which allows to write the code both for the frontend and backend using React framework and hides most of the complexity of frontend-server communication. While I was away from the frontend for a good few years, it’s amazing how easy is to build websites with it that are both dynamic and indexable by search engines at the same time.

The transport layer framework that was chosen is GRPC, which allowed not to spend any time on writing REST-clients, be multi-language and provide great performance. Protobuf schemas were also used for storing data in Redis, as they are faster / take less space compared to JSON.

Database of choice is a PostgreSQL (Timescale to be concrete), which has nice support for storing time-series data, including ability to archive old data (not really needed now, but useful for the future, also I just had it installed for other projects so it was natural for me to use it).

Cloud provider that I’m using and can recommend is Hetzner with Cloudflare on top.

Next steps

Next features I’m planning to add:

  • (obvious one) adding more data on a site, like air quality comparisons, etc
  • Adding user authentication and giving ability for users to store their lists with locations / changing and persisting settings of the output.
  • Adding a blog and publishing some articles, like interesting places to travel, etc
  • Textual descriptions of the weather differences, generated by ChatGPT. From one hand, they should increase the SEO of the website. Also I have a theory that charts are sometimes hard to read for some users, so it seems natural to add textual summaries.

Interesting links

  • Visually interesting to see how opposite is the weather in cities of Northern and Southern hemisphere: Rome and Sydney in this case
  • Last summer in Kyiv (city I’m from) was way hotter than in Barcelona
  • While many people complain about the weather in Berlin, it actually has nicer weather compared with other tech hubs, like London or Amsterdam (more sun and higher temperatures except last 2 months of the year)

Thank you! I hope you will enjoy the website dosh.at!

Comments