diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f717663
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+# Logs / local runtime
+debug-logs/
+*.log
+
+# IDE / OS
+.idea/
+.vscode/
+.DS_Store
+Thumbs.db
+
+# Frontend (CRA / React)
+mengyaprofile-frontend/node_modules/
+mengyaprofile-frontend/build/
+
+# Backend (Python/Flask)
+mengyaprofile-backend/__pycache__/
+**/__pycache__/
+*.py[cod]
+.venv/
+venv/
+
+# Env / local overrides
+.env
+.env.*
+.env.local
+.env.*.local
+
diff --git a/mengyaprofile-backend/data/background/image1.png b/mengyaprofile-backend/data/background/image1.png
new file mode 100644
index 0000000..628e677
Binary files /dev/null and b/mengyaprofile-backend/data/background/image1.png differ
diff --git a/mengyaprofile-backend/data/background/image2.png b/mengyaprofile-backend/data/background/image2.png
new file mode 100644
index 0000000..33f7730
Binary files /dev/null and b/mengyaprofile-backend/data/background/image2.png differ
diff --git a/mengyaprofile-backend/data/background/image3.png b/mengyaprofile-backend/data/background/image3.png
new file mode 100644
index 0000000..dc53aed
Binary files /dev/null and b/mengyaprofile-backend/data/background/image3.png differ
diff --git a/mengyaprofile-backend/data/background/image4.png b/mengyaprofile-backend/data/background/image4.png
new file mode 100644
index 0000000..5058533
Binary files /dev/null and b/mengyaprofile-backend/data/background/image4.png differ
diff --git a/mengyaprofile-backend/data/background/image5.png b/mengyaprofile-backend/data/background/image5.png
new file mode 100644
index 0000000..8dd5f41
Binary files /dev/null and b/mengyaprofile-backend/data/background/image5.png differ
diff --git a/mengyaprofile-backend/data/background/image6.png b/mengyaprofile-backend/data/background/image6.png
new file mode 100644
index 0000000..64c2425
Binary files /dev/null and b/mengyaprofile-backend/data/background/image6.png differ
diff --git a/mengyaprofile-backend/data/background/image7.png b/mengyaprofile-backend/data/background/image7.png
new file mode 100644
index 0000000..f282db4
Binary files /dev/null and b/mengyaprofile-backend/data/background/image7.png differ
diff --git a/mengyaprofile-backend/data/contacts.json b/mengyaprofile-backend/data/contacts.json
index 1e06392..33c6742 100644
--- a/mengyaprofile-backend/data/contacts.json
+++ b/mengyaprofile-backend/data/contacts.json
@@ -1,11 +1,11 @@
{
"contacts": [
{
- "type": "qq",
- "label": "QQ",
- "value": "3205788256",
- "link": "tencent://message/?uin=123456789",
- "icon": "https://img.shumengya.top/i/2025/11/02/69076687211f9.webp"
+ "type": "email",
+ "label": "个人邮箱",
+ "value": "mail@smyhub.com",
+ "link": "mailto:mail@smyhub.com",
+ "icon": "https://img.shumengya.top/i/2026/02/10/698b21a5e2c26.png"
},
{
"type": "email",
diff --git a/mengyaprofile-backend/data/logo/android.svg b/mengyaprofile-backend/data/logo/android.svg
new file mode 100644
index 0000000..a9df53f
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/android.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/android2.svg b/mengyaprofile-backend/data/logo/android2.svg
new file mode 100644
index 0000000..b2eb976
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/android2.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/csharp.svg b/mengyaprofile-backend/data/logo/csharp.svg
new file mode 100644
index 0000000..c023aa9
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/csharp.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/docker.svg b/mengyaprofile-backend/data/logo/docker.svg
new file mode 100644
index 0000000..eba6cc4
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/docker.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/docker2.svg b/mengyaprofile-backend/data/logo/docker2.svg
new file mode 100644
index 0000000..fc59e9d
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/docker2.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/flask.svg b/mengyaprofile-backend/data/logo/flask.svg
new file mode 100644
index 0000000..c802da9
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/flask.svg
@@ -0,0 +1,15 @@
+
+
+
diff --git a/mengyaprofile-backend/data/logo/gin.svg b/mengyaprofile-backend/data/logo/gin.svg
new file mode 100644
index 0000000..e7ab3cf
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/gin.svg
@@ -0,0 +1,92 @@
+
+
+
+
diff --git a/mengyaprofile-backend/data/logo/gin2.svg b/mengyaprofile-backend/data/logo/gin2.svg
new file mode 100644
index 0000000..2874f2c
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/gin2.svg
@@ -0,0 +1,58 @@
+
+
+
+
diff --git a/mengyaprofile-backend/data/logo/git.svg b/mengyaprofile-backend/data/logo/git.svg
new file mode 100644
index 0000000..5bf444b
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/git.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/godot.svg b/mengyaprofile-backend/data/logo/godot.svg
new file mode 100644
index 0000000..77c8704
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/godot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/golang.svg b/mengyaprofile-backend/data/logo/golang.svg
new file mode 100644
index 0000000..e5a68fe
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/golang.svg
@@ -0,0 +1,238 @@
+
+
+
+
diff --git a/mengyaprofile-backend/data/logo/java.svg b/mengyaprofile-backend/data/logo/java.svg
new file mode 100644
index 0000000..5e0cc0f
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/java.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/linux.svg b/mengyaprofile-backend/data/logo/linux.svg
new file mode 100644
index 0000000..088de35
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/linux.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/minecraft.svg b/mengyaprofile-backend/data/logo/minecraft.svg
new file mode 100644
index 0000000..734e42d
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/minecraft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/mongodb.svg b/mengyaprofile-backend/data/logo/mongodb.svg
new file mode 100644
index 0000000..5ee2821
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/mongodb.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/mysql.svg b/mengyaprofile-backend/data/logo/mysql.svg
new file mode 100644
index 0000000..5650e1c
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/mysql.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/mysql2.svg b/mengyaprofile-backend/data/logo/mysql2.svg
new file mode 100644
index 0000000..53371d0
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/mysql2.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/mysql3.svg b/mengyaprofile-backend/data/logo/mysql3.svg
new file mode 100644
index 0000000..4457eb9
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/mysql3.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/mengyaprofile-backend/data/logo/postgres.svg b/mengyaprofile-backend/data/logo/postgres.svg
new file mode 100644
index 0000000..ecfcb48
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/postgres.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/python.svg b/mengyaprofile-backend/data/logo/python.svg
new file mode 100644
index 0000000..8aa9a10
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/python.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/react.svg b/mengyaprofile-backend/data/logo/react.svg
new file mode 100644
index 0000000..2acc8c5
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/react.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/redis.svg b/mengyaprofile-backend/data/logo/redis.svg
new file mode 100644
index 0000000..1cde9ca
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/redis.svg
@@ -0,0 +1,28 @@
+
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/spring.svg b/mengyaprofile-backend/data/logo/spring.svg
new file mode 100644
index 0000000..4f70f0b
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/spring.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/sqlite.svg b/mengyaprofile-backend/data/logo/sqlite.svg
new file mode 100644
index 0000000..378298f
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/sqlite.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/unity.svg b/mengyaprofile-backend/data/logo/unity.svg
new file mode 100644
index 0000000..13122d0
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/unity.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/logo/vue.svg b/mengyaprofile-backend/data/logo/vue.svg
new file mode 100644
index 0000000..d4d5f0b
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/vue.svg
@@ -0,0 +1,8 @@
+
diff --git a/mengyaprofile-backend/data/logo/wireguard.svg b/mengyaprofile-backend/data/logo/wireguard.svg
new file mode 100644
index 0000000..81823b3
--- /dev/null
+++ b/mengyaprofile-backend/data/logo/wireguard.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/projects.json b/mengyaprofile-backend/data/projects.json
index 62b1018..9778dee 100644
--- a/mengyaprofile-backend/data/projects.json
+++ b/mengyaprofile-backend/data/projects.json
@@ -1,29 +1,119 @@
{
"projects": [
{
- "id": 1,
+ "title": "萌芽主页",
+ "description": "一个简洁美观的个人主页,展示个人信息和项目",
+ "link": "https://shumengya.top",
+ "icon": "https://img.shumengya.top/i/2025/11/03/690836f3c87b2.png",
+ "tags": ["个人主页","React","Flask"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽笔记",
+ "description": "展示自己学习过程中的一些MarkDown笔记",
+ "link": "https://note.shumengya.top",
+ "icon": "https://image.shumengya.top/i/2025/11/02/mengyanote.png",
+ "tags": [ "笔记","Obsidion","React","Flask"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽作品集",
+ "description": "展示个人制作的一些小创意和小项目",
+ "link": "https://work.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2025/11/02/69074f8f5ed5e.png",
+ "tags": [ "作品集","React","Flask"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "万象口袋",
+ "description": "一款跨平台的聚合式软件",
+ "link": "https://infogenie.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2025/11/02/6907516fb77d5.png",
+ "tags": [ "聚合","工具","React","Flask"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽农场",
+ "description": "一款2D平台联机农场经营游戏",
+ "link": "https://work.shumengya.top/#/work/mengyafarm",
+ "icon": "https://img.shumengya.top/i/2025/11/02/6907599cbaf10.png",
+ "tags": [ "农场","游戏","联机","Godot","Python"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽短链",
+ "description": "一个轻量简单的短链跳转系统",
+ "link": "https://short.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2025/11/17/691ad6c78283a.png",
+ "tags": [ "短链接","React","Flask"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽监控面板",
+ "description": "一个轻量简单的监控系统",
+ "link": "https://monitor.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fffd54221.png",
+ "tags": [ "监控","React","Golang"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽Ping",
+ "description": "网站监控系统",
+ "link": "https://ping.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2026/01/22/6971ad8eb9e56.png",
+ "tags": [ "监控","React","Gin"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽密码管理器",
+ "description": "自制密码库,做的太烂,我都不怎么用(",
+ "link": "https://keyvault.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2026/02/10/698b2f4c321ec.ico",
+ "tags": [ "监控","React","Gin"],
+ "admin":true,
+ "show":true,
+ "develop":true
+ },
+ {
+ "title": "萌芽漂流瓶",
+ "description": "匿名漂流瓶系统",
+ "link": "https://bottle.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2025/11/17/691ad6cc635d2.png",
+ "tags": [ "监控","React","Flask"],
+ "admin":false,
+ "show":true,
+ "develop":true
+ },
+
+
+
+ {
"title": "萌芽盘",
"description": "一个轻量级在线网盘,支持文件上传、下载、分享等功能",
"link": "https://pan.shumengya.top",
- "icon": "https://image.shumengya.top/i/2025/11/02/openlist.png",
+ "icon": "https://img.shumengya.top/i/2026/01/04/695a660870959.png",
"tags": ["网盘","OpenList"],
"admin":false,
"show":true,
"develop":false
},
{
- "id": 2,
- "title": "萌芽主页",
- "description": "一个简洁美观的个人主页,展示个人信息和项目",
- "link": "https://shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/03/690836f3c87b2.png",
- "tags": ["个人主页"],
- "admin":false,
- "show":true,
- "develop":true
- },
- {
- "id": 3,
"title": "萌芽Git仓库",
"description": "自部署私有化Git仓库",
"link": "https://repo.shumengya.top",
@@ -34,7 +124,6 @@
"develop":false
},
{
- "id": 4,
"title": "萌芽快传",
"description": "像取快递一样方便的寄送文件",
"link": "https://send.shumengya.top",
@@ -45,7 +134,6 @@
"develop":false
},
{
- "id": 5,
"title": "萌芽图床",
"description": "简单易用的图床,将您的图片转化为一段网页链接",
"link": "https://img.shumengya.top",
@@ -56,96 +144,6 @@
"develop":false
},
{
- "id": 6,
- "title": "萌芽笔记",
- "description": "展示自己学习过程中的一些MarkDown笔记",
- "link": "https://note.shumengya.top",
- "icon": "https://image.shumengya.top/i/2025/11/02/mengyanote.png",
- "tags": [ "笔记","Obsidion"],
- "admin":false,
- "show":true,
- "develop":true
- },
- {
- "id": 7,
- "title": "萌芽作品集",
- "description": "展示个人制作的一些小创意和小项目",
- "link": "https://work.shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/02/69074f8f5ed5e.png",
- "tags": [ "作品集"],
- "admin":false,
- "show":true,
- "develop":true
- },
- {
- "id": 8,
- "title": "万象口袋",
- "description": "一款跨平台的聚合式软件",
- "link": "https://infogenie.shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/02/6907516fb77d5.png",
- "tags": [ "聚合","工具"],
- "admin":false,
- "show":true,
- "develop":true
- },
- {
- "id": 9,
- "title": "萌芽农场",
- "description": "一款2D平台联机农场经营游戏",
- "link": "https://work.shumengya.top/#/work/mengyafarm",
- "icon": "https://img.shumengya.top/i/2025/11/02/6907599cbaf10.png",
- "tags": [ "农场","游戏","联机"],
- "admin":false,
- "show":true,
- "develop":true
- },
-
- {
- "id": 10,
- "title": "1Panel面板",
- "description": "大萌芽1panel面板后台",
- "link": "https://1panel.shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/02/69076213d9200.webp",
- "tags": [ "1Panel","面板"],
- "admin":true,
- "show":true,
- "develop":false
- },
- {
- "id": 11,
- "title": "DPanel面板",
- "description": "大萌芽dpanel面板后台",
- "link": "https://dpanel.shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/02/6907621448bac.png",
- "tags": [ "Docker","面板"],
- "admin":true,
- "show":true,
- "develop":false
- },
- {
- "id": 12,
- "title": "Frps管理后台",
- "description": "成都公网内网穿透服务端",
- "link": "https://frps.shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/02/6907621475130.png",
- "tags": [ "内网穿透","Frp"],
- "admin":true,
- "show":true,
- "develop":false
- },
- {
- "id": 13,
- "title": "Frpc管理后台",
- "description": "大萌芽内网穿透客户端",
- "link": "https://frpc.shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/02/6907621475130.png",
- "tags": [ "内网穿透","Frp"],
- "admin":true,
- "show":true,
- "develop":false
- },
- {
- "id": 13,
"title": "萌芽问卷",
"description": "一个轻量简单的问卷系统",
"link": "https://survey.shumengya.top",
@@ -156,15 +154,153 @@
"develop":false
},
{
- "id": 14,
- "title": "HeadScale管理后台",
- "description": "一个自建tailscale管理后台",
- "link": "https://headscale.shumengya.top",
- "icon": "https://img.shumengya.top/i/2025/11/03/6908327149dce.png",
- "tags": [ "TailScale","HeadScale"],
+ "title": "编程速查表[CF]",
+ "description": "一个编程入门速查表",
+ "link": "https://reference.smyhub.com",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd1159f91.png",
+ "tags": [ "QuickReference","编程速查表"],
+ "admin":false,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "在线思维导图[CF]",
+ "description": "一个思维导图工具",
+ "link": "https://mind-map.smyhub.com",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd1271081.png",
+ "tags": [ "mindmap","思维导图"],
+ "admin":false,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "it-tools工具集[CF]",
+ "description": "一个轻量简单的编程工具集合",
+ "link": "https://it-tools.smyhub.com",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd1229dc3.png",
+ "tags": [ "it-tools","工具集合"],
+ "admin":false,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "xtools工具集[CF]",
+ "description": "一个轻量简单的编程工具集合",
+ "link": "https://xtools.smyhub.com",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd133e934.png",
+ "tags": [ "xtool","工具集合"],
+ "admin":false,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "萌芽备忘录",
+ "description": "一个轻量简单的备忘录系统",
+ "link": "https://memos.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2026/01/13/69663c9f1acc1.png",
+ "tags": [ "memos","备忘录"],
+ "admin":false,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "网页魔方[CF]",
+ "description": "就是一个简单的网页魔方",
+ "link": "https://cube.smyhub.com",
+ "icon": "https://img.shumengya.top/i/2026/01/14/69678bf409a31.webp",
+ "tags": [ "web-cube","网页魔方"],
+ "admin":false,
+ "show":true,
+ "develop":false
+ },
+
+
+
+
+
+
+
+
+ {
+ "title": "大萌芽1Panel面板[WG]",
+ "description": "大萌芽1panel面板后台",
+ "link": "http://10.0.0.233:19132/smy",
+ "icon": "https://img.shumengya.top/i/2025/11/02/69076213d9200.webp",
+ "tags": [ "1Panel","面板"],
+ "admin":true,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "小萌芽1Panel面板[WG]",
+ "description": "小萌芽1panel面板后台",
+ "link": "http://10.0.0.100:19132/smy",
+ "icon": "https://img.shumengya.top/i/2025/11/02/69076213d9200.webp",
+ "tags": [ "1Panel","面板"],
+ "admin":true,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "easytier面板",
+ "description": "阿里云成都easytier面板后台",
+ "link": "https://easytier.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd1307fdc.png",
+ "tags": [ "easytier","面板"],
+ "admin":true,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "WireGuard面板[等待复活]",
+ "description": "阿里云成都WireGuard面板后台",
+ "link": "https://wireguard.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd12baa3c.png",
+ "tags": [ "WireGuard","面板"],
+ "admin":true,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "大萌芽Portainer面板[WG]",
+ "description": "大萌芽Portainer面板后台",
+ "link": "http://10.0.0.233:8484",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd119f8d1.png",
+ "tags": [ "Portainer","面板"],
+ "admin":true,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "小萌芽Portainer面板[WG]",
+ "description": "小萌芽Portainer面板后台",
+ "link": "https://10.0.0.100:8484",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964fd119f8d1.png",
+ "tags": [ "Portainer","面板"],
+ "admin":true,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "萌芽Docker镜像仓库[等待复活]",
+ "description": "萌芽Docker镜像仓库后台",
+ "link": "https://repo.docker.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2025/11/02/6907621448bac.png",
+ "tags": [ "Docker","镜像仓库"],
+ "admin":true,
+ "show":true,
+ "develop":false
+ },
+ {
+ "title": "萌芽通知",
+ "description": "萌芽通知后台",
+ "link": "https://notice.shumengya.top",
+ "icon": "https://img.shumengya.top/i/2026/01/12/6964ff8787011.png",
+ "tags": [ "通知","gotify"],
"admin":true,
"show":true,
"develop":false
}
+
]
}
diff --git a/mengyaprofile-backend/data/techstack.json b/mengyaprofile-backend/data/techstack.json
index 869c421..8a79b66 100644
--- a/mengyaprofile-backend/data/techstack.json
+++ b/mengyaprofile-backend/data/techstack.json
@@ -2,114 +2,193 @@
"title": "技术栈",
"items": [
{
- "name": "Python",
- "icon": "https://img.shields.io/badge/-Python-3776AB?style=flat&logo=python&logoColor=white",
- "link": "https://www.python.org/"
- },
- {
- "name": "JavaScript",
- "icon": "https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black",
- "link": "https://developer.mozilla.org/en-US/docs/Web/JavaScript"
- },
- {
- "name": "Java",
- "icon": "https://img.shields.io/badge/-Java-007396?style=flat&logo=java&logoColor=white",
- "link": "https://www.oracle.com/java/"
+ "name": "Android",
+ "link": "https://developer.android.com/",
+ "svg": "android.svg",
+ "color": "#3DDC84",
+ "show": false
},
{
"name": "C#",
- "icon": "https://img.shields.io/badge/-C%23-512BD4?style=flat&logo=csharp&logoColor=white",
- "link": "https://learn.microsoft.com/en-us/dotnet/csharp/"
- },
- {
- "name": "Golang",
- "icon": "https://img.shields.io/badge/-Golang-00ADD8?style=flat&logo=go&logoColor=white",
- "link": "https://go.dev/"
- },
- {
- "name": "React",
- "icon": "https://img.shields.io/badge/-React-20232A?style=flat&logo=react&logoColor=61DAFB",
- "link": "https://react.dev/"
- },
- {
- "name": "Node.js",
- "icon": "https://img.shields.io/badge/-Node.js-339933?style=flat&logo=nodedotjs&logoColor=white",
- "link": "https://nodejs.org/"
+ "link": "https://learn.microsoft.com/en-us/dotnet/csharp/",
+ "svg": "csharp.svg",
+ "color": "#68217A",
+ "show": true
},
{
"name": "Docker",
- "icon": "https://img.shields.io/badge/-Docker-2496ED?style=flat&logo=docker&logoColor=white",
- "link": "https://www.docker.com/"
- },
- {
- "name": "Linux",
- "icon": "https://img.shields.io/badge/-Linux-000000?style=flat&logo=linux&logoColor=white",
- "link": "https://www.linux.org/"
- },
- {
- "name": "Git",
- "icon": "https://img.shields.io/badge/-Git-F05032?style=flat&logo=git&logoColor=white",
- "link": "https://git-scm.com/"
+ "link": "https://www.docker.com/",
+ "svg": "docker.svg",
+ "color": "#2496ED",
+ "show": true
},
{
"name": "Flask",
- "icon": "https://img.shields.io/badge/-Flask-000000?style=flat&logo=flask&logoColor=white",
- "link": "https://flask.palletsprojects.com/"
- },
- {
- "name": "MongoDB",
- "icon": "https://img.shields.io/badge/-MongoDB-47A248?style=flat&logo=mongodb&logoColor=white",
- "link": "https://www.mongodb.com/"
- },
- {
- "name": "PostgreSQL",
- "icon": "https://img.shields.io/badge/-PostgreSQL-4169E1?style=flat&logo=postgresql&logoColor=white",
- "link": "https://www.postgresql.org/"
- },
- {
- "name": "MySQL",
- "icon": "https://img.shields.io/badge/-MySQL-00758F?style=flat&logo=mysql&logoColor=white",
- "link": "https://www.mysql.com/"
- },
- {
- "name": "Redis",
- "icon": "https://img.shields.io/badge/-Redis-DC382D?style=flat&logo=redis&logoColor=white",
- "link": "https://redis.io/"
- },
- {
- "name": "Android",
- "icon": "https://img.shields.io/badge/-Android-3DDC84?style=flat&logo=android&logoColor=white",
- "link": "https://developer.android.com/"
+ "link": "https://flask.palletsprojects.com/",
+ "svg": "flask.svg",
+ "color": "#000000",
+ "show": true
},
{
"name": "Flutter",
- "icon": "https://img.shields.io/badge/-Flutter-02569B?style=flat&logo=flutter&logoColor=white",
- "link": "https://flutter.dev/"
+ "link": "https://flutter.dev/",
+ "svg": "flutter.svg",
+ "color": "#02569B",
+ "show": false
+ },
+ {
+ "name": "Gin",
+ "link": "https://gin-gonic.com/",
+ "svg": "gin.svg",
+ "color": "#00ADD8",
+ "show": true
+ },
+ {
+ "name": "Git",
+ "link": "https://git-scm.com/",
+ "svg": "git.svg",
+ "color": "#F05032",
+ "show": true
},
{
"name": "Godot",
- "icon": "https://img.shields.io/badge/-Godot-478CBF?style=flat&logo=godot&logoColor=white",
- "link": "https://godotengine.org/"
+ "link": "https://godotengine.org/",
+ "svg": "godot.svg",
+ "color": "#478CBF",
+ "show": true
},
{
- "name": "Unity",
- "icon": "https://img.shields.io/badge/-Unity-000000?style=flat&logo=unity&logoColor=white",
- "link": "https://unity.com/"
+ "name": "Golang",
+ "link": "https://go.dev/",
+ "svg": "golang.svg",
+ "color": "#00ADD8",
+ "show": true
+ },
+ {
+ "name": "Java",
+ "link": "https://www.oracle.com/java/",
+ "svg": "java.svg",
+ "color": "#ED8B00",
+ "show": true
+ },
+ {
+ "name": "JavaScript",
+ "link": "https://developer.mozilla.org/en-US/docs/Web/JavaScript",
+ "svg": "javascript.svg",
+ "color": "#F7DF1E",
+ "show": false
},
{
"name": "JSON",
- "icon": "https://img.shields.io/badge/-JSON-000000?style=flat&logo=json&logoColor=white",
- "link": "https://www.json.org/"
+ "link": "https://www.json.org/",
+ "svg": "json.svg",
+ "color": "#000000",
+ "show": false
+ },
+ {
+ "name": "Linux",
+ "link": "https://www.linux.org/",
+ "svg": "linux.svg",
+ "color": "#FCC624",
+ "show": true
},
{
"name": "Markdown",
- "icon": "https://img.shields.io/badge/-Markdown-083fa1?style=flat&logo=markdown&logoColor=white",
- "link": "https://daringfireball.net/projects/markdown/"
+ "link": "https://daringfireball.net/projects/markdown/",
+ "svg": "markdown.svg",
+ "color": "#000000",
+ "show": false
},
{
"name": "Minecraft",
- "icon": "https://img.shields.io/badge/-Minecraft-62B34A?style=flat&logo=minecraft&logoColor=white",
- "link": "https://www.minecraft.net/"
+ "link": "https://www.minecraft.net/",
+ "svg": "minecraft.svg",
+ "color": "#62B74A",
+ "show": false
+ },
+ {
+ "name": "MongoDB",
+ "link": "https://www.mongodb.com/",
+ "svg": "mongodb.svg",
+ "color": "#47A248",
+ "show": true
+ },
+ {
+ "name": "MySQL",
+ "link": "https://www.mysql.com/",
+ "svg": "mysql.svg",
+ "color": "#00758F",
+ "show": true
+ },
+ {
+ "name": "Node.js",
+ "link": "https://nodejs.org/",
+ "svg": "nodejs.svg",
+ "color": "#339933",
+ "show": false
+ },
+ {
+ "name": "PostgreSQL",
+ "link": "https://www.postgresql.org/",
+ "svg": "postgres.svg",
+ "color": "#4169E1",
+ "show": true
+ },
+ {
+ "name": "Python",
+ "link": "https://www.python.org/",
+ "svg": "python.svg",
+ "color": "#3776AB",
+ "show": true
+ },
+ {
+ "name": "React",
+ "link": "https://react.dev/",
+ "svg": "react.svg",
+ "color": "#61DAFB",
+ "show": true
+ },
+ {
+ "name": "Redis",
+ "link": "https://redis.io/",
+ "svg": "redis.svg",
+ "color": "#DC382D",
+ "show": true
+ },
+ {
+ "name": "Spring",
+ "link": "https://spring.io/",
+ "svg": "spring.svg",
+ "color": "#6DB33F",
+ "show": true
+ },
+ {
+ "name": "Unity",
+ "link": "https://unity.com/",
+ "svg": "unity.svg",
+ "color": "#FFFFFF",
+ "show": true
+ },
+ {
+ "name": "Vue",
+ "link": "https://vuejs.org/",
+ "svg": "vue.svg",
+ "color": "#4FC08D",
+ "show": false
+ },
+ {
+ "name": "WireGuard",
+ "link": "https://www.wireguard.com/",
+ "svg": "wireguard.svg",
+ "color": "#a10808",
+ "show": true
+ },
+ {
+ "name": "SQLite",
+ "link": "https://sqlite.org",
+ "svg": "sqlite.svg",
+ "color": "#0671c8",
+ "show": true
}
]
}
\ No newline at end of file
diff --git a/mengyaprofile-backend/data/techstack.json.bak b/mengyaprofile-backend/data/技术栈旧版图标.json
similarity index 65%
rename from mengyaprofile-backend/data/techstack.json.bak
rename to mengyaprofile-backend/data/技术栈旧版图标.json
index 77754b5..acd244f 100644
--- a/mengyaprofile-backend/data/techstack.json.bak
+++ b/mengyaprofile-backend/data/技术栈旧版图标.json
@@ -1,120 +1,125 @@
{
"title": "技术栈",
"items": [
+ {
+ "name": "Android",
+ "icon": "https://img.shields.io/badge/-Android-3DDC84?style=flat&logo=android&logoColor=white",
+ "link": "https://developer.android.com/"
+ },
+ {
+ "name": "C#",
+ "icon": "https://img.shields.io/badge/-C%23-512BD4?style=flat&logo=csharp&logoColor=white",
+ "link": "https://learn.microsoft.com/en-us/dotnet/csharp/"
+ },
+ {
+ "name": "Docker",
+ "icon": "https://img.shields.io/badge/-Docker-2496ED?style=flat&logo=docker&logoColor=white",
+ "link": "https://www.docker.com/"
+ },
+ {
+ "name": "Flask",
+ "icon": "https://img.shields.io/badge/-Flask-000000?style=flat&logo=flask&logoColor=white",
+ "link": "https://flask.palletsprojects.com/"
+ },
+ {
+ "name": "Flutter",
+ "icon": "https://img.shields.io/badge/-Flutter-02569B?style=flat&logo=flutter&logoColor=white",
+ "link": "https://flutter.dev/"
+ },
+ {
+ "name": "Gin",
+ "icon": "https://img.shields.io/badge/-Gin-00ADD8?style=flat&logo=go&logoColor=white",
+ "link": "https://gin-gonic.com/"
+ },
+ {
+ "name": "Git",
+ "icon": "https://img.shields.io/badge/-Git-F05032?style=flat&logo=git&logoColor=white",
+ "link": "https://git-scm.com/"
+ },
+ {
+ "name": "Godot",
+ "icon": "https://img.shields.io/badge/-Godot-478CBF?style=flat&logo=godot&logoColor=white",
+ "link": "https://godotengine.org/"
+ },
+ {
+ "name": "Golang",
+ "icon": "https://img.shields.io/badge/-Golang-00ADD8?style=flat&logo=go&logoColor=white",
+ "link": "https://go.dev/"
+ },
+ {
+ "name": "Java",
+ "icon": "https://img.shields.io/badge/-Java-007396?style=flat&logo=java&logoColor=white",
+ "link": "https://www.oracle.com/java/"
+ },
+ {
+ "name": "JavaScript",
+ "icon": "https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black",
+ "link": "https://developer.mozilla.org/en-US/docs/Web/JavaScript"
+ },
+ {
+ "name": "JSON",
+ "icon": "https://img.shields.io/badge/-JSON-000000?style=flat&logo=json&logoColor=white",
+ "link": "https://www.json.org/"
+ },
+ {
+ "name": "Linux",
+ "icon": "https://img.shields.io/badge/-Linux-000000?style=flat&logo=linux&logoColor=white",
+ "link": "https://www.linux.org/"
+ },
+ {
+ "name": "Markdown",
+ "icon": "https://img.shields.io/badge/-Markdown-083fa1?style=flat&logo=markdown&logoColor=white",
+ "link": "https://daringfireball.net/projects/markdown/"
+ },
+ {
+ "name": "Minecraft",
+ "icon": "https://img.shields.io/badge/-Minecraft-62B34A?style=flat&logo=minecraft&logoColor=white",
+ "link": "https://www.minecraft.net/"
+ },
+ {
+ "name": "MongoDB",
+ "icon": "https://img.shields.io/badge/-MongoDB-47A248?style=flat&logo=mongodb&logoColor=white",
+ "link": "https://www.mongodb.com/"
+ },
+ {
+ "name": "MySQL",
+ "icon": "https://img.shields.io/badge/-MySQL-00758F?style=flat&logo=mysql&logoColor=white",
+ "link": "https://www.mysql.com/"
+ },
+ {
+ "name": "Node.js",
+ "icon": "https://img.shields.io/badge/-Node.js-339933?style=flat&logo=nodedotjs&logoColor=white",
+ "link": "https://nodejs.org/"
+ },
+ {
+ "name": "PostgreSQL",
+ "icon": "https://img.shields.io/badge/-PostgreSQL-4169E1?style=flat&logo=postgresql&logoColor=white",
+ "link": "https://www.postgresql.org/"
+ },
{
"name": "Python",
"icon": "https://img.shields.io/badge/-Python-3776AB?style=flat&logo=python&logoColor=white",
"link": "https://www.python.org/"
},
- {
- "name": "JavaScript",
- "icon": "https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black",
- "link": ""
- },
- {
- "name": "Java",
- "icon": "https://img.shields.io/badge/-Java-007396?style=flat&logo=java&logoColor=white",
- "link": ""
- },
- {
- "name": "C#",
- "icon": "https://img.shields.io/badge/-C%23-512BD4?style=flat&logo=csharp&logoColor=white",
- "link": ""
- },
- {
- "name": "Golang",
- "icon": "https://img.shields.io/badge/-Golang-00ADD8?style=flat&logo=go&logoColor=white",
- "link": ""
- },
-
{
"name": "React",
"icon": "https://img.shields.io/badge/-React-20232A?style=flat&logo=react&logoColor=61DAFB",
- "link": ""
- },
- {
- "name": "Node.js",
- "icon": "https://img.shields.io/badge/-Node.js-339933?style=flat&logo=nodedotjs&logoColor=white",
- "link": ""
- },
- {
- "name": "Docker",
- "icon": "https://img.shields.io/badge/-Docker-2496ED?style=flat&logo=docker&logoColor=white",
- "link": ""
- },
- {
- "name": "Linux",
- "icon": "https://img.shields.io/badge/-Linux-000000?style=flat&logo=linux&logoColor=white",
- "link": ""
- },
- {
- "name": "Git",
- "icon": "https://img.shields.io/badge/-Git-F05032?style=flat&logo=git&logoColor=white",
- "link": ""
- },
- {
- "name": "Flask",
- "icon": "https://img.shields.io/badge/-Flask-000000?style=flat&logo=flask&logoColor=white",
- "link": ""
- },
-
-
- {
- "name": "MongoDB",
- "icon": "https://img.shields.io/badge/-MongoDB-47A248?style=flat&logo=mongodb&logoColor=white",
- "link": ""
- },
- {
- "name": "PostgreSQL",
- "icon": "https://img.shields.io/badge/-PostgreSQL-4169E1?style=flat&logo=postgresql&logoColor=white",
- "link": ""
- },
- {
- "name": "MySQL",
- "icon": "https://img.shields.io/badge/-MySQL-00758F?style=flat&logo=mysql&logoColor=white",
- "link": ""
+ "link": "https://react.dev/"
},
{
"name": "Redis",
"icon": "https://img.shields.io/badge/-Redis-DC382D?style=flat&logo=redis&logoColor=white",
- "link": ""
+ "link": "https://redis.io/"
},
{
- "name": "Android",
- "icon": "https://img.shields.io/badge/-Android-3DDC84?style=flat&logo=android&logoColor=white",
- "link": ""
- },
- {
- "name": "Flutter",
- "icon": "https://img.shields.io/badge/-Flutter-02569B?style=flat&logo=flutter&logoColor=white",
- "link": ""
- },
- {
- "name": "Godot",
- "icon": "https://img.shields.io/badge/-Godot-478CBF?style=flat&logo=godot&logoColor=white",
- "link": ""
+ "name": "Spring",
+ "icon": "https://img.shields.io/badge/-Spring-6DB33F?style=flat&logo=spring&logoColor=white",
+ "link": "https://spring.io/"
},
{
"name": "Unity",
"icon": "https://img.shields.io/badge/-Unity-000000?style=flat&logo=unity&logoColor=white",
- "link": ""
- },
-
- {
- "name": "JSON",
- "icon": "https://img.shields.io/badge/-JSON-000000?style=flat&logo=json&logoColor=white",
- "link": ""
- },
- {
- "name": "Markdown",
- "icon": "https://img.shields.io/badge/-Markdown-083fa1?style=flat&logo=markdown&logoColor=white",
- "link": ""
- },
-
- {
- "name": "Minecraft",
- "icon": "https://img.shields.io/badge/-Minecraft-62B34A?style=flat&logo=minecraft&logoColor=white",
- "link": ""
+ "link": "https://unity.com/"
}
]
}