Friday, December 11, 2015

Property Manager - Manage your properties in a clean and efficient way


Well, how many times while starting a new project, we have to think of externalizing our properties files (not one but many for DB, Cache, third party integration, environment constant etc ... ). It's again a fresh start every and each time. There isn't a time when we can reuse either the existing framework or existing property management server to externalize that piece of component from our application. Hence our application is always tied to the way we read properties. It might be from the JSON file, XML file or simply the Key Value pair.

Isn't it beautiful (both from DEV n DEVOPS point of view) that if we have multiple projects, we can provide the guys a unified console to manage the properties, irrespective of the project. A Centralized property management server that does this task so that our application, can only focus on doing the task it was being created for.

This is my problem from some years, but dint get much time to create one off the hook but this time i tried it off and it came very well. Congratulations, well now we have something which is very simple to set up and it takes off the headache. The developer only needs to integrate the client and to be provided with the project/env/release version and the library will give him all the properties that he asked the DEVOPS to create for the project (or it can be directly created if the access is granted to use the console by the developer).

Since, DEMO of the application is always important then the explanation, here is the LIVE LINK to the running application on HEROKU.

DEMO: 

LIVE PROPERTY MANAGER

Here is a snapshot of how the UI of the application will look like .



This application is totally based on MONGODB  + EXPRESS with mongoose as the ORM framework and AngularJS as the client side framework. The client UI is an single page application completely being manged by AngularJS and Bootstrap ( Angular UI Bootstrap) components are being used to render the UI. 

CLIENTS: 

Since this is an server side application we need a language specific client to access the properties in your project. Libraries has been created in NODEJS (avaiable as NPM Module) and Java (available as a GITHUB Project will be soon available in MVN Repository).
If the client doesn't exist for your working language, let me know and i am very sure we can created it in a very short span of time.

PROJECT DETAILS: 

GITHUB:   https://github.com/panbhatt/propserver

NODEJS Module :  https://github.com/panbhatt/propserver-node-client
   NPM : npm i propserver-node-client

JAVA :   https://github.com/panbhatt/propserver-java-client

All the API's of the project are being documented property via SWAGGER and can be found in the swagger console available at https://vast-cliffs-8955.herokuapp.com/swagger/ 


All the API's of the project can be tested with the above Swagger API Console. 

I hope it will be helfpul for you. Let me know, in comments how we can improve this project (by email or via GITHUB too.)

Note: There is a project ZUUL available at devnull.org (however the site is down since long) but it is only made for java ( plus a spring client is also there but it lacks little documentation and it is little cumbersome of set it up). It also provides similar features but only Java support. 

Let me know, if you like it. It is free for anyone's use. Just drop me a mail and if there are donations that would be awesome for me to buy a BEER... !!!!!!.