diff --git a/src/App.js b/src/App.js
index 50fb6da..ce08b7b 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,23 +1,19 @@
-import Navbar from './components/Navbar'; 
-import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
-import AuthPage from './pages/AuthPage';
+import { Route, Switch } from 'wouter'; // Import from wouter
+import AuthPage from './pages/AuthPage/AuthPage';
 import HomePage from './pages/HomePage';
-import ForumPage from './pages/ForumPage';
+import MainPage from './pages/MainPage/MainPage';
 import { UserProvider } from './context/UserContext';
 
 function App() {
   return (
     <UserProvider>
-      <Router>
-        <Navbar /> 
-        <Routes>
-          <Route path="/" element={<HomePage />} />
-          <Route path="/auth" element={<AuthPage />} />
-          <Route path="/forum" element={<ForumPage />} />
-        </Routes>
-      </Router>
+      <Switch>
+        <Route path="/" component={HomePage} />
+        <Route path="/auth" component={AuthPage} />
+        <Route path="/main-page" component={MainPage} />
+      </Switch>
     </UserProvider>
   );
 }
 
-export default App;
\ No newline at end of file
+export default App;
diff --git a/src/App.test.js.text b/src/App.test.js.text
new file mode 100644
index 0000000..178656c
--- /dev/null
+++ b/src/App.test.js.text
@@ -0,0 +1,13 @@
+import { render, screen } from '@testing-library/react';
+import { Router } from 'wouter'; // Use Router from wouter
+import App from './App';
+
+test('renders learn react link', () => {
+  render(
+    <Router>
+      <App />
+    </Router>
+  );
+  const linkElement = screen.getByText(/learn react/i);
+  expect(linkElement).toBeInTheDocument();
+});
diff --git a/src/App.test.js.txt b/src/App.test.js.txt
deleted file mode 100644
index 0e79337..0000000
--- a/src/App.test.js.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// import { render, screen } from '@testing-library/react';
-// import { BrowserRouter } from 'react-router-dom';
-// import App from './App';
-
-
-// test('renders learn react link', () => {
-//   render(
-//     <BrowserRouter>
-//       <App />
-//     </BrowserRouter>
-//   );
-//   const linkElement = screen.getByText(/learn react/i);
-//   expect(linkElement).toBeInTheDocument();
-// });
diff --git a/src/components/Auth/Login.jsx b/src/components/Auth/Login.jsx
index e7495b5..2f43619 100644
--- a/src/components/Auth/Login.jsx
+++ b/src/components/Auth/Login.jsx
@@ -1,5 +1,5 @@
 import React, { useState } from 'react';
-import './Auth.css';
+import '../../pages/AuthPage/AuthPage.css';
 import image from './logo.svg'; // 引入图片
 const Login = ({ onRegisterClick }) => {
   const [formData, setFormData] = useState({
diff --git a/src/components/Auth/Register.jsx b/src/components/Auth/Register.jsx
index 417864f..de32cc2 100644
--- a/src/components/Auth/Register.jsx
+++ b/src/components/Auth/Register.jsx
@@ -1,5 +1,5 @@
 import React, { useState } from 'react';
-import './Auth.css';
+import '../../pages/AuthPage/AuthPage.css';
 import image from './logo.svg'; // 引入图片
 
 const Register = ({ onLoginClick }) => {
diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx
index eed15ec..6986206 100644
--- a/src/components/Navbar.jsx
+++ b/src/components/Navbar.jsx
@@ -1,30 +1,29 @@
-import React from 'react';
-import { useUser } from '../context/UserContext';
-import { Link } from 'react-router-dom';
+// import React from 'react';
+// import { Link } from 'wouter'; // Use wouter's Link component
 
-const Navbar = () => {
-  const { user, logout } = useUser();
+// const Navbar = () => {
+//   const { user, logout } = useUser();
 
-  return (
-    <nav className="navbar">
-      <div className="logo">EchoTorrent</div>
-      <div className="nav-links">
-        {user ? (
-          <>
-            <Link to="/">主页</Link>
-            <Link to="/profile">个人中心</Link>
-            <Link to="/forum">论坛</Link>
-            <button onClick={logout}>退出登录</button>
-          </>
-        ) : (
-          <>
-            <Link to="/auth">登录/注册</Link>
-            <Link to="/forum">论坛</Link>
-          </>
-        )}
-      </div>
-    </nav>
-  );
-};
+//   return (
+//     <nav className="navbar">
+//       <div className="logo">EchoTorrent</div>
+//       <div className="nav-links">
+//         {user ? (
+//           <>
+//             <Link to="/">主页</Link>
+//             <Link to="/profile">个人中心</Link>
+//             <Link to="/forum">论坛</Link>
+//             <button onClick={logout}>退出登录</button>
+//           </>
+//         ) : (
+//           <>
+//             <Link to="/auth">登录/注册</Link>
+//             <Link to="/forum">论坛</Link>
+//           </>
+//         )}
+//       </div>
+//     </nav>
+//   );
+// };
 
-export default Navbar;
\ No newline at end of file
+// export default Navbar;
diff --git a/src/logo.svg b/src/logo.svg
index 38d62ff..7772be2 100644
--- a/src/logo.svg
+++ b/src/logo.svg
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 <svg width="81" height="81" viewBox="0 0 81 81" fill="none" xmlns="http://www.w3.org/2000/svg">
 <path d="M40.5 6.74951V74.2496" stroke="#FBF2E3" stroke-width="4" stroke-linecap="round"/>
 <path d="M57.375 20.2498V60.7498" stroke="#FBF2E3" stroke-width="4" stroke-linecap="round"/>
@@ -22,3 +23,6 @@
 </clipPath>
 </defs>
 </svg>
+=======
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
+>>>>>>> d820d18 (- 初始化项目)
diff --git a/src/components/Auth/Auth.css b/src/pages/AuthPage/AuthPage.css
similarity index 100%
rename from src/components/Auth/Auth.css
rename to src/pages/AuthPage/AuthPage.css
diff --git a/src/pages/AuthPage.jsx b/src/pages/AuthPage/AuthPage.jsx
similarity index 77%
rename from src/pages/AuthPage.jsx
rename to src/pages/AuthPage/AuthPage.jsx
index e5effe1..4238214 100644
--- a/src/pages/AuthPage.jsx
+++ b/src/pages/AuthPage/AuthPage.jsx
@@ -1,6 +1,6 @@
 import React, { useState } from 'react';
-import Login from '../components/Auth/Login';
-import Register from '../components/Auth/Register';
+import Login from '../../components/Auth/Login';
+import Register from '../../components/Auth/Register';
 
 const AuthPage = () => {
   const [isRegister, setIsRegister] = useState(false);
diff --git a/src/pages/AuthPage.test.jsx b/src/pages/AuthPage/AuthPage.test.jsx
similarity index 100%
rename from src/pages/AuthPage.test.jsx
rename to src/pages/AuthPage/AuthPage.test.jsx
diff --git a/src/pages/MainPage/MainPage.css b/src/pages/MainPage/MainPage.css
new file mode 100644
index 0000000..60f2956
--- /dev/null
+++ b/src/pages/MainPage/MainPage.css
@@ -0,0 +1,88 @@
+.main-page {
+    background-color: #5c3f31;
+    color: white;
+  }
+  .header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 10px;
+  }
+  .logo-and-name {
+    display: flex;
+    align-items: center;
+  }
+  .logo {
+    height: 30px;
+    margin-right: 10px;
+  }
+  .site-name {
+    font-size: 24px;
+  }
+  .user-and-message {
+    display: flex;
+    align-items: center;
+  }
+  .user-avatar {
+    height: 40px;
+    margin-right: 10px;
+  }
+  .message-center {
+    font-size: 16px;
+  }
+  .nav {
+    background-color: #b38867;
+    display: flex;
+    justify-content: center;
+  }
+  .nav-item {
+    color: white;
+    text-decoration: none;
+    padding: 10px 20px;
+  }
+  .active {
+    background-color: #996633;
+  }
+  .content {
+    padding: 20px;
+  }
+  .user-post {
+    border-bottom: 1px solid white;
+    margin-bottom: 20px;
+    padding-bottom: 20px;
+  }
+  .user-info {
+    display: flex;
+    align-items: center;
+    margin-bottom: 10px;
+  }
+  .user-avatar-small {
+    height: 30px;
+    margin-right: 10px;
+  }
+  .username {
+    font-size: 16px;
+  }
+  .post-content {
+    margin-bottom: 10px;
+  }
+  .post-actions {
+    display: flex;
+    align-items: center;
+    margin-bottom: 10px;
+  }
+  .like-icon,
+  .comment-icon {
+    margin-right: 5px;
+  }
+  .like-count,
+  .comment-count {
+    margin-left: 5px;
+  }
+  .post-image {
+    float: right;
+    width: 150px;
+    height: 150px;
+    background-color: #ddd;
+    margin-left: 10px;
+  }
\ No newline at end of file
diff --git a/src/pages/MainPage/MainPage.jsx b/src/pages/MainPage/MainPage.jsx
new file mode 100644
index 0000000..1dad401
--- /dev/null
+++ b/src/pages/MainPage/MainPage.jsx
@@ -0,0 +1,55 @@
+import React from 'react';
+import './MainPage.css'; // 可创建对应样式文件来完善样式
+import { Link } from 'wouter'; // Use wouter's Link component
+// import '@icon-park/react/styles/index.css';
+// import { GoodTwo, Comment } from '@icon-park/react'; 
+
+const MainPage = () => {
+  return (
+    <div className="main-page">
+      {/* 顶部栏 */}
+      <header className="header">
+        {/* 左侧logo和网站名称 */}
+        <div className="logo-and-name">
+          <img src="logo.png" alt="网站logo" className="logo" />
+          <span className="site-name">Echo</span>
+        </div>
+        {/* 右侧用户头像和消息中心 */}
+        <div className="user-and-message">
+          <img src="user-avatar.png" alt="用户头像" className="user-avatar" />
+          <span className="message-center">消息</span>
+        </div>
+      </header>
+      {/* 导航栏 */}
+      <nav className="nav">
+        <Link to="/friend-moments" className="nav-item active">好友动态</Link>
+        <Link to="/forum" className="nav-item">论坛</Link>
+        <Link to="/interest-groups" className="nav-item">兴趣小组</Link>
+        <Link to="/seed-list" className="nav-item">种子列表</Link>
+        <Link to="/publish-seed" className="nav-item">发布种子</Link>
+      </nav>
+      {/* 好友动态内容区域 */}
+      <div className="content">
+        {/* 用户动态示例，可从后端获取数据循环展示 */}
+        <div className="user-post">
+          <div className="user-info">
+            <img src="user1-avatar.png" alt="用户头像" className="user-avatar-small" />
+            <span className="username">user1</span>
+          </div>
+          <div className="post-content">
+            <p>动态内容...</p>
+          </div>
+          <div className="post-actions">
+            {/* <GoodTwo theme="outline" size="24" fill="#fff" /> */}
+            <span className="like-count">21</span>
+            {/* <Comment theme="outline" size="24" fill="#fff"/> */}
+            <span className="comment-count">2</span>
+          </div>
+          <img src="image1.png" alt="动态图片" className="post-image" />
+        </div>
+      </div>
+    </div>
+  );
+};
+
+export default MainPage;
diff --git a/src/pages/MainPage/MainPage.test.js b/src/pages/MainPage/MainPage.test.js
new file mode 100644
index 0000000..651f9c6
--- /dev/null
+++ b/src/pages/MainPage/MainPage.test.js
@@ -0,0 +1,42 @@
+import { render, screen } from '@testing-library/react';
+import { Router } from 'wouter'; // 使用 wouter 的 Router
+import MainPage from './MainPage'; // 导入 MainPage 组件
+
+test('renders MainPage with logo, navigation links, and user post', () => {
+  render(
+    <Router>
+      <MainPage />
+    </Router>
+  );
+
+  // 检查页面中是否有 Echo 站点名称
+  const siteNameElement = screen.getByText(/Echo/i);
+  expect(siteNameElement).toBeInTheDocument();
+
+  // 检查页面中是否有导航栏中的链接
+  const friendMomentsLink = screen.getByText(/好友动态/i);
+  const forumLink = screen.getByText(/论坛/i);
+  const interestGroupsLink = screen.getByText(/兴趣小组/i);
+  const seedListLink = screen.getByText(/种子列表/i);
+  const publishSeedLink = screen.getByText(/发布种子/i);
+
+  expect(friendMomentsLink).toBeInTheDocument();
+  expect(forumLink).toBeInTheDocument();
+  expect(interestGroupsLink).toBeInTheDocument();
+  expect(seedListLink).toBeInTheDocument();
+  expect(publishSeedLink).toBeInTheDocument();
+
+  // 检查页面中是否有用户动态信息
+  const usernameElement = screen.getByText(/user1/i);
+  expect(usernameElement).toBeInTheDocument();
+
+  const postContentElement = screen.getByText(/动态内容.../i);
+  expect(postContentElement).toBeInTheDocument();
+
+  // 使用更精确的查询来获取喜欢数和评论数
+  const likeCountElement = screen.getByText('21');
+  const commentCountElement = screen.getByText('2');
+
+  expect(likeCountElement).toBeInTheDocument();
+  expect(commentCountElement).toBeInTheDocument();
+});
