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í.
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.
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.