After initiall discovery phase with client we decided to split frontend to 3 standalone SPAs in mono repo with shared module for domain, api calls, styles and UI components. This saved of a lot of time and We can bring unified user experience across customer and partner area. Backend services contain micro-services for generating documents, communicating with 3rd party services and main API application.
This application is used by consumers, which were onboarded from partners or they can sign up by indepentently. Besides basic e-commerce functionality, they can design and save their mouthguard, request scan of teeth from partners.
Critical part of project was to prepare enviroment for partners as they bring lot of revenue. Partner can invite customers, coaches from sport teams. They can track orders also of their customers. Partner area has special e-commerce channel with extra products like Resell Vouchers. In Partner Area has access also coach after was invited, can create team, team design, invite athletes from club.
For Administration App we used React Admin, which is framework for enterprise solutions and used by corporates like IBM or Ford. Developers can bring quick solutions thanks to pre-defined components for tables, filter functions, forms. Thanks to API Platform we have always up-to-date API Schema and with package hydra-admin we can bring simple CRUD in few minutes, but also gives us flexibility to have custom areas like Kanban board for orders.
Instead of using micro-services for each frontend app we established one API for all apps. For now, it brings advantages of unified domain model and faster development of new features and modules required for multiple frontend apps. For generating PDFs of invoices, vouchers and async tasks we are using Node.JS app, which is a consumer of Redis queue.