Hey everyone, I haven’t been asking anyone for help with developing the software for quite some time now, but well, the time is the crucial part here. I wish that the day lasted much longer than it currently is, yet, since I can’t do much about it, I want to ask you for help with contributing to the open source projects that I’ve been working on. It could be anything, like a feedback or an actual contribution (e.g. via Pull Request) and maybe you will find some of the projects interesting as there is a few of them waiting to be developed further.
Warden is by far my biggest and most advanced open source project, that I’ve been working on for over a year now, and there are at least quite a few people around the world using it (at least based on the messages I did receive from them). At its core, it was built as a lightweight library containing the set of extensions (that can be easily added to the overall configuration and pipeline simply by implementing one trivial interface) in order to help with monitoring the resources like websites, APIs, databases, files etc.
You can find the repository and the documentation to all of its features as well as examples on the GitHub.
That’s the base part of the Warden. On top of that, I did create a Web application (a year ago) to find out if the Warden library that could be used and run within a console app or a service would be able to somehow push its results and visualize the data and resources being monitored via web dashboard. It turned out to be possible and actually quite easily achievable, therefore I did realize it’s worth trying to create a whole new stack that will be built as the set of microservices and the RESTful API on the top in order to seamlessly integrate with the core Warden monitoring application. I have already created and deployed to the cloud the very first version of the services and with a friend of mine, we’re working on the new Web interface, so it will look really cool and neat. You can find more UI designs here (some of them are already implemented).
There are a few things that I’d like to with the Warden, so feel free to provide your feedback or join our small team and help us develop this product (we already talked to some people and there’s a chance to make it commercial stuff using the SaaS model).
- Core – migrate the Warden library to the latest version of .NET Core framework (.csproj thingy) and separate all of the extensions into their own repositories in order to make the overall solution more modular.
- API – develop further the current set of services, there’s still a lot of stuff to figure out in terms of storing the data, caching, sending notifications etc.
- Extensions – any new extension (external package) that would be valuable to you or the others, as well as adding new features to the core library.
Lockbox was created to provide a secure storage to any type of the credentials (in my case it was the configuration of the application, so-called appsettings.json) and easily integrate it with any software (or the actual device) that is able to perform an HTTP request. It’s a very simple idea – there’s a NoSQL database (MongoDB but it could be anything), that contains basic user accounts, boxes with the access privileges and within the boxes, actual entries that contain the encrypted data. Encryption key is being passed via the HTTP Header, thus even if the database was compromised, there’s no way to decrypt the values. I did it, cause there was no solution back then like e.g. Azure Vault Storage and I really needed something simple enough (yet still secure), to quickly and securely load the configurations into my applications on the production environment. Here you will find a repository, basic wiki with some examples and the actual HTTP API documentation.
For the further development, there’s really a need to create a web interface through which you could manage all of your encrypted data and so on. It would be also nice to create a CLI (like a redis-cli or so) and of course add more tests since I wanted to get it up and running quickly and had no time to write them back then.
Medium is another project that I created as I couldn’t find a service that would help me solve my problem. Think about the following scenario, for example, you have a build server, and once the build is completed you might want to execute some special webhook that should be e.g. validated and based on the data being passed within this webhook, you may want to do another HTTP request etc. so the flow can go on and get really complicated. And this is why I created Medium – there was no service, that would let me expose the API and define the validation rules for the incoming HTTP request (e.g. from the build server) and then perform another HTTP request to some other service (e.g. Docker Hub or MyGet) based on the received input.
Same as in Lockbox, it would be really great to have the web interface in order to define the flow – for the starters, it could contain a textarea that would be used to save or load the configuration for the webhooks. And also, there’s a need to implement some repository using the database (for now everything is being kept in the memory) as well as add tests of course.
In order to sum up what was written here – if you would like to start with the open source in general and don’t have your own project (yet or don’t want have it at least for now), but still would like to contribute in some way, feel free to leave a comment or message me directly via email: piotr.gankiewicz[at]gmail.com. Any help will be greatly appreciated!