What is the architectural name or pattern for my Vue.js + Express.js + MySQL application?
I need to explain the architecture of my app for a project, but I’m not sure what name or pattern to attribute to it.
Vue.js (Frontend)
- Only responsible for the UI/UX
- Sends requests via Axios to the Express.js backend
Express.js (Backend) - Handles requests from the Vue.js frontend
- Processes and manages data
- Interacts with the MySQL database to read/write data
- Sends responses back to the Vue.js frontend
MySQL (Database) - Stores data (model layer)
What architectural pattern is this app following, and what would be the appropriate way to describe it?
2
Answers
Honestly, just explaining it in easy words without things VENOM or BEAVER acronyms, will make life easier for everybody (like non-heavy tech-savvy people) and be more inclusive.
A few points about the list above:
Vue is not really responsible for your UX
Can indeed make some external requests with ofetch or else yes
not sure what this means
very abstract (especially if you don’t mention state)
no. Your frontend framework does not do that (could maybe be fine if you use a proxy like Supabase but still, unrelated)
no and redundant with doing HTTP calls
yes kinda redundant again with the point above
This is a very fast and simple definition so far.
This is a more detailed explanation of what Vue actually is.
Your Vue.js + Express.js + MySQL application would be considered a three-tier web application. The three-tier architecture is a type of software architecture that is organized into three major parts, which are often referred to as tiers or layers:
Moreover, the specific design pattern of your application is commonly referred to as the Model-View-Controller (MVC) pattern. The MVC pattern is a specific way to organize interactions between the presentation, application, and data tiers in your application. Here’s how each part of your stack fits into the MVC framework:
In a typical MVC pattern:
The Model corresponds to all the data-related logic that the user works with.
The View displays the data (the model) and sends user actions (e.g., button clicks) to the controller. The Controller handles the user input from the view, manipulates the model, and finally sends the view to be rendered.
Operations common to this type of application would also lump it into being a CRUD app. CRUD stands for Create, Read, Update, and Delete, which are the four basic operations of persistent storage. These operations are fundamental to the management of data in databases and are often used to describe user interface conventions that facilitate viewing, searching, and changing information.
In the context of your Vue.js + Express.js + MySQL application:
These CRUD operations are essential for the functionality of most web applications, as they allow users to interact with and manage data efficiently. Your application’s architecture, with Vue.js as the frontend, Express.js as the backend, and MySQL as the database, supports these CRUD operations, also making it a CRUD application.