PikkuKirjasto is a library, which is located in Satakunta, Finland. I have been participating in the creation of this library. The library is a free library, which is open to everyone.
The library has been operational for a couple of years already, and has already gained a lot of popularity in the local community.
Since the library is basically a charity project, it has no funding, therefore it soon became clear that the library maintenance work will require some kind of automation, and as well as a log or registry of the books that are being borrowed. While the main focus was on helping the staff personnel of the library, the idea of helping at the same time for the users of the library was also considered. The idea of a mobile application, together with a set of administrative featured was born.
For the users of the library, the mobile application is used to handle the book borrowing, and returning functions. Since there is no any type of registration required to use the library, the main purpose the application serves is to give an intuitive way for the users to search for the book they would be interested in, and to help the administrative personnal (meaning us 😅) which books are currently borrowed, and which books are available.
The mobile applicaiton is written in React Native, using Expo SDK. It runs on both Android and iOS devices.
The application was written in Typescript, in a way that enables me to maintain it for a long time. It contains only the most neccessary set of features, and is not bloated with unnecessary dependencies. The User Interface is intuitive, and it let's the users to search for the books, and to borrow them. That's it.
The other important bits of the library system is the web application. While it offers the same set of features as the mobile application, this is primarily used by the administrative personnel of the library.
The web application is entirely writen in Go, using chi framework, which is an idiomatic HTTP router for Go.
The templating engine used is go-templ together with htmx.
Through the web application, administrators can perform full CRUD (Create, Read, Update, Delete) operations on books, authors, and categories. Books can be marked as borrowed or available, helping to track their status in real time. It also allows staff to register new members, manage borrowing history.
Even though this is considered as a hobby project, I still wanted to have a comprehensive set of tools for monitoring in place.
The main reasion for that is that the entire Pikkukirjasto stack is running on a self-hosted infra, therefore ensuring that the underlying services are all operational, a good monitoring system is required.
For those, I have used Prometheus together with Grafana. Github and Prometheus are both open source projects, and they are both running on my self-hosted infra. Alongside with the main web application.