The Dilemma

In the last few years, I’ve been trying to do a “social network detox”. Even before the pandemics, I tried to distance myself of social networks because it wasn’t fun anymore. The algorithms that came promising to improve the quality time of any app create bubbles impossible to burst. Misinformation, bad news, negativity, weird people oversharing online… All of that drove me away of logging in.

However, there is a side of social networks that I dearly miss: sharing personal news with my closest friends. I miss not worrying about likes, shares, or my timeline being flooded by content that I didn’t ask for; I miss that sweet time when I would log in just to chat and focus on real conversations with friends and family. I miss sharing photos and having meaningful conversation about them.

Speaking about photos, I would love to have a tool that allowed me to create albums and write descriptions with context about them, even if it was just as a way to keep a local journal. I tried to find open-source solutions for my needs, but nothing really fitted what I was looking for. Until…

If you can’t find it, why not build it yourself?

By this time, I haven’t done any major Node.js project in a while. So I had the “great” idea to combine business with pleasure and build my own album/photo manager using Node.js and React. Just to be clear, I am not a great expert in web/front-end technologies, so that was a way to push myself out of my experience zone as well.

The idea was simple: build an Instagram-like project where I could “upload” images and group them in albums, with descriptions.

So let’s do it!

Opengram was created with that in mind. It is a very simple project with limited scope.

Here are screenshots of some features:

There were a few dependencies that were used to build this project, such as bcrypt, express, multer, bootstrap, axios, among many others, with MongoDB as the database. The front-end and the back-end were divided in two repositories, both dockerized.

At first, I tried to emulate a local Instagram-like application, with login and multiple users, but… thinking about real-world usage, it seems kind of silly to have multiple users in a local web application, isn’t? I still kept the login system that I had already implemented. It felt right. This was also my first experience with asynchronous functions in node.js, it was interesting to learn more about promises.

To learn more about the source code, click here to check out Opengram repository and here to check out Opengram Front repository.