This repository contains the deployable implementation and seed database for an online Microservice Bad Smells Catalog. The catalog is associated with the paper:
Yongchao Xing, Zhiying Tu, Dianhui Chu, Weipan Yang, and Yiming Lv. Catalog, Impact, and Evaluation of Microservice Bad Smells: A Systematic Literature Review. Software: Practice and Experience, 56(4):372–423, 2026. DOI: 10.1002/spe.70053.
The system provides a web-based knowledge base for browsing, searching, and sharing microservice bad smell knowledge. Each smell entry records its aliases, description, detection method, consequences, causes, examples, classification, evidence score, literature sources, and related smells.
Features
Browse the complete microservice bad smell catalog.
Filter smells by high-level categories, including internal design, communication and interaction, structure and infrastructure, decomposition, security, lifecycle management, and team/technology.
Search smells by name in the web interface.
View detailed smell knowledge, including description, detection, consequence, cause, example, source references, and related smells.
Copy smell information from the interface for reuse in research, documentation, or tool integration.
Browse smell type information in table and tree-map views.
Use the backend REST APIs to retrieve smell entries, smell types, and smell relations.
Note: If the archive contains a nested catalog/catalog/ directory, it is a duplicated deployment copy. The root-level catalog/dist/, catalog/msbs-backend-8088.jar, and sql/msbs_en.sql are sufficient for a normal deployment.
Technology Stack
Frontend
Vue 3
Vue Router
Element Plus
AntV G6
umi-request
citation-js
The provided frontend is a built deployment artifact under catalog/dist/.
Backend
Java 8
Spring Boot 2.7.14
MyBatis Plus 3.5.2
MySQL Connector/J
Knife4j / Swagger support
The backend is provided as a runnable Spring Boot JAR: catalog/msbs-backend-8088.jar.
Database
Recommended: MySQL 8.0+
Main database script: sql/msbs_en.sql
The main catalog database contains:
antipattern_info: smell entries
antipattern_type: smell category/type hierarchy
antipattern_relation: relations among smells
user: basic user table used by the backend
The current seed data contains 69 smell entries, 23 type records, and 12 smell-relation records.
Quick Start
1. Prepare MySQL
Create a database:
CREATE DATABASE msbs_en DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
Import the main catalog data:
mysql -u root -p msbs_en < sql/msbs_en.sql
If you use MySQL 5.7 or another database version that does not support utf8mb4_0900_ai_ci, replace it with utf8mb4_general_ci or another compatible collation before importing the SQL file.
2. Start the Backend
Run the backend JAR and override the database configuration with your local database information:
The built frontend may contain a hard-coded backend address. If the frontend cannot access the backend, replace the backend URL in the built JavaScript files:
grep -R "47.92.224.21:8088" -n catalog/dist/js
For local deployment on Linux, you can replace it with:
sed -i 's#http://47.92.224.21:8088#http://127.0.0.1:8088#g' catalog/dist/js/*.js
On macOS, use:
sed -i '' 's#http://47.92.224.21:8088#http://127.0.0.1:8088#g' catalog/dist/js/*.js
For production deployment, replace it with the public backend API address or rebuild the frontend from source using the desired API base URL.
Main API Endpoints
The frontend mainly uses the following backend APIs.
List all smell entries
GET /antipatternInfo/list
Example:
curl "http://127.0.0.1:8088/antipatternInfo/list"
List smells by category
GET /antipatternInfo/list/getByCategoryName?catagoryName={categoryName}
The backend JAR contains default database settings. For security and reproducibility, do not rely on embedded production credentials. Always override database configuration through command-line parameters, environment variables, or an external Spring Boot configuration file.
server {
listen 80;
server_name your-domain.example;
root /path/to/catalog/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
If the backend and frontend are deployed on different domains or ports, make sure CORS is enabled on the backend and the frontend API base URL points to the correct backend address.
Troubleshooting
Frontend shows ERR_FAILED, 502, or cannot load smell data
Check whether the frontend is still pointing to an old backend address:
grep -R "http://" -n catalog/dist/js | head
Then replace the backend URL with your deployed backend address.
Backend cannot connect to MySQL
Check:
Whether MySQL is running.
Whether the database msbs_en exists.
Whether sql/msbs_en.sql has been imported.
Whether the username and password are correct.
Whether the JDBC URL uses the correct host, port, database name, and timezone.
SQL import fails because of collation
If your MySQL version does not support utf8mb4_0900_ai_ci, replace it:
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' sql/msbs_en.sql
Then import the SQL file again.
Citation
If you use this knowledge base or system in academic work, please cite:
@article{xing2026catalog,
title = {Catalog, Impact, and Evaluation of Microservice Bad Smells: A Systematic Literature Review},
author = {Xing, Yongchao and Tu, Zhiying and Chu, Dianhui and Yang, Weipan and Lv, Yiming},
journal = {Software: Practice and Experience},
volume = {56},
number = {4},
pages = {372--423},
year = {2026},
doi = {10.1002/spe.70053}
}
Microservice Bad Smells Catalog
This repository contains the deployable implementation and seed database for an online Microservice Bad Smells Catalog. The catalog is associated with the paper:
The system provides a web-based knowledge base for browsing, searching, and sharing microservice bad smell knowledge. Each smell entry records its aliases, description, detection method, consequences, causes, examples, classification, evidence score, literature sources, and related smells.
Features
Repository Structure
Technology Stack
Frontend
The provided frontend is a built deployment artifact under
catalog/dist/.Backend
The backend is provided as a runnable Spring Boot JAR:
catalog/msbs-backend-8088.jar.Database
sql/msbs_en.sqlThe main catalog database contains:
antipattern_info: smell entriesantipattern_type: smell category/type hierarchyantipattern_relation: relations among smellsuser: basic user table used by the backendThe current seed data contains 69 smell entries, 23 type records, and 12 smell-relation records.
Quick Start
1. Prepare MySQL
Create a database:
Import the main catalog data:
If you use MySQL 5.7 or another database version that does not support
utf8mb4_0900_ai_ci, replace it withutf8mb4_general_cior another compatible collation before importing the SQL file.2. Start the Backend
Run the backend JAR and override the database configuration with your local database information:
After startup, the backend listens on:
3. Start the Frontend
Serve the built frontend files:
Then open:
4. Configure Backend Address for the Frontend
The built frontend may contain a hard-coded backend address. If the frontend cannot access the backend, replace the backend URL in the built JavaScript files:
For local deployment on Linux, you can replace it with:
On macOS, use:
For production deployment, replace it with the public backend API address or rebuild the frontend from source using the desired API base URL.
Main API Endpoints
The frontend mainly uses the following backend APIs.
List all smell entries
Example:
List smells by category
Example:
The parameter name is intentionally written as
catagoryNamebecause this is the name used by the current frontend and backend implementation.List related smells
Example:
List smell types
Example:
Data Model
antipattern_infoStores the main smell knowledge entries.
idnamealiasesdescriptiondetectionconsequencescauseexamplesourcescategoryNametypeNameevidenceisDeleteantipattern_typeStores category/type information.
idnamedescriptionparentNameNULLfor top-level categoriesorderIndexisDeleteantipattern_relationStores relations between smells.
idAntiPatternNamerelatedAntiPatternNamerelationprecedesorrelatesisDeleteDeployment Notes
Backend configuration
The backend JAR contains default database settings. For security and reproducibility, do not rely on embedded production credentials. Always override database configuration through command-line parameters, environment variables, or an external Spring Boot configuration file.
Example using an external configuration file:
Example
application-prod.yml:Frontend deployment with Nginx
Example Nginx configuration:
If the backend and frontend are deployed on different domains or ports, make sure CORS is enabled on the backend and the frontend API base URL points to the correct backend address.
Troubleshooting
Frontend shows
ERR_FAILED,502, or cannot load smell dataCheck whether the frontend is still pointing to an old backend address:
Then replace the backend URL with your deployed backend address.
Backend cannot connect to MySQL
Check:
msbs_enexists.sql/msbs_en.sqlhas been imported.SQL import fails because of collation
If your MySQL version does not support
utf8mb4_0900_ai_ci, replace it:Then import the SQL file again.
Citation
If you use this knowledge base or system in academic work, please cite: