Video link of the app in action.
The extension works properly only in the Google Chrome Dev because showPopup method is marked as "Dev channel".
Hexagonal/ports&adapters architecture was taken as the basis, where the highest-level component (core) contains the most important application logic. The rest are adapters for the core (ui and persistence). UI component contains all React code and is responsible for ui rendering. It interacts with the core through the ApplicationPort interface. Persistence implements repositories based on appropriate ports and indexedDB communication logic.