diff --git a/.gitignore b/.gitignore
index 088380b..590eab1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,3 +40,5 @@ target_wrapper.*
 CMakeLists.txt.user*
 .idea
 build
+Frontend/node_modules
+Frontend/package-lock.json
diff --git a/Frontend/index.jsx b/Frontend/index.jsx
new file mode 100644
index 0000000..308a675
--- /dev/null
+++ b/Frontend/index.jsx
@@ -0,0 +1,6 @@
+import React from "react";
+import { createRoot } from 'react-dom/client';
+import App from "./src/App.jsx"
+
+const root = createRoot(document.getElementById('root'));
+root.render(<App />);
\ No newline at end of file
diff --git a/Frontend/package.json b/Frontend/package.json
new file mode 100644
index 0000000..a8eb219
--- /dev/null
+++ b/Frontend/package.json
@@ -0,0 +1,27 @@
+{
+  "name": "frontend",
+  "version": "1.0.0",
+  "main": "index.js",
+  "scripts": {
+    "start": "webpack-dev-server .",
+    "build": "webpack .",
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "amass",
+  "license": "ISC",
+  "description": "",
+  "dependencies": {
+    "@babel/cli": "^7.26.4",
+    "@babel/core": "^7.26.10",
+    "@babel/plugin-transform-runtime": "^7.26.10",
+    "@babel/preset-env": "^7.26.9",
+    "@babel/preset-react": "^7.26.3",
+    "@babel/runtime": "^7.26.10",
+    "babel-loader": "^10.0.0",
+    "react": "^18.3.1",
+    "react-dom": "^18.3.1",
+    "webpack": "^5.98.0",
+    "webpack-cli": "^6.0.1",
+    "webpack-dev-server": "^5.2.0"
+  }
+}
\ No newline at end of file
diff --git a/Frontend/public/index.html b/Frontend/public/index.html
new file mode 100644
index 0000000..16cad49
--- /dev/null
+++ b/Frontend/public/index.html
@@ -0,0 +1,4 @@
+<body>
+    <div id="root"></div>
+</body>
+<script src="/main.js"></script>
\ No newline at end of file
diff --git a/Frontend/src/App.jsx b/Frontend/src/App.jsx
new file mode 100644
index 0000000..eff294f
--- /dev/null
+++ b/Frontend/src/App.jsx
@@ -0,0 +1,9 @@
+import React from "react";
+
+export default function App() {
+    return (
+        <h1>
+            从 Webpack 和 Babel 开始搭建 React 项目
+        </h1>
+    )
+}
\ No newline at end of file
diff --git a/Frontend/webpack.config.js b/Frontend/webpack.config.js
new file mode 100644
index 0000000..000404d
--- /dev/null
+++ b/Frontend/webpack.config.js
@@ -0,0 +1,36 @@
+const path = require("path");
+
+module.exports = {
+    mode: "development", // or "production",
+    entry: "./index.jsx",
+    output: {
+        path: path.resolve(__dirname, "public"),
+        filename: "main.js"
+    },
+    target: "web",
+    devServer: {
+        static: {
+            directory: path.join(__dirname, 'public'),
+        },
+        host: "127.0.0.1",
+        port: "9000",
+        open: true,
+        hot: true,
+        liveReload: true
+    },
+    resolve: {
+        extensions: ['.js', '.jsx', '.json']
+    },
+    module: {
+        rules: [
+            {
+                test: /\.(js|jsx)$/,
+                exclude: /node_modules/,
+                loader: 'babel-loader',
+                options: {
+                    presets: ["@babel/preset-react"]
+                }
+            }
+        ]
+    }
+}
\ No newline at end of file