Knížkomat

TL;DR
Knížkomat is a subscription platform offering high-quality summaries of self-development books, targeting busy individuals. Summaries are 15-20 pages long and cover topics like financial literacy. The project replaces a previous system using Patreon and Google Drive, offering improved recommendations, filtering, and media integration. Built with ReactJS, NextJS, and SpringBoot, it supports secure payments via GoPay and integrates with Discord, solving challenges like secure audio streaming.

Our first project is a web platform Knížkomat.cz, which serves for reading well-crafted summaries of newly published books in the areas of self-development such as financial literacy, communication skills and others. The platform serves people who don't have the space or time to read books in these areas but want to gain the knowledge stored in them. However, it is not just a paid version of a reading journal. The summaries often run to fifteen or twenty pages and are compiled by members of the Knížkomat team who buy and read each book themselves. The result is therefore a very high quality insight into the content of the book that the reader can gain in a relatively short time. Readers can choose from several subscription levels, giving them a varying number of accesses to new books each month.

This project was commissioned by the founders of Knížkomat, who, in their own words, outgrew a system based on paying subscriptions via Patreon (later HeroHero) and sharing summaries via Google Drive. The main challenge was therefore to build on the advantages of these platforms, such as the ease of paying subscriptions on Patreon or the comprehensive text writing capabilities of Google Docs, but to extend them with the capabilities of the web platform, such as better recommendation options, filtering or integration of other media formats. All of this must be presented in a modern and elegant design that matches the identity of Knížkomat. To manage summaries, subscription levels, discounts and users, the platform has an admin panel that makes the work of Knížkomat team members easier and allows them to have an overview of the current status of the platform.

Within this project we provide all levels from initial requirements analysis, through design and implementation to system deployment and maintenance. Throughout the project we helped shape the identity of Knížkomat and its future direction.

Technical Description of the Application

The application architecture is divided into three main blocks: frontend, middleware and backend. Frontend and middleware are implemented by one project, backend is technologically separated. 

For the frontend, the ReactJS framework was chosen, as we have very good experience with it and it is the de-facto standard for creating modern web applications. To fulfill the functionality of writing text in Google Docs, we used the Tiptap library, which contains all the functionality required by the customer, has very intuitive controls and saves documents in JSON format, which is easy to work with both on the frontend and backend.

ReactJS went very well together with the NextJS framework, which provided the middleware. Middleware is key to this application as it allows for shielding the client from the backend API, provides authorization towards the user using cookies, and allows requests to be sent from the frontend to the backend more easily. Middleware also plays a key role in our audio-book streaming, where it provides authorization to access the audio file.

The backend part of the application is implemented using the Java SpringBoot framework. This framework is not cutting-edge, but it is still very widespread and we have good experience with it overall. It also works very well with the chosen payment gateway, GoPay, as the gateway provides a Java library through which payments can be created and managed. As Knížkomat also has its own Discord server, it is the backend of the web application that provides the link between the user's account in the application and in Discord based on the level of active subscription.

Unconventional Problems and Their Solutions

During the implementation of this project, we encountered several problems that we had to pause and think carefully about their solution. We have written about the most interesting ones in our blog. Namely, the challenge of securing the playback of audio-books so that they cannot be (easily) downloaded [read further]. Another one is how to perform frontend end-to-end tests using the Cypress library so that it is enough to simulate the backend and not the middleware [read further]. Last but not least, a problem that we created ourselves, came up with an unconventional and somewhat unfortunate solution, and ended up solving it in a completely different way: uploading files from the frontend through the middleware to the backend [read further].

NoxLabs is a team of engineers and designers specializing in web and mobile development. We're passionate about building beautiful software and welcome new project ideas.

Want to work with us? Drop us a message