Home, I am using a Debian server where are store my files, media files and some of my application what I strictly use on my local network. Although, I am the only user who use it, not a good thing when something bad happen there and I have no information about that. I am that kind of guy who like to write solution for myself, so I have decided that I build a ticketing system where I can collect alerts from my server and from my other devices (e.g.: Raspberry Pi).
I like writing and designing stuff by myself, because I an learn a lot from it. I am writing an article series, where introduce and explain how my home made solution works from more aspects like database view, program architecture view, complexity and separation, maintainability, etc.
What environment and language will I use?
I would like to begin with the tools, what I will use. I love programming with many languages and on many platform. For this project, I choose .NET 5.0 with C# language. I always loved C# language, because I found it very intuitive and as I also programing a lot in C, its syntax used to very familiar when I have begun it several years ago. Since .NET Core has been introduced and it has become cross platform solution, my attention was raised from my home server view. So it was a handy idea to choose it as my backend of this project.
What about frontend?
There was also a new stuff introduced with .NET Core for a while and that is the Blazor web assembly. I have never liked JavaScript (or any descendant). I was always programming with languages that are compiled languages and have types. I only use interpreter if I write some kind of short monitoring script, but for massive big projects, I rather prefer compiled languages with types and objects. Although Blazor web assembly might not be perfect, but it is totally sufficient and enough for me during this home project.
What do I use to store my data?
Last question is: where I should store my data about alerts? It will be a database, obviously, but which one? Earlier I always used MariaDB, but now I wanted to try and learn something new. I choose the PostgreSQL at the end. I did not make any benchmark between them. My reason was to try something new, and this new should be popular, so if I need a help Google search probably can help me.
Final words
Full solution is hosted on my Debian server since the final deployment. For version following, I use Gitlab on my home server. But I have no reason to keep my code in secret, so I uploaded it to Github. Code can be reached in this repository: onlyati/home-ticketing-api (github.com). In the following articles, I will try to explain and introduce my solution from many aspects. I will highlight some code details, but you can reach the full code anytime in this Github repo.