Skip to main content

✨️ Deciphering the "Architectural Flavor" held by major frameworks

✅ Introduction: Frameworks are not Architecture

Many frameworks do not force a specific architectural style. However, each has a tendency (flavor) where "designing this way feels natural".

Examples:

In other words, we decipher with the stance:

It is important not to think "The framework decides the architecture",
but to "Understand the direction the framework naturally induces".

✅ Architectural Flavors of UI Frameworks

React

  • Classification: MVU (Model–View–Update) family / Under Elm Architecture influence
  • Unidirectional data flow, immutability, declarative UI.
  • Combination with Redux further strengthens the MVU color.
    → Can be treated as a representative example of UI Structural Style "MVU".

Next.js (App Router)

  • Classification: Closer to "Topologies / Integration" than UI structural style
  • Rendering strategies like SSR / SSG / ISR / Edge Rendering themselves determine the architecture.
  • Structure where UI and API (Backend) coexist via API Routes / Route Handlers / Server Actions.
  • File-based routing naturally enforces folder structure by feature.
    → Tends to become a project structure close to Vertical Slice / Feature-based.
  • While containing React (MVU), Next.js itself is an entity that defines "Overall App Configuration (Topology)" rather than "Structural Architecture".

→ As an architectural style, it belongs to the world of "Topologies (SSR/Edge) + Integration (UI + API Integration)" rather than MVU.

Vue.js (3.x)

  • Options API: Close to MVVM.
  • Composition API: Increased functional elements leaning towards React.
    → Overall, a hybrid of MVVM and MVU.

Angular

  • Clear MVVM / Layered structure
  • Component (VM), Template (View), Service (Logic).
    → Easy to treat as a typical example of UI structural style.

SwiftUI / Jetpack Compose

  • Completely MVU family
  • Single source of truth, re-computation, declarative UI.
    → The purest implementation of recent Declarative UI.

✅ Architectural Flavors of Data-centric Frameworks

Ruby on Rails

  • Typical example centered on Active Record
  • MVC, but practically tends to become Fat Model / Transaction Script.
    → Representative example of Structural Style "Data-centric (Active Record)".

Laravel

  • Eloquent is Active Record-like.
  • Intuitive, but domain model splitting is up to the developer's ingenuity.
    → Easy to understand in the context of Data-centric.

Django

  • MVT (Model–View–Template) is close to MVC.
  • ORM leans towards Data Mapper.
    → Representative example leaning towards "Table Module / Data Mapper" within Data-centric.

Layered / Clean / Dependency Rule Frameworks

Spring Boot (Java)

  • Structure easy to make Clean / Hexagonal
  • Division of Controller → Service → Repository is natural.
  • Easy to control dependency direction via DI.
    → One of the frameworks with the most Clean Architecture implementation examples.

NestJS (Node.js)

  • Module structure, DI, and Decorators are very similar to Spring.
  • Implementation of Port / Adapter / UseCase can be made clearly.
    → Representative of Clean / Hexagonal in the Node.js world.

.NET / ASP.NET Core

✅ Reactive / Actor Frameworks

Node.js

Erlang / Elixir / Akka

✅ Style × Framework Correspondence Table (Overview)

Structural StyleRepresentative Framework / Technology
MVUReact / Redux, SwiftUI, Jetpack Compose
MVVMVue (Options API), Angular
MVC / MVTRails, Django
Active RecordRails (ActiveRecord), Laravel (Eloquent)
Data Mapper leaningDjango ORM
Layered / Clean / HexagonalSpring Boot, NestJS, .NET
Event LoopNode.js
Actor ModelErlang / Elixir, Akka

✅ Value This Page Wants to Provide

  • When learning architecture, understand which style familiar frameworks are close to.
  • When reading code, understand which "lens" deepens understanding.
  • See which philosophy the technology you are using stands on.

Please use this page as a guide to understand "the architectural philosophy moving behind the framework".