diff --git a/.cspell.json b/.cspell.json
new file mode 100644
index 0000000..e69de29
diff --git a/.gitignore b/.gitignore
index 6e52ada..19d55a2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,6 @@ pnpm-debug.log*
# macOS-specific files
.DS_Store
+
+# Playwright MCP artifacts
+.playwright-mcp/
diff --git a/.playwright-mcp/console-2026-03-16T04-19-54-407Z.log b/.playwright-mcp/console-2026-03-16T04-19-54-407Z.log
new file mode 100644
index 0000000..320acb6
--- /dev/null
+++ b/.playwright-mcp/console-2026-03-16T04-19-54-407Z.log
@@ -0,0 +1 @@
+[ 89ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:5173/favicon.ico:0
diff --git a/.playwright-mcp/console-2026-03-16T04-20-14-905Z.log b/.playwright-mcp/console-2026-03-16T04-20-14-905Z.log
new file mode 100644
index 0000000..df771d1
--- /dev/null
+++ b/.playwright-mcp/console-2026-03-16T04-20-14-905Z.log
@@ -0,0 +1 @@
+[ 379ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:5175/favicon.ico:0
diff --git a/.playwright-mcp/console-2026-03-16T04-24-12-088Z.log b/.playwright-mcp/console-2026-03-16T04-24-12-088Z.log
new file mode 100644
index 0000000..30583c8
--- /dev/null
+++ b/.playwright-mcp/console-2026-03-16T04-24-12-088Z.log
@@ -0,0 +1,3 @@
+[ 81912ms] [ERROR] %cAstro background: linear-gradient(66.77deg, #D83333 0%, #F041FF 100%); color: white; padding-inline: 4px; border-radius: 2px; font-family: monospace; Error while running audit's match function: TypeError: Failed to fetch @ http://localhost:4322/node_modules/.pnpm/astro@5.16.0_@types+node@24.10.1_jiti@2.4.2_rollup@4.53.3_typescript@5.8.3_yaml@2.8.0/node_modules/astro/dist/runtime/client/dev-toolbar/settings.js?v=e30bd504:17
+[ 699585ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:4322/:0
+[ 699609ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:4322/favicon.ico:0
diff --git a/.playwright-mcp/page-2026-03-16T03-49-12-135Z.png b/.playwright-mcp/page-2026-03-16T03-49-12-135Z.png
new file mode 100644
index 0000000..0110a29
Binary files /dev/null and b/.playwright-mcp/page-2026-03-16T03-49-12-135Z.png differ
diff --git a/.playwright-mcp/page-2026-03-16T03-49-31-833Z.png b/.playwright-mcp/page-2026-03-16T03-49-31-833Z.png
new file mode 100644
index 0000000..edad987
Binary files /dev/null and b/.playwright-mcp/page-2026-03-16T03-49-31-833Z.png differ
diff --git a/.playwright-mcp/page-2026-03-16T03-50-39-014Z.png b/.playwright-mcp/page-2026-03-16T03-50-39-014Z.png
new file mode 100644
index 0000000..7a026aa
Binary files /dev/null and b/.playwright-mcp/page-2026-03-16T03-50-39-014Z.png differ
diff --git a/.playwright-mcp/page-2026-03-16T04-09-20-116Z.png b/.playwright-mcp/page-2026-03-16T04-09-20-116Z.png
new file mode 100644
index 0000000..f7f7d99
Binary files /dev/null and b/.playwright-mcp/page-2026-03-16T04-09-20-116Z.png differ
diff --git a/cspell.json b/cspell.json
index efe88c3..aa4c982 100644
--- a/cspell.json
+++ b/cspell.json
@@ -25,6 +25,23 @@
"ical",
"ICAL",
"vevents",
- "getAllSubcomponents"
+ "getAllSubcomponents",
+ "fullimg",
+ "imgcard",
+ "NWDC",
+ "WWDC",
+ "wechat",
+ "tcqhxia",
+ "Pulumi",
+ "Supabase",
+ "Pocketbase",
+ "pocketbase",
+ "BaaS",
+ "IaC",
+ "nwdc",
+ "lec",
+ "nbtca",
+ "wordmark",
+ "Ningbo"
]
}
\ No newline at end of file
diff --git a/public/favicon.svg b/public/favicon.svg
index 0f39062..12cec1a 100644
--- a/public/favicon.svg
+++ b/public/favicon.svg
@@ -1,13 +1 @@
-
+
\ No newline at end of file
diff --git a/public/static/images/about/hero.jpg b/public/static/images/about/hero.jpg
new file mode 100644
index 0000000..9c472fe
Binary files /dev/null and b/public/static/images/about/hero.jpg differ
diff --git a/public/static/images/about/mission.jpg b/public/static/images/about/mission.jpg
new file mode 100644
index 0000000..00dc480
Binary files /dev/null and b/public/static/images/about/mission.jpg differ
diff --git a/public/static/images/homepage/events.jpg b/public/static/images/homepage/events.jpg
new file mode 100644
index 0000000..900d018
Binary files /dev/null and b/public/static/images/homepage/events.jpg differ
diff --git a/public/static/images/homepage/gallery-1.jpg b/public/static/images/homepage/gallery-1.jpg
new file mode 100644
index 0000000..92c824b
Binary files /dev/null and b/public/static/images/homepage/gallery-1.jpg differ
diff --git a/public/static/images/homepage/gallery-2.jpg b/public/static/images/homepage/gallery-2.jpg
new file mode 100644
index 0000000..f4f64f4
Binary files /dev/null and b/public/static/images/homepage/gallery-2.jpg differ
diff --git a/public/static/images/homepage/gallery-3.jpg b/public/static/images/homepage/gallery-3.jpg
new file mode 100644
index 0000000..6e5bc3b
Binary files /dev/null and b/public/static/images/homepage/gallery-3.jpg differ
diff --git a/public/static/images/homepage/gallery-4.jpg b/public/static/images/homepage/gallery-4.jpg
new file mode 100644
index 0000000..251ae00
Binary files /dev/null and b/public/static/images/homepage/gallery-4.jpg differ
diff --git a/public/static/images/homepage/gallery-5.jpg b/public/static/images/homepage/gallery-5.jpg
new file mode 100644
index 0000000..ea63ed3
Binary files /dev/null and b/public/static/images/homepage/gallery-5.jpg differ
diff --git a/public/static/images/homepage/gallery-6.jpg b/public/static/images/homepage/gallery-6.jpg
new file mode 100644
index 0000000..67cdd49
Binary files /dev/null and b/public/static/images/homepage/gallery-6.jpg differ
diff --git a/public/static/images/homepage/hero.jpg b/public/static/images/homepage/hero.jpg
new file mode 100644
index 0000000..900d018
Binary files /dev/null and b/public/static/images/homepage/hero.jpg differ
diff --git a/public/static/images/homepage/lecture.jpg b/public/static/images/homepage/lecture.jpg
new file mode 100644
index 0000000..1f4ac09
Binary files /dev/null and b/public/static/images/homepage/lecture.jpg differ
diff --git a/public/static/images/homepage/nwdc.jpg b/public/static/images/homepage/nwdc.jpg
new file mode 100644
index 0000000..2e46ceb
Binary files /dev/null and b/public/static/images/homepage/nwdc.jpg differ
diff --git a/public/static/images/homepage/repair.jpg b/public/static/images/homepage/repair.jpg
new file mode 100644
index 0000000..0ab402c
Binary files /dev/null and b/public/static/images/homepage/repair.jpg differ
diff --git a/public/static/images/homepage/repair.png b/public/static/images/homepage/repair.png
new file mode 100644
index 0000000..4aa7958
Binary files /dev/null and b/public/static/images/homepage/repair.png differ
diff --git a/public/static/images/homepage/tech.jpg b/public/static/images/homepage/tech.jpg
new file mode 100644
index 0000000..a55a2b5
Binary files /dev/null and b/public/static/images/homepage/tech.jpg differ
diff --git a/public/static/images/homepage/welcome.jpg b/public/static/images/homepage/welcome.jpg
new file mode 100644
index 0000000..d053481
Binary files /dev/null and b/public/static/images/homepage/welcome.jpg differ
diff --git a/public/static/images/joinus/gallery-1.jpg b/public/static/images/joinus/gallery-1.jpg
new file mode 100644
index 0000000..9c472fe
Binary files /dev/null and b/public/static/images/joinus/gallery-1.jpg differ
diff --git a/public/static/images/joinus/gallery-2.jpg b/public/static/images/joinus/gallery-2.jpg
new file mode 100644
index 0000000..32a6e24
Binary files /dev/null and b/public/static/images/joinus/gallery-2.jpg differ
diff --git a/public/static/images/joinus/gallery-3.jpg b/public/static/images/joinus/gallery-3.jpg
new file mode 100644
index 0000000..f8c90a1
Binary files /dev/null and b/public/static/images/joinus/gallery-3.jpg differ
diff --git a/public/static/images/joinus/gallery-4.jpg b/public/static/images/joinus/gallery-4.jpg
new file mode 100644
index 0000000..9d919b2
Binary files /dev/null and b/public/static/images/joinus/gallery-4.jpg differ
diff --git a/public/static/images/joinus/gallery-5.jpg b/public/static/images/joinus/gallery-5.jpg
new file mode 100644
index 0000000..20e2cd8
Binary files /dev/null and b/public/static/images/joinus/gallery-5.jpg differ
diff --git a/public/static/images/joinus/gallery-6.jpg b/public/static/images/joinus/gallery-6.jpg
new file mode 100644
index 0000000..85eeffa
Binary files /dev/null and b/public/static/images/joinus/gallery-6.jpg differ
diff --git a/public/static/images/lecture/classroom.jpg b/public/static/images/lecture/classroom.jpg
new file mode 100644
index 0000000..2317570
Binary files /dev/null and b/public/static/images/lecture/classroom.jpg differ
diff --git a/public/static/images/lecture/hero.jpg b/public/static/images/lecture/hero.jpg
new file mode 100644
index 0000000..1f4ac09
Binary files /dev/null and b/public/static/images/lecture/hero.jpg differ
diff --git a/public/static/images/lecture/poster-1.png b/public/static/images/lecture/poster-1.png
new file mode 100644
index 0000000..eef2f10
Binary files /dev/null and b/public/static/images/lecture/poster-1.png differ
diff --git a/public/static/images/lecture/speaker.jpg b/public/static/images/lecture/speaker.jpg
new file mode 100644
index 0000000..5f43068
Binary files /dev/null and b/public/static/images/lecture/speaker.jpg differ
diff --git a/public/static/images/nwdc/hero.jpg b/public/static/images/nwdc/hero.jpg
new file mode 100644
index 0000000..bedf37c
Binary files /dev/null and b/public/static/images/nwdc/hero.jpg differ
diff --git a/public/static/images/nwdc/session.jpg b/public/static/images/nwdc/session.jpg
new file mode 100644
index 0000000..d3fe419
Binary files /dev/null and b/public/static/images/nwdc/session.jpg differ
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
index 4b7dc02..615c4fd 100644
--- a/src/components/Footer.astro
+++ b/src/components/Footer.astro
@@ -1,75 +1,163 @@
---
import { SITE_TITLE, SITE_EMAIL } from "../consts"
-const { theme } = Astro.props
-import { SITE_NAME } from "../consts"
-const date = new Date()
-const year = date.getFullYear();
-
+const year = new Date().getFullYear()
---
-