wttr.moe is a weather notification service unlike any other.

What is it?

Users can signup to receive weather forecasts on the website. At 8:30 AM CST every day, users receive a text containing a weather forecast for their location. There's one big twist though: in addition to the weather forecast, users will also receive an image of an anime girl in the weather conditions described. For example, if it's raining, you'll get a picture of an anime girl in the rain along with your forecast.

How it works

wttr.moe uses Twilio, the Danbooru API, and ClimaCell to send texts, source images, and source weather data, respectively. The entire application is hosted on a MongoDB Atlas instance, including the database, functions, and even the website! The functions work via MongoDB Stitch, which run Javascript on certain triggers. Such triggers include the registration webhook, which adds new users to the database, and the scheduled trigger, which grabs weather data from ClimaCell and sends texts at a certain time every day. This serverless approach allowed us to develop quickly and fully utilize our MongoDB instance without worrying about backend servers. In addition, the tight integration between MongoDB Stitch and the actual MongoDB cluster reduced the amount of boilerplate database connection code we had to write.


No one on our team had any significant Javascript experience, but MongoDB functions are programmed in NodeJS. Much debugging and log scouring was necessary to get things working! This was also the first project using MongoDB, Twilio, ClimaCell, or Danbooru that any of our team members had ever worked on. Every single API and service we used required cram learning combined with trial and error.

What's next

Although we had to specify one hard time (8:30 AM CST) for our current prototype, we have plans (and database schema already in place) to let users specify custom notification times, perhaps even different times on different days. If there's one outstanding question you've had since reading where we source our images from, the answer is no, but there will be an option soon™.

Built With

Share this project: