Knížkomat

TL;DR
Knížkomat je platforma s předplatným, která nabízí vysoce kvalitní souhrny knih o seberozvoji a zaměřuje se na zaneprázdněné jednotlivce. Shrnutí mají 15-20 stran a zabývají se tématy, jako je finanční gramotnost. Projekt nahrazuje předchozí způsob využívající Patreon a Google Disk a nabízí vylepšená doporučení, filtrování a integraci médií. Je vytvořen pomocí ReactJS, NextJS a SpringBoot, podporuje bezpečné platby prostřednictvím GoPay a integruje se s Discordem, čímž řeší problémy, jako je bezpečné streamování zvuku.

Naším prvním projektem je webová platforma Knížkomat.cz, která slouží pro čtení kvalitně zpracovaných souhrnů nově vydávaných knížek v oblastech seberozvoje jako je finanční gramotnost, komunikační dovednosti a další. Platforma slouží lidem, kteří nemají prostor nebo čas na to, aby četli knihy v těchto oblastech, ale chtějí získat znalosti v nich uložené. Nejedná se však pouze o placenou verzi čtenářského deníku. Souhrny často dosahují patnácti až dvaceti stránek a jsou zpracované členy týmu Knížkomatu, kteří každou knížku koupí a sami přečtou. Výsledkem je tedy velice kvalitní pohled do obsahu knížky, který může čtenář získat v relativně krátké době. Čtenáři si mohou vybrat z několika úrovní předplatného, což jim poskytne různý počet přístupů k novým knížkám každý měsíc.

Tento projekt jsme realizovali na zakázku pro zakladatele Knížkomatu, kteří podle svých slov přerostli systém postavený na placení předplatného přes Patreon (následně HeroHero) a sdílení souhrnů přes Google disk. Hlavním úkolem bylo tedy navázat na výhody těchto platforem, jakými jsou třeba snadné placení předplatných na Patreonu nebo komplexní možnost psaní textů v Google dokumentech, ale rozšířit je o možnosti webové platformy, jakými jsou lepší možnosti doporučování, filtrování nebo integrace dalších mediálních formátů. To vše musí být prezentováno v moderním a elegantním designu, který odpovídá identitě Knížkomatu. Pro správu souhrnů, úrovní předplatného, slev a uživatelů má platforma administrátorský panel, který usnadňuje členům týmu Knížkomat práci a umožňuje mít přehled nad aktuálním stavem platformy.

V rámci tohoto projektu zajišťujeme všechny úrovně od počáteční analýzy požadavků, přes návrh a implementaci až po nasazení a správu systému. V průběhu projektu jsme pomohli formovat identitu Knížkomatu a jeho další směřování.

Technický popis aplikace

Architektura aplikace je rozdělena na tři hlavní bloky: frontend, middleware a backend. Frontend a middleware jsou realizovány jedním projektem, backend je technologicky oddělený. 

Pro frontend byl zvolen framework ReactJS, jelikož s ním máme velmi dobré zkušenosti a je de-facto standardem pro tvorbu moderních webových aplikací. Abychom naplnili funkcionalitu psaní textu v Google dokumentech, využili jsme knihovnu Tiptap, která obsahuje veškerou funkcionalitu požadovanou zákazníkem, má velice intuitivní ovládání a dokumenty ukládá ve formátu JSON, se kterým se pohodlně pracuje jak na frontendu, tak na backendu.

ReactJS šel velice dobře dohromady s frameworkem NextJS, který zajišťoval middleware. Middleware je pro tuto aplikaci klíčový, jelikož umožňuje odstínění klienta od backendového API, zajišťuje autorizaci směrem k uživateli pomocí cookies a umožňuje snáze posílat požadavky z frontendu na backend. Middleware také hraje klíčovou roli v našem streamování audio-knížek, kde zajišťuje autorizaci pro přístup k audio záznamu.

Backendová část aplikace je realizována pomocí frameworku Java SpringBoot. Tento framework není z nejmodernějších, ale je stále velmi rozšířený a máme s ním celkově dobré zkušenosti. Velice dobře také spolupracuje se zvolenou platební bránou GoPay, jelikož brána poskytuje knihovnu v Javě, přes kterou je možné vytvářet a spravovat platby. Jelikož Knížkomat má i svůj Discord server, tak právě backend webové aplikace zajišťuje propojení mezi uživatelským účtem v aplikaci a v Discordu na základě úrovně aktivního předplatného.

Netradiční problémy a jejich řešení

Při realizaci tohoto projektu jsme narazili na několik problémů, nad kterými jsme se museli pozastavit a důkladně promyslet jejich řešení. Ty nejzajímavější jsme sepsali v našem blogu. Jmenovitě se jedná o úkol zabezpečení přehrávání audio-knížek tak, aby nebylo možné je (snadno) stáhnout [čtěte více]. Dále se jedná o způsob provádění frontendových end-to-end testů pomocí knihovny Cypress tak, aby stačilo simulovat backend a ne middleware [čtěte více]. V neposlední řadě problém, který jsme si vytvořili sami, vymysleli netradiční a trochu nešťastné řešení a nakonec ho vyřešili úplně jinak: nahrávání souborů z frontendu přes middleware až na backend [čtěte více].

NoxLabs je tým inženýrů a designérů, kteří se specializují na vývoj webových a mobilních aplikací. S nadšením vytváříme krásný software a vítáme nové nápady na projekty.

Chcete s námi spolupracovat? Napište nám