DEV Community

Cover image for Introducing ProGram: An Open-Source, Self-Hosted Instagram
Sarthak Sharma for XenoX

Posted on

Introducing ProGram: An Open-Source, Self-Hosted Instagram

Hello folks! Keeping up with the tradition, it's time for our monthly product release. This month, we've been working on another cool open-source product for developers, and it's called ProGram.

But before I introduce you to ProGram, it's story time.

If you remember, a few months ago, I started a discussion about Google's unchallenged monopoly over the internet and how the developer community might be helping it grow even more powerful.

Here's the thing, guys. I've always thought that developers have a lot of power when it comes to being change agents. We help build the internet and all the tech we see around us. We are developers of the free world!

The dev community is incredibly powerful. But...

What kind of responsibility am I talking about? The responsibility to help keep the spirit of free internet alive. And that includes not just being able to access whatever you want, but also being able to access it without fear of manipulation or data leaks or a million other problems.

Big corporations like Facebook and Google hold too much power over us, and we let them because it's easier to do so. And I get it: it's human nature to take the path of least resistance. Why look for an alternative when something is readily and easily available for free?

But I've always believed in holding ourselves to higher standards. We must find alternatives and break the monopoly of giants like Facebook and Google. That is the only way forward. This is why I'm always trying to create new, open-source products that help the free internet thrive. And ProGram was made for exactly this reason as well.

Think about it, most of your internet profiles have an option to add an Instagram link to them, and most of us do that. But why should it be that way? There are so many other platforms where you can host your stuff for free. Why don't people go for those? There's a few reasons I can think of:

  • An Instagram profile looks beautiful.
  • You don't have to create a gallery from scratch. Instagram does it for you.
  • Most of the editing an amateur would want to do is available in the IG app itself.
  • The social validation that comes with it in the form of likes and comments is possibly the most important thing for many people.

Keeping these factors in mind, I knew what I had to do. I wanted to make an Instagram alternative for programmers who want to keep their data secure and accessible while still being able to showcase their best shots in a cool gallery style. So I made ProGram.

ProGram is a CLI based app that lets you upload and edit photos by applying cool filters on them, and then you can save them to your profile. Once you do that, you can host your profile anywhere, be it GitHub or Heroku or wherever else you wish to.

Whenever you wish to show someone your work, just send them the link. I think the Instagram filters are pretty cool, so I added most of them to ProGram by taking the help of some other open-source projects and combining them. The crucial difference here is that you get no validation from others. You get no likes, no comments or followers - all those things which give you that sweet, sweet dopamine spike for a few, short-lasting seconds. I don't think they're important, and I certainly don't think you should rely on them to get external validation. Be happy with the things you create and be proud to showcase them. A simple webpage is enough for that, and that's just what ProGram does for you.

Big tech giants take advantage of our need for external validation, and when we don't get it, we feel miserable. Break the cycle. Don't be miserable. Hold yourself to a higher standard. That is the only way to lead a happy life, my friends.

Alright, that's enough enlightenment talk. I hope I don't come off as too much of a snob haha. 😉

Let me tell you about some cool features of ProGram.

ProGram is super easy to use!

All you need before installing ProGram is Node and Electron. If you do, simply run this:

$ npm i -g programcli
$ program
Enter fullscreen mode Exit fullscreen mode

Once it runs, create your profile and start uploading photos in seconds.

Edit your photos and add cool filters!

For now, the editing available in ProGram is very basic. You can crop a photo and add filters to it. There's plenty of cool filters available, however, and you might recognize some of them from Instagram itself. 😉

All the control in your hands!

ProGram generates an HTML/CSS and Javascript based file that you can customize to your own tastes. Make it dark- or light-themed. Or add custom backgrounds. Don't like the layout? Change it however you want. Go crazy with it.

Let people explore who you are.

You can add multiple links to your ProGram profile. Link to your Dribbble or Behance profile, show your creative portfolio. Send people to your Twitter profile or maybe even your Reddit. Link your online resume or your personal website. The sky is the limit here.

Host it anywhere!

The best thing about ProGram is that you own your data. You can host it wherever you want, no need to build on borrowed land as they say.

Contribute to the project!

If you love ProGram, make it your own. Here's the Github repo, go fork it!

Here are a few features ideas that I have in my mind. You can work on these, or suggest some of your own as well.

  • Variable filter strengths
  • Video editing
  • GIF editing (cuz we all love GIFS!)
  • Stories
  • Basic editing options like brightness, sharpening, saturation, etc.

GitHub logo sarthology / proGramCLI

🦖 Self-hosted Instagram Style gallery for all your photos

Program CLI

ProGram is a CLI based, self-hosted photo sharing app. You can think of it as Instagram for programmers who want to keep their data secure while still being able to showcase their best shots in a cool gallery style.

Screenshots

Prerequisites

Before running this locally you must have these installed.

  • Node
  • Electron

Installing

$ npm i -g programcli
$ program

Development

It's really easy, just follow these steps below

$ git clone https://github.com/sarthology/proGramCLI.git
$ cd proGramCLI
$ npm install
$ npm link
Enter fullscreen mode Exit fullscreen mode

Now to run program you can either npm run dev or simply type program

That's it.

Contributing

Feel free to contribute to this project and treat it like your own. 😊

Useful Links

License

MIT License

Author

Sarthak Sharma

Acknowledgments

Icons used from flaticon.






It's on ProductHunt! So please show it some love! 😻

We just launched ProGram on ProductHunt as well. If you like it, please show some love and leave your thoughts on ProductHunt. I'd love to hear what you have to say.


If you really like this idea, feel free to DM me on Twitter @sarthology and we can collaborate. I'm planning to add other functionalities to ProGram.

If you're not already aware of this, Team XenoX is a team of developers working remotely to contribute to cool, open-source initiatives. We always welcome new and enthusiastic members, so join us in helping make the world a better place. It doesn't matter what your level of skill is. Beginners and veterans, our doors are open to all. And hey, we never run out of cool ideas.

Adios!

Top comments (36)

Collapse
 
prahladyeri profile image
Prahlad Yeri • Edited

As you said, the plebeians of the world (including myself!) are going to take the path of least resistance. The problem is that Google has intruded just too far into our lives. We use GMail for sending emails, GMaps for navigation and knowing traffic friendly routes (Ola, Uber, etc. they all use, so we depend on it indirectly), GDrive for sharing files at workplaces, etc. Heck, we even use Android, the very OS that sits inside our smart phones!

There is no dearth of creative solutions, there is mastodon.social for example, which is a twitter alternative. But how many people use that? Hardly 0.1% in comparison to twitter! And suppose they start using it, then what? Do Mastodon or ProGram (those who'll self-host this) have enough resources to handle millions of requests?

No. Its simply impossible for us plebeians to compete with large tech companies like Google. What we can do, however, is to increase competition by giving a chance to other tech companies. Ditch GMail for a while and start using Hotmail, use Bing instead of Google search. Instead of GDrive, start using Dropbox and Microsoft's cloud platform. Thus, we can ensure some competition to the limited extent that we can.

Collapse
 
biros profile image
Boris Jamot ✊ /

I don't think that replacing Google's apps by Microsoft's is the solution. What's the difference between them, except that Google's ones are more popular ? None. Both sells our data for some ads, none of them respect our privacy, and both want to kill alternatives.
You should have a look at mastodon again, it's very dynamic and more user friendly than Twitter. Pixelfed is also a very credible Instagram alternative.
The whole fediverse is just awesome !

Collapse
 
_nicovillanueva profile image
Nico

There are great competitors in the "day to day internet usage" world, without even looking back again at major players. For instance, I've switched from Google to DuckDuckGo, -progressively- from GMail to ProtonMail, GChrome to Firefox, etc. Selfhosting carries it's own share of responsability, but ownCloud is a fantastic open source service in the same vein as GDrive.

Playing the revolutionary game and ditching big soul-sucking capitalist companies is, for now, a lone game. As you mentioned, almost no one uses Mastodon and those who do are likely to be ridiculously foreign for oneself (everytime I visit Mastodon.social it's all asian postings which I understand absolutely none of). Changing one's habits, when these are simply "single-player" tools is not that hard, but asking people to change their virtual social circle is tough.
Of course competition in this field is necessary too. I'll be damned the day I stop kicking people in the shin trying to convince them to switch from WhatsApp to Telegram. But switching from Facebook to Diaspora is all kinds of a different undertaking. The bigger the participants' sphere of influence (?), the tougher to migrate them; and the problem is that, for some, their social network of choice, is their whole sphere.

Collapse
 
utkarsh profile image
Utkarsh Talwar

Precisely. You put it together nicely, Nico.

Collapse
 
nickdex profile image
Nikhil Warke

Good point. Maybe decentralized tech can help tackle that problem.
Eg IPFS (for storage), scuttlebutt (SNS), matrix (IM) etc

Collapse
 
hamatti profile image
Juha-Matti Santala

Congrats on launching a great product!

The project looks nice and I do agree that the monopoly that the large tech giants are building is alarming. However, I think there's one aspect for the motivation to use Instagram that you're kind of missing:

Discoverability

It's not just a dopamine rush or social validation that drives people to use these social platforms (Instagram, Twitter, Facebook, Whatsapp, or even DEV) but the fact that other people are there. I share pictures of my life on Instagram because I know that my friends and my family use it and so I can share my pics to them on one click and I can see what they are doing in their lives on a scroll of the front page.

The usefulness of social media is only as weak or strong as the amount of people in your social circles using them.

Collapse
 
utkarsh profile image
Utkarsh Talwar

I agree, Juha. But the key difference here is that we don't want it to be a full-fledged social media profile. We just wanted it to be a snapshot of your life with an aesthetic similar to Instagram. Hence, no social features, at least for now. BUT... depending on the usage, we might just add them in the future. And if you feel like helping us build new features, it's highly encouraged!

In any case, thanks for your thoughts!

Collapse
 
hamatti profile image
Juha-Matti Santala

Yeah, I totally get that. But in your post, you do present ProGram as a self-hosted alternative to Instagram and what's basically keeping me from jumping on board with that is that people wouldn't really see those pictures and what's going on in my life.

I would be back in situation where I send my friends and family a message of "Hey, I posted new photos, go take a look" instead of them seeing that I have from the app that they are already using.

I have no objection to this alternative, I welcome it with open arms and it's wonderful to have options. I just wanted to highlight that in your list of things why people stick to existing social medias, the discoverability is the biggest factor in my books and the reason why I'm not abandoning those platforms.

Collapse
 
matthieu_rolland profile image
Matthieu Rolland

It would be awesome if besides pictures, proGram would also make it possible to store a file or expose an API with a list of other proGram users one follows, then making it possible to have some discoverability features without a centralised platform.
Some sort of social oriented API, but decentralised. That would be very indieweb compatible.

This is much easier said than done I admit haha. Kudos for what you did so far anyway, I'll definitely check it out when I'm home !

Collapse
 
ben profile image
Ben Halpern

Definitely checking this out when I get back to my computer!

Collapse
 
utkarsh profile image
Utkarsh Talwar

Collapse
 
sarthology profile image
Sarthak Sharma

Can't wait for feedback. 😊

Collapse
 
andrewbrooks profile image
Andrew Brooks 👨‍💻

I'll definitely be setting this up. Such a cool concept and tool. Thanks for building it!

Collapse
 
sarthology profile image
Sarthak Sharma

Thanks Andrew. 😊

Collapse
 
dukeofetiquette profile image
Adam DuQuette

"Big tech giants take advantage of our need for external validation, and when we don't get it, we feel miserable. Break the cycle. Don't be miserable. Hold yourself to a higher standard. That is the only way to lead a happy life, my friends."

Came for the tech, left with enlightenment (...and tech).

Thanks not only for the project, but explaining your philosophy behind it!

Collapse
 
sarthology profile image
Sarthak Sharma

Thanks, Adam.

All I want is contributors to take this project forward and for that, I needed to talk from the heart.

Collapse
 
rossijonas profile image
Jonas B. R. • Edited

Hi Sarthak and all the team envolved on the app. It does look great, and it's awesome to have this kind of initiatives that promotes awareness against data colection, and offers an option.

I just would say that, as a CLI freak, I found the title image description a little disappointing. It says it's a CLI based app , but actually it's a GUI, electron based app. Seems like a click bait for me. I'd remove it...

Anyways... Congratulations for the app and the effort !

Collapse
 
utkarsh profile image
Utkarsh Talwar

Hey Jonas, thanks for the kind words.

About the CLI thing, we did just talk about it, actually. We might remove it (or we might just add lots of CLI based functionality) haha. Sorry about the clickbait!

Collapse
 
emeraldzephyr profile image
EmeraldZephyr

This is great! I just joined the dev community and I'm looking forward to collaborating with folks like you!

Collapse
 
sarthology profile image
Sarthak Sharma • Edited

Welcome aboard 💪🏼😎

Collapse
 
utkarsh profile image
Utkarsh Talwar

UPDATE! PRODUCTHUNT JUST MOVED PROGRAM TO TODAY AND IT'S #1 RIGHT NOW!

Collapse
 
sharmarajat01 profile image
sharmarajat01

yeahhh !! Great and appreciated work done by your team ! .

Collapse
 
tailorvj profile image
Tailor Vijay

This is a great idea with a wonderful motivation, but I think you are missing out on the importance of networks in your perception of virtual space and people's motivations in it. I would suggest adding a p2p network of some sort into the mix, so users could search across the net for similar hashtags and like or comment with a linkable profile. Cheers, Tailor

Collapse
 
sarthology profile image
Sarthak Sharma

We have a roadmap. Will add this in that thanks. 😊

Collapse
 
ondrejjombik profile image
Ondrej Jombík

Is it possible to see any demo or screenshots of this promising application?

Homepage does have a nice video, but no example of actual gallery. Also the same video is on npmjs.com.

Not sure where else I should look at. Thanks!

Collapse
 
utkarsh profile image
Utkarsh Talwar

Check this out.

youuteee.github.io/

Collapse
 
ondrejjombik profile image
Ondrej Jombík

Thanks, it looks really slick!

However I noticed that page is kind of slow to load. The reason is that images are downloaded in full-size. Then they are resized by the browser not server-side.

Is this a bug or a desirable feature? Is there an option for resizing images displayed on the index page to a lower quality? My impatient friends would not wait this long for my proGram page to load:)

Thread Thread
 
utkarsh profile image
Utkarsh Talwar

Yeah, I get you! We need to work on implementing a good compression algo. You're welcome to help! 😀

Collapse
 
sharmarajat01 profile image
sharmarajat01

Your work as usual , make me to look at my DEV profile regularly !! You're doing great work , Keep it smooth <3

Collapse
 
sarthology profile image
Sarthak Sharma

Thanks Rajat

Collapse
 
ginsburgnm profile image
Noah Ginsburg

I don't really use Instagram for a variety of reasons, data is a big one. But a profile I can self host sounds like something I might use. Definitely a cool idea, I'll be checking this out!

Collapse
 
sarthology profile image
Sarthak Sharma

Thanks noah !! 😊

Collapse
 
goodevilgenius profile image
Dan Jones

When I saw the title, I hoped it was a CLI interface for Pixelfed. Too bad.

Collapse
 
quinncuatro profile image
Henry Quinn

How long until this is containerized? ;)

Collapse
 
mkljczk profile image
Marcin Mikołajczak

Thought it’s gonna be something like Pixelfed, but wow, it’s a totally different idea without all the social features

Collapse
 
sarthology profile image
Sarthak Sharma

Glad you liked it.