Challenge
- Maintaining UI Consistency: Achieved by using MUI v5, mirroring the main application’s look and feel.
- Simplifying Complex State Management: Transitioned from Redux to Zustand for more straightforward state management.
- Seamless Integration with Main Application: Used iframes for embedding and meticulously handled routing and authentication to ensure a cohesive user experience.
- Refactoring and Future-Proofing: Our approach set a benchmark for the client, leading them to consider refactoring their main application using our methods.
- Enhanced Performance: The use of modern technologies like Vite and TypeScript improved the application’s performance and development efficiency.
- Improved Maintainability: The modular and well-structured codebase simplified maintenance and future enhancements.
- Seamless User Experience: Despite being a separate entity, the dashboard integrated flawlessly with the main application, offering a consistent and intuitive user experience.
- Client Satisfaction and Benchmarking: The project not only met but exceeded client expectations, prompting them to use our work as a model for refactoring their existing application.
Solution
- Modular Component Design: Development of small, reusable, typed components to increase efficiency and reusability across the application.
- Centralized Theming: Using MUI’s createTheme for consistent theming across the application.
- State Management: Adoption of Zustand for simpler, more effective local state management.
- API Layer: Utilization of Tan-Stack/React-Query for a more sophisticated approach to handling asynchronous data and API calls.
- Code Organization: Separation of concerns by having .tsx files for UI rendering and adjacent .hook.ts files for data fetching, state management, and logic.
- Lazy Loading: Implementation of React Router, Lazy, and Suspense for efficient loading of screens and their nested components.
- Authentication Handling: Integration with Auth0 for standalone authentication and contextual token handling when embedded within the main application.
- Bidirectional Routing: Ensuring seamless navigation between the micro frontend and the main application, with deep linking capabilities for precise navigation.
- Project Management (Agile Methodology): The project was completed efficiently and on time, adhering to agile principles, ensuring continuous alignment with client expectations.