Bloomly, a new full-stack project to manage your content online
Tags: nextjs, go, react, showdev
Published: 2021-05-15 21:10:12

In the [previous post](https://dev.to/pjeziorowski/365-days-of-blogging-challenge-or-i-transfer-1000-to-your-bank-account-5dj9), I announced that I start my **365 days of blogging challenge**. I also released a [mini CLI tool](https://dev.to/pjeziorowski/how-i-publish-articles-to-all-developer-platforms-and-my-private-blog-in-one-shot-38aj) that publishes articles to all the major developer blogging platforms (dev.to, hashnode, medium) with one command.

The tool lacks some features, though, and I saw that people have the same problem as I have - they need a centralized place to manage their articles or avoid publishing their content manually on multiple sites. **Automating stuff saves time**...

This is why I decided to help them (and myself) by creating a service that allows you to write your articles, publish them, and manage them on all the previously mentioned platforms in one place.

## Pain to solve

In general, I want to create a tool that will **reduce the friction and effort you need to put in to create and distribute your content as a developer**. In the future, it should also help you **reach more people and let you analyze what works best** and what your audience like to read about.

## Features

The MVP will cover writing articles and integrations with all the platforms (publishing, updating, and deleting articles). It also covers all the basics like signups, creating projects and adding collaborators.

Next steps I have in my mind if the project gains traction or if I find it helpful to my blogging journey:
- displaying article statistics from all platforms in one place
- generating article covers, adjusting stuff best for the given platform (e.g. cover sizes), in general - reducing the effort of publishing
- marketing - integrations with Twitter, LinkedIn, Instagram, Facebook, to help you announce to the world that your articles are published

## Tech stack

To quickly build the backend and GraphQL API, I decided to go with [Hasura](https://hasura.io/). It's not the only backend component - to perform custom business logic, I need a separate microservice or serverless functions that Hasura will call on certain events. For this, I decided to go with Golang and a great [Echo HTTP framework](https://echo.labstack.com/). I'm still thinking, though, if I should use Node.js, as Hasura provides some excellent tooling that helps you generate code for your serverless functions.

For the frontend - React.js with [Next](https://nextjs.org/) and [Tailwind](https://tailwindcss.com/). I've been a fan of those technologies since their humble beginnings, so the choice here was pretty easy for me.

For deploying and hosting the app I'll use [Qovery](https://www.qovery.com/) - it's a startup that aims to provide great developer experience in deploying and building full-stack applications in the cloud. For disclosure - I'm building this platform during my working hours :P.

## Progress

I've just started today coding the backend part - most of the MVP API and data modelling is done.

![MVP Query API](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g02jpn1dup0906wev390.png)

I still need to implement the custom actions (interactions with APIs of the publishing platforms) in the Golang microservice. When it's done, I'll jump into coding the frontend part.

## Collaborators are welcome

I can do everything by myself, but it would be much more pleasant to work in a group, so if you are interested in building this kind of project, or you feel the pain that it aims to solve, feel free to reach out to me - we can build it together. Backend, frontend, UI/UX designers - everyone's help would come in handy! Just leave a comment or [find me @ Twitter](https://twitter.com/PJeziorowski) :).

## Leave your feedback and feature ideas

If you have any feedback or an idea that I could integrate into this project, feel free to leave a comment or [reach out to me @ Twitter](https://twitter.com/PJeziorowski)!