diff --git a/src/pages/AuthPage/AuthPage.css b/src/pages/AuthPage/AuthPage.css
new file mode 100644
index 0000000..5073ce3
--- /dev/null
+++ b/src/pages/AuthPage/AuthPage.css
@@ -0,0 +1,96 @@
+.auth-container {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end; /* 使卡片靠右 */
+  min-height: 100vh;
+  font-family: Arial, sans-serif;
+  background-color: #5F4437; /* 设置背景颜色 */
+  padding: 0 2rem; /* 添加左右内边距 */
+}
+
+.auth-container img {
+  margin-left: 250px; 
+}
+
+.auth-form-section {
+  background: #E4D8C9; /* 米白色 */
+  padding: 2rem;
+  border-radius: 10px;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+  width: 300px;
+  margin: 0 auto;
+  max-width: 400px; /* 限制卡片最大宽度 */
+}
+
+.form-group {
+  margin-bottom: 1.2rem;
+  display: flex;
+  flex-direction: column;
+}
+
+label {
+  display: block;
+  font-size: 0.9rem;
+  margin-bottom: 0.5rem;
+  color: #4A3B34; /* 棕色 */
+}
+
+.form-input {
+  width: 100%;
+  padding: 0.8rem;
+  border: 1px solid #ddd;
+  border-radius: 5px;
+  font-size: 0.9rem;
+  box-sizing: border-box;
+}
+
+.auth-button {
+  padding: 0.8rem 8.4rem;
+  background: #BA929A; /* 粉色 */
+  color: #4A3B34; /* 棕色 */
+  border: none;
+  border-radius: 5px;
+  cursor: pointer;
+  font-size: 0.9rem;
+  display: inline-block;
+}
+
+.verify-button {
+  padding: 0.5rem 1rem; /* 更小的内边距 */
+  background: #BA929A; /* 粉色 */
+  color: #4A3B34; /* 棕色 */
+  border: none;
+  border-radius: 5px;
+  cursor: pointer;
+  font-size: 0.8rem; /* 更小的字体 */
+  display: inline-block;
+}
+
+.link-button {
+  background: none;
+  border: none;
+  color: #4A3B34; /* 棕色 */
+  /* text-decoration: underline; */
+  cursor: pointer;
+  font-size: 0.8rem;
+  padding: 0;
+}
+
+.forgot-password {
+  position: absolute;
+  right: 10px; /* 让按钮靠右 */
+  bottom: 5px; /* 调整到底部 */
+  font-size: 12px;
+  background: none;
+  border: none;
+  color: #4A3B34; /* 颜色与 "点击注册" 一致 */
+  cursor: pointer;
+  text-decoration: underline;
+}
+
+
+.register-link, .login-link {
+  text-align: center;
+  font-size: 0.8rem;
+  margin-top: 1rem;
+}
\ No newline at end of file
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();
+});
