•April 17th 2018
Winds is an open-source RSS reader and podcast player built with React & Stream. It’s not only free and open source, but is also created by a company that doesn’t want to make money off of your data. Want to skip the spiel and get right to it? Go download it here → https://getstream.io/winds/.
Of course, we hope you’ll take also take a moment to check out Stream.
Winds 2.0 will “blow” your mind
Winds is an open-source podcast player AND RSS reader. The beta is now available for download at https://getstream.io/winds/. You'll also be able to check out the source code very soon over on GitHub.
This year, we’ve decided to revisit the project and work on Winds 2.0 - a completely new build of the application. We wanted to make a splash (again) and to do so, we needed something profound. We’re excited to announce that we're introducing podcast discovery and playback support within the Winds application. Although the addition of podcast support may sound trivial, it’s actually quite a difficult task from both a design and development perspective. Combining two vastly different forms of content has proven to be an aesthetic challenge as well (thankfully, our lead designer has come up with a beautiful, unifying design).
The Tech Behind Winds
When building a podcast / RSS reader, there are many different “activity feeds” within the app. Users expect to see lists of episodes and articles from the podcasts and RSS feeds they follow and, because we’ve also built in a social network, they also want to see new status updates from those they follow.
Creating activity feeds for large numbers of users who create many activities can be quite a challenge. Luckily, Stream makes this easy. When a user follows dozens or even thousands of other users, RSS feeds, or podcasts, Stream creates a “timeline” feed in milliseconds (check it out in our tutorial).
Within Winds, we want to make migration from another RSS reader easy (RIP Google Reader, even if that’s a dated reference at this point). If you’re using another RSS reader, just import OPML files and simply drag-and-drop your feeds into Winds. 👍
Now, you’re probably wondering about Winds’ tech stack. The frontend is an Electron app, along with create-react-app. We’re using React, Redux, and React-router, plus SCSS to generate all of the cool styling.
Our backend services are written in Node.js, Express, and Mongoose. There’s an API server, which handles the authentication and CRUD operations. The service workers retrieve new articles and episodes from RSS feeds and podcasts, then adds them to Stream, Algolia, and MongoDB. To generate a new app release and deploy the new API and services, we use a couple of small shell scripts along with Fabric.
It’s also important to mention that we relied on many other services to help build Winds:
- Algolia for search: search for any user, RSS feed, RSS article, podcast, podcast episode, or playlist in Winds.
- Mercury for article parsing: turns out that extracting the text of a blog post from an HTML page is pretty hard.
- MongoDB for our main datastore: hosted on MongoDB Atlas.
- Sendgrid for email: sends all password resets and “hey you got a new follower!” emails.
- And, of course, Stream: the reason we don’t get “fail whales” when 10,000 new users sign up. 😄
If You Haven’t Already, Time to Download!
If you want to give Winds a whirl, head on over to getstream.io/winds to download the app. As I previously mentioned, Winds is currently in beta. We’ll be making lots of improvements to this over the next few months, and posting a lot more about the project as a whole, so stay tuned!
And, if you’d like to check out the technology that powers Winds 2.0, check out Stream, where you can build your own applications with personalized and scalable activity feeds.
How can I contribute?
If you’d like to contribute to Winds, we’ll be releasing the source code over on GitHub very soon, where you can download, modify, and start contributing to Winds. If you’re looking for some easy things to fix, check out the issues section at https://github.com/GetStream/winds/issues.
What’s next for Winds?
There’s still loads of features that we want to include in Winds - releasing Windows and React Native versions, sending snippets of podcasts to your friends, and more advanced social features. If there's a feature you’d love to see, let us know by opening an issue over at https://github.com/GetStream/winds/issues.