
For some time, I had been exploring which technologies to focus on in order to expand my skill set and become productive within the Apple ecosystem. Since I was already familiar with type safety and declarative programming, I decided that developing applications with SwiftUI would be the most natural and fastest way to learn. However, technologies evolve so rapidly nowadays that encountering a new version before fully understanding why the previous one changed forces us to completely rethink our learning approach. Because of that, I knew I first needed to build a solid foundation — a well-structured backend and a simple yet functional frontend.

On the backend side, I built a modular architecture based on NestJS and MikroORM. Each domain — order, product, payment, loyalty, and notification — is isolated with its own controller–service–module structure. The authentication process operates securely through JWT and Google OAuth2 integration.

For the frontend, I developed a user panel built on Vite + React + TypeScript, supported by TailwindCSS, Radix UI, and React Query, following a component-driven and modular architecture. This approach allowed me to achieve both high readability and easy scalability on the UI side.

Later, as I transitioned to SwiftUI, my confidence grew quickly with early experiments—until I discovered the MVVM architecture and realized how scattered my initial codebase actually was. I had already sensed a need for a more modular structure, but I didn’t yet have the architectural experience to build it properly. With that awareness, I began a comprehensive refactor process focused on state management, SwiftUI lifecycle, binding–publisher data flow, and dependency injection principles.