Blogfinder - submission post for the DO hackathon
Tags: dohackathon, python, vue
Published: 2021-01-05 14:26:00

## What I built

The BlogFinder web-app has a simple aim - to publicize personal blogs.

Say you have a blog that you've built with care. You don't want to migrate it to sites like Medium, Blogger or Hashnode and use their platforms. If you want to maintain the blog and need viewership, then this app will help you.

It's not just a list of blog sites. It shows you the summaries of the latest posts made on the personal blog sites of all its users. The main attraction is the Explore page which gives a combined view of the feeds and the entries made manually.

Additionally, this site is a social platform where users can follow and like each other, and view profiles.

### Category Submission: 

**Random Roulette**

### App Link

https://blogfinder-kesza.ondigitalocean.app

### Screenshots

![Index page](https://dev-to-uploads.s3.amazonaws.com/i/hte1l1nnchnzu7hwerfr.jpg)

![Explore page](https://dev-to-uploads.s3.amazonaws.com/i/gjdha9etkvsn3a8mwj1g.jpg)

### Description

There are two ways in which the app achieves its goal. Firstly, when a user submits his/her blog url, the RSS feed, if any, gets detected. This is used to pick out the latest post summary. The other way is by making manual entries of blog summaries on the site, which show up on the Home page (apart from the Explore page).

The challenging part of the design was scalability. What happens when the number of users grows and there are hundreds of feeds? Not to worry - Async to the rescue. I chose the Python Quart framework to make async requests to fetch feeds. By using coroutines, the app can scale up to a high number of simultaneous requests. The feeds are cached for a duration that is configurable.

### Link to Source Code

https://github.com/deb17/blogfinder

### Permissive License

MIT

## Background

I am a self-taught developer. I have a personal site and blog. But the blog is not successful. I had a look at the popular options available. Hashnode came closest to what I wanted. It allows custom domains, but still you have to write on its platform. So I came up with this idea of popularising blogs of developers like me.

### How I built it 

This app is built with **Quart** (asynchronous Flask), **Vue** and **Bulma**.  Quart helps in making async requests to fetch feeds. Vue is used to make an api call to the server to get the posts - a process that takes some time - and to easily handle the JavaScript needed to render them.

Building the app with **Digital Ocean's App platform** is thankfully not complicated. I just had to provide my docker file and tweak the yaml spec. Also it's nice to get a free and secure domain.

Please note that the demo app features some example blogs. The blog owners are not using the site.

### Additional Resources/Info

- There is an old Python cookbook [recipe](https://flylib.com/books/en/2.9.1.291/1/) of 2004 which does a similar thing. It builds an RSS aggregator with the Twisted framework. This shows that my idea behind the app is feasible. I have, of course, not used any of its code.

- Log in with username 'deb' and password 'pass123', or create new credentials. 

(Cover) Image by <a href="https://pixabay.com/users/sophieja23-698836/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=684748">Sophie Janotta</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=684748">Pixabay</a>