How and Why I built MyConfigStore?

How and Why I built MyConfigStore?

The inspiration behind this goes back to when I was starting out with programming and building some projects with APIs. I learned that we don't put our API keys as plain strings in our codes, we use environment variables for it in a file called ".env" locally but while deploying to Heroku I would have to put in the environment variables in the settings and CMS like interface.

This got me an idea what if I could save my other configurations just like that, in the cloud, and access it through some API so that i won't have to copy/paste same configurations in multiple repositories and hence, "MyConfigStore".

Still, it wasn't until this hackathon that I could get myself motivated enough to start building this thing.

Now let's see what exactly MyConfigStore is.

What's MyConfigStore?

MyConfigStore is a simple, fast, secure and highly available remote store for all your dynamic configs.

MyConfigStore is a secure database which lets you store simple key-value pair config variables in the cloud and securely access it with a REST API endpoint uniquely generated just for you.

Why MyConfigStore?

MyConfigStore can be helpful in a dozen use-cases, let me tell you a few of them...

Versioning

Suppose you are showing a version tag in the header or footer of your static or any kind of website and you just deployed a new version of it but forgot to update the version. What are you gonna do now? Use MyConfigStore and keep updating your version with just one click!

Server Status

You are showing your users the running status of your server in your app. What when your server itself goes down... where will you pull the status info from now? Use MyConfigStore and store the info away from your servers and keep updating it accordingly to help your users know what’s going on.

Remote Config

You created a firebase project and you have to use the same config over multiple servers and app repos. Keep it at one place and use the same API endpoint to access it. Update it smoothly if you change the firebase project and skip your slow CI/CD & tests to deploy all your projects.

Beta Features

You want to roll out a new app feature but don’t want to release it to all your users at the same time, rather make it available first to users at a certain location or age group, or whatever. Store your conditional configuration at MyConfigStore and give your users a smooth feature update.

As developers, aren't we looking for resources like this? Why not just build it, if you can't find it? Of course, now that you've found this, you can start using it.

I use MyConfigStore internally

A small piece of advice - always put your apps to use in your own apps! What else screams 'you can trust this app' more than that? I'm using MyConfigStore internally for many use-cases including the ones mentioned above, one of which is for promo codes. I have a dedicated store for this and multiple private and one public product.

You can check for publically available promo codes through the following endpoint -

promo.myconfig.store/api/v1/public_codes

Source code - https://www.github.com/webdevavi/myconfigstore

All in all, it was one heck of a journey building this app & library; wouldn't give it up for anything else! Thank you @hashnode for this amazing hackathon!!