diff --git a/backend/routes/users.js b/backend/routes/users.js
index 8ba75ae120aaa077f0de7ef9ac69672b7023f636..c24a65997d023141ccee367f904e8c4d4fcb5034 100644
--- a/backend/routes/users.js
+++ b/backend/routes/users.js
@@ -487,4 +487,20 @@ router.post("/profile", async function (req, res) {
   }
 });
 
+router.post("/searchBoard", async function (req, res) {
+  console.log("/searchBoard post 요청");
+  console.dir(req.body);
+
+  try {
+    let searched = await BoardModel.find({
+      title: { $regex: req.body.input },
+    });
+    console.log(searched);
+
+    res.send(searched);
+  } catch (err) {
+    console.log(err);
+  }
+});
+
 module.exports = router;
diff --git a/frontend/.eslintcache b/frontend/.eslintcache
index 465b38edd534b8e611e60cc003d3c7a6aded1644..c4de7eb3da7c54189fbd1e322f01ec37789dcd48 100644
--- a/frontend/.eslintcache
+++ b/frontend/.eslintcache
@@ -1 +1 @@
-[{"C:\\WYH\\frontend\\src\\reportWebVitals.js":"1","C:\\WYH\\frontend\\src\\App.js":"2","C:\\WYH\\frontend\\src\\index.js":"3","C:\\WYH\\frontend\\src\\components\\Profile.js":"4","C:\\WYH\\frontend\\src\\components\\Board.js":"5","C:\\WYH\\frontend\\src\\components\\Home.js":"6","C:\\WYH\\frontend\\src\\components\\Signup.js":"7","C:\\WYH\\frontend\\src\\components\\Login.js":"8","C:\\WYH\\frontend\\src\\components\\WriteBoard.js":"9","C:\\WYH\\frontend\\src\\components\\DetailBoard.js":"10","C:\\WYH\\frontend\\src\\components\\WriteProfile.js":"11"},{"size":362,"mtime":1606157613272,"results":"12","hashOfConfig":"13"},{"size":1764,"mtime":1607415610889,"results":"14","hashOfConfig":"13"},{"size":544,"mtime":1606240034288,"results":"15","hashOfConfig":"13"},{"size":2234,"mtime":1607425040281,"results":"16","hashOfConfig":"13"},{"size":1711,"mtime":1607358800912,"results":"17","hashOfConfig":"13"},{"size":370,"mtime":1606662762631,"results":"18","hashOfConfig":"13"},{"size":1575,"mtime":1607345129868,"results":"19","hashOfConfig":"13"},{"size":1232,"mtime":1606662786263,"results":"20","hashOfConfig":"13"},{"size":3419,"mtime":1607104090152,"results":"21","hashOfConfig":"13"},{"size":2593,"mtime":1607425197042,"results":"22","hashOfConfig":"13"},{"size":3396,"mtime":1607369801073,"results":"23","hashOfConfig":"13"},{"filePath":"24","messages":"25","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"10w9ldj",{"filePath":"26","messages":"27","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"31","messages":"32","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33","messages":"34","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"35"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38","messages":"39","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40","messages":"41","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"42"},{"filePath":"43","messages":"44","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"45","usedDeprecatedRules":"30"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"48","messages":"49","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"50"},"C:\\WYH\\frontend\\src\\reportWebVitals.js",[],"C:\\WYH\\frontend\\src\\App.js",["51"],"C:\\WYH\\frontend\\src\\index.js",[],["52","53"],"C:\\WYH\\frontend\\src\\components\\Profile.js",["54","55","56"],"C:\\WYH\\frontend\\src\\components\\Board.js",["57","58"],"import React, { useEffect, useState } from \"react\";\r\nimport { Route, Link } from \"react-router-dom\";\r\nimport axios from \"axios\";\r\n\r\nconst Board = () => {\r\n  const [response, setResponse] = useState([]);\r\n\r\n  useEffect(async () => {\r\n    // try {\r\n    //   console.log(\"axios 실행\");\r\n    //   let res = [];\r\n    //   res = await axios.get(\"http://localhost:3001/board\");\r\n    //   console.log(res);\r\n    //   setResponse(res.data);\r\n    //   console.log(response);\r\n    // } catch (err) {\r\n    //   console.log(\"axios err\");\r\n    //   console.log(err);\r\n    // }\r\n    async function fetchData() {\r\n      console.log(\"react board get axios 호출\");\r\n      const result = await axios.get(\"http://localhost:3001/board\");\r\n      console.log(result.data);\r\n      setResponse(result.data);\r\n    }\r\n    fetchData();\r\n  }, []);\r\n\r\n  return (\r\n    <div>\r\n      <button>\r\n        <Link to=\"/writeBoard\">게시글 작성</Link>\r\n      </button>\r\n      <button>\r\n        <Link to=\"/updateProf\">프로필 작성</Link>\r\n      </button>\r\n      <form action=\"http://localhost:3001/searchBoard\" method=\"post\">\r\n        <input type=\"text\" name=\"searchKeyword\"></input>\r\n        <button type=\"submit\">게시글검색</button>\r\n      </form>\r\n      <ol>\r\n        {response.map((res) => (\r\n          <li key={res._id}>\r\n            {/* <Link to={`/detailBoard/${res._id}`}>\r\n              <div onClick={handleOnClick(res._id)}>\r\n                {res.title} {res.created_at}\r\n              </div>\r\n            </Link> */}\r\n            <Link to={`/detailBoard/${res._id}`}>\r\n              {res.title} {res.created_at}\r\n            </Link>\r\n          </li>\r\n        ))}\r\n      </ol>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default Board;\r\n","C:\\WYH\\frontend\\src\\components\\Home.js",["59"],"C:\\WYH\\frontend\\src\\components\\Signup.js",["60"],"C:\\WYH\\frontend\\src\\components\\Login.js",["61"],"import React, { useState } from \"react\";\r\nimport { post } from \"axios\";\r\n\r\nconst Login = () => {\r\n  const [username, setUsername] = useState(\"\");\r\n  const [password, setPassword] = useState(\"\");\r\n\r\n  const onChangeUsername = (e) => setUsername(e.target.value);\r\n  const onChangePassword = (e) => setPassword(e.target.value);\r\n\r\n  // const handleFormSubmit = () => {\r\n  //   const url = \"/login\";\r\n  //   let formData = new FormData();\r\n  //   formData.append(\"username\", username);\r\n  //   formData.append(\"password\", password);\r\n\r\n  //   let config = {\r\n  //     headers: {\r\n  //       \"content-type\": \"multipart/form-data\",\r\n  //     },\r\n  //   };\r\n\r\n  //   return post(url, formData, config);\r\n  // };\r\n\r\n  return (\r\n    <form action=\"http://localhost:3001/login\" method=\"post\">\r\n      <h1>로그인 화면</h1>\r\n      이메일:\r\n      <input\r\n        type=\"text\"\r\n        name=\"email\"\r\n        value={username}\r\n        onChange={onChangeUsername}\r\n      ></input>\r\n      비밀번호:\r\n      <input\r\n        type=\"password\"\r\n        name=\"password\"\r\n        value={password}\r\n        onChange={onChangePassword}\r\n      ></input>\r\n      <button type=\"submit\">로그인</button>\r\n    </form>\r\n  );\r\n};\r\n\r\nexport default Login;\r\n","C:\\WYH\\frontend\\src\\components\\WriteBoard.js",["62","63","64","65"],"import React, { useState } from \"react\";\r\n\r\nconst WriteBoard = () => {\r\n  const [title, setTitle] = useState(\"\");\r\n  const [content, setContent] = useState(\"\");\r\n  const [hobby, setHobby] = useState(\"\");\r\n\r\n  const onChangeTitle = (e) => setTitle(e.target.value);\r\n  const onChangeContent = (e) => setContent(e.target.value);\r\n  const onChangeHobby = (e) => setHobby(e.target.value);\r\n\r\n  return (\r\n    <div>\r\n      <form\r\n        action=\"http://localhost:3001/writeBoard\"\r\n        method=\"post\"\r\n        encType=\"multipart/form-data\"\r\n      >\r\n        <label>제목</label>\r\n        <input type=\"text\" name=\"title\" onChange={onChangeTitle}></input>\r\n        <br></br>\r\n        <label>본문</label>\r\n        <textarea\r\n          type=\"text\"\r\n          name=\"content\"\r\n          onChange={onChangeContent}\r\n        ></textarea>\r\n        <br></br>\r\n        <label>취미</label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"ex/sp\" name=\"hobby\" />\r\n          운동/스포츠\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"out/tr\" name=\"hobby\" />\r\n          아웃도어/여행\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"bk/wr\" name=\"hobby\" />\r\n          인문학/책/글\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"fg/lg\" name=\"hobby\" />\r\n          외국/언어\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"cul/pfm\" name=\"hobby\" />\r\n          문화/공연\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"mu/inst\" name=\"hobby\" />\r\n          음악/악기\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"cft\" name=\"hobby\" />\r\n          공예/만들기\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"dan\" name=\"hobby\" />\r\n          댄스/무용\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"volu\" name=\"hobby\" />\r\n          봉사활동\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"par\" name=\"hobby\" />\r\n          사교/인맥\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"game\" name=\"hobby\" />\r\n          게임/오락\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"pic\" name=\"hobby\" />\r\n          사진/편집/촬영/영상\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"inv\" name=\"hobby\" />\r\n          제테크/투자\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"cok/fod\" name=\"hobby\" />\r\n          요리/음식/맛집\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"fas/bea\" name=\"hobby\" />\r\n          패션/뷰티/코디\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"art/draw\" name=\"hobby\" />\r\n          미술/그림\r\n        </label>\r\n        <br></br>\r\n        <br></br>\r\n        <label>사진첨부</label>\r\n        <input type=\"file\" name=\"photo\"></input>\r\n        <br></br>\r\n        <button type=\"submit\">ok</button>\r\n      </form>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default WriteBoard;\r\n","C:\\WYH\\frontend\\src\\components\\DetailBoard.js",["66","67","68"],"C:\\WYH\\frontend\\src\\components\\WriteProfile.js",["69","70","71","72","73","74"],"import React, { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nconst WriteProfile = () => {\r\n  const [Profile, setProfile] = useState({\r\n    profile_photo: \"\",\r\n    created_at: \"\",\r\n    self_intro: \"\",\r\n    user_id: \"\",\r\n    user_email: \"\",\r\n    location: \"\",\r\n    age: \"\",\r\n  });\r\n  const [Img, setImg] = useState(\"\");\r\n  const [imgBase64, setImgBase64] = useState(\"\");\r\n  const [imgFile, setImgFile] = useState(null);\r\n\r\n  const handleChangeFile = (event) => {\r\n    let reader = new FileReader();\r\n    reader.onloadend = () => {\r\n      // 2. 읽기가 완료되면 아래코드가 실행됩니다.\r\n      const base64 = reader.result;\r\n      if (base64) {\r\n        setImgBase64(base64.toString()); // 파일 base64 상태 업데이트\r\n      }\r\n    };\r\n    if (event.target.files[0]) {\r\n      reader.readAsDataURL(event.target.files[0]); // 1. 파일을 읽어 버퍼에 저장합니다.\r\n      setImgFile(event.target.files[0]); // 파일 상태 업데이트\r\n    }\r\n  };\r\n\r\n  const onChangeProfilePhoto = (e) =>\r\n    setProfile({ profile_photo: e.target.value });\r\n  const onChangeSelfIntro = (e) => setProfile({ self_intro: e.target.value });\r\n  const onChangeLocation = (e) => setProfile({ location: e.target.value });\r\n  const onChangeAge = (e) => setProfile({ age: e.target.value });\r\n\r\n  useEffect(async () => {\r\n    async function fetchData() {\r\n      console.log(\"writeProfile axios get 호출\");\r\n      let res = await axios.get(\"http://localhost:3001/getProfileInfo\");\r\n      console.log(res);\r\n      console.dir(res.data[0]);\r\n      if (res.data[0] != undefined) {\r\n        setProfile(res.data[0]);\r\n        setImg(\"http://localhost:3001/uploads/\" + res.data[0].profile_photo);\r\n      }\r\n    }\r\n    fetchData();\r\n  }, []);\r\n\r\n  return (\r\n    <div>\r\n      <label>기존 프로필 사진</label>\r\n      <br></br>\r\n      <img src={Img} width=\"200px\" height=\"200px\"></img>\r\n      <br></br>\r\n      <label>선택한 프로필 사진</label>\r\n      <br></br>\r\n      {/* <div\r\n        style={{ backgroundColor: \"#efefef\", width: \"200px\", height: \"200px\" }}\r\n      > */}\r\n      <img src={imgBase64} width=\"200px\" height=\"200px\" />\r\n      {/* </div> */}\r\n      <form\r\n        method=\"post\"\r\n        action=\"http://localhost:3001/writeProfile\"\r\n        encType=\"multipart/form-data\"\r\n      >\r\n        <label>프로필 사진</label>\r\n        <input\r\n          type=\"file\"\r\n          name=\"photo\"\r\n          //value=\"http://localhost:3001/uploads/\"+`{Profile.profile_photo}`\r\n          // onChange={onChangeProfilePhoto}\r\n          onChange={handleChangeFile}\r\n        ></input>\r\n        <br></br>\r\n        <input\r\n          type=\"text\"\r\n          name=\"self_intro\"\r\n          placeholder=\"간단한 자기소개 및 관심사\"\r\n          value={Profile.self_intro}\r\n          onChange={onChangeSelfIntro}\r\n        ></input>\r\n        <br></br>\r\n        <input\r\n          type=\"text\"\r\n          name=\"age\"\r\n          placeholder=\"나이\"\r\n          value={Profile.age}\r\n          onChange={onChangeAge}\r\n        ></input>\r\n        <br></br>\r\n        <input\r\n          type=\"text\"\r\n          name=\"loc\"\r\n          placeholder=\"사는 곳\"\r\n          value={Profile.location}\r\n          onChange={onChangeLocation}\r\n        ></input>\r\n        <br></br>\r\n        <button type=\"submit\">작성 완료</button>\r\n      </form>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default WriteProfile;\r\n",{"ruleId":"75","severity":1,"message":"76","line":1,"column":17,"nodeType":"77","messageId":"78","endLine":1,"endColumn":26},{"ruleId":"79","replacedBy":"80"},{"ruleId":"81","replacedBy":"82"},{"ruleId":"83","severity":1,"message":"84","line":29,"column":13,"nodeType":"85","endLine":41,"endColumn":4},{"ruleId":"83","severity":1,"message":"86","line":41,"column":6,"nodeType":"87","endLine":41,"endColumn":8,"suggestions":"88"},{"ruleId":"89","severity":1,"message":"90","line":51,"column":15,"nodeType":"91","endLine":51,"endColumn":59},{"ruleId":"75","severity":1,"message":"92","line":2,"column":10,"nodeType":"77","messageId":"78","endLine":2,"endColumn":15},{"ruleId":"83","severity":1,"message":"84","line":8,"column":13,"nodeType":"85","endLine":27,"endColumn":4},{"ruleId":"75","severity":1,"message":"92","line":2,"column":10,"nodeType":"77","messageId":"78","endLine":2,"endColumn":15},{"ruleId":"75","severity":1,"message":"93","line":3,"column":10,"nodeType":"77","messageId":"78","endLine":3,"endColumn":14},{"ruleId":"75","severity":1,"message":"93","line":2,"column":10,"nodeType":"77","messageId":"78","endLine":2,"endColumn":14},{"ruleId":"75","severity":1,"message":"94","line":4,"column":10,"nodeType":"77","messageId":"78","endLine":4,"endColumn":15},{"ruleId":"75","severity":1,"message":"95","line":5,"column":10,"nodeType":"77","messageId":"78","endLine":5,"endColumn":17},{"ruleId":"75","severity":1,"message":"96","line":6,"column":10,"nodeType":"77","messageId":"78","endLine":6,"endColumn":15},{"ruleId":"75","severity":1,"message":"97","line":10,"column":9,"nodeType":"77","messageId":"78","endLine":10,"endColumn":22},{"ruleId":"83","severity":1,"message":"84","line":31,"column":13,"nodeType":"85","endLine":47,"endColumn":4},{"ruleId":"83","severity":1,"message":"98","line":47,"column":6,"nodeType":"87","endLine":47,"endColumn":8,"suggestions":"99"},{"ruleId":"89","severity":1,"message":"90","line":59,"column":9,"nodeType":"91","endLine":59,"endColumn":71},{"ruleId":"75","severity":1,"message":"100","line":16,"column":10,"nodeType":"77","messageId":"78","endLine":16,"endColumn":17},{"ruleId":"75","severity":1,"message":"101","line":33,"column":9,"nodeType":"77","messageId":"78","endLine":33,"endColumn":29},{"ruleId":"83","severity":1,"message":"84","line":39,"column":13,"nodeType":"85","endLine":51,"endColumn":4},{"ruleId":"102","severity":1,"message":"103","line":45,"column":23,"nodeType":"104","messageId":"105","endLine":45,"endColumn":25},{"ruleId":"89","severity":1,"message":"90","line":57,"column":7,"nodeType":"91","endLine":57,"endColumn":51},{"ruleId":"89","severity":1,"message":"90","line":64,"column":7,"nodeType":"91","endLine":64,"endColumn":59},"no-unused-vars","'Component' is defined but never used.","Identifier","unusedVar","no-native-reassign",["106"],"no-negated-in-lhs",["107"],"react-hooks/exhaustive-deps","Effect callbacks are synchronous to prevent race conditions. Put the async function inside:\n\nuseEffect(() => {\n  async function fetchData() {\n    // You can await here\n    const response = await MyAPI.getData(someId);\n    // ...\n  }\n  fetchData();\n}, [someId]); // Or [] if effect doesn't need props or state\n\nLearn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching","ArrowFunctionExpression","React Hook useEffect has a missing dependency: 'email'. Either include it or remove the dependency array.","ArrayExpression",["108"],"jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","'Route' is defined but never used.","'post' is defined but never used.","'title' is assigned a value but never used.","'content' is assigned a value but never used.","'hobby' is assigned a value but never used.","'onChangeHobby' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'Board' and 'board_id'. Either include them or remove the dependency array.",["109"],"'imgFile' is assigned a value but never used.","'onChangeProfilePhoto' is assigned a value but never used.","eqeqeq","Expected '!==' and instead saw '!='.","BinaryExpression","unexpected","no-global-assign","no-unsafe-negation",{"desc":"110","fix":"111"},{"desc":"112","fix":"113"},"Update the dependencies array to be: [email]",{"range":"114","text":"115"},"Update the dependencies array to be: [Board, board_id]",{"range":"116","text":"117"},[1071,1073],"[email]",[1309,1311],"[Board, board_id]"]
\ No newline at end of file
+[{"C:\\WYH\\frontend\\src\\reportWebVitals.js":"1","C:\\WYH\\frontend\\src\\App.js":"2","C:\\WYH\\frontend\\src\\index.js":"3","C:\\WYH\\frontend\\src\\components\\Profile.js":"4","C:\\WYH\\frontend\\src\\components\\Board.js":"5","C:\\WYH\\frontend\\src\\components\\Home.js":"6","C:\\WYH\\frontend\\src\\components\\Signup.js":"7","C:\\WYH\\frontend\\src\\components\\Login.js":"8","C:\\WYH\\frontend\\src\\components\\WriteBoard.js":"9","C:\\WYH\\frontend\\src\\components\\DetailBoard.js":"10","C:\\WYH\\frontend\\src\\components\\WriteProfile.js":"11"},{"size":362,"mtime":1606157613272,"results":"12","hashOfConfig":"13"},{"size":1764,"mtime":1607415610889,"results":"14","hashOfConfig":"13"},{"size":544,"mtime":1606240034288,"results":"15","hashOfConfig":"13"},{"size":2234,"mtime":1607425040281,"results":"16","hashOfConfig":"13"},{"size":2251,"mtime":1607452498919,"results":"17","hashOfConfig":"13"},{"size":370,"mtime":1606662762631,"results":"18","hashOfConfig":"13"},{"size":1575,"mtime":1607345129868,"results":"19","hashOfConfig":"13"},{"size":1232,"mtime":1606662786263,"results":"20","hashOfConfig":"13"},{"size":3419,"mtime":1607104090152,"results":"21","hashOfConfig":"13"},{"size":2593,"mtime":1607425197042,"results":"22","hashOfConfig":"13"},{"size":3396,"mtime":1607369801073,"results":"23","hashOfConfig":"13"},{"filePath":"24","messages":"25","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"10w9ldj",{"filePath":"26","messages":"27","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"31","messages":"32","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33","messages":"34","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35","messages":"36","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37","messages":"38","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"39"},{"filePath":"40","messages":"41","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"42"},{"filePath":"43","messages":"44","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"45","usedDeprecatedRules":"30"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"48","messages":"49","errorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"50"},"C:\\WYH\\frontend\\src\\reportWebVitals.js",[],"C:\\WYH\\frontend\\src\\App.js",["51"],"C:\\WYH\\frontend\\src\\index.js",[],["52","53"],"C:\\WYH\\frontend\\src\\components\\Profile.js",["54","55","56"],"C:\\WYH\\frontend\\src\\components\\Board.js",["57","58","59"],"C:\\WYH\\frontend\\src\\components\\Home.js",["60"],"C:\\WYH\\frontend\\src\\components\\Signup.js",["61"],"import React, { useState } from \"react\";\r\n//import { post } from \"../../backend/app\";\r\nimport { post } from \"axios\";\r\n\r\nconst Signup = () => {\r\n  const [email, setEmail] = useState(\"\");\r\n  const [nicname, setNicname] = useState(\"\");\r\n  const [password, setPassword] = useState(\"\");\r\n\r\n  const onChangeEmail = (e) => setEmail(e.target.value);\r\n  const onChangeNicname = (e) => setNicname(e.target.value);\r\n  const onChangePassword = (e) => setPassword(e.target.value);\r\n\r\n  // const handleFormSubmit = () => {\r\n  //   const url = \"/signup\";\r\n  //   const formData = new FormData();\r\n  //   formData.append(\"username\", username);\r\n  //   formData.append(\"password\", password);\r\n  //   formData.append(\"nicname\", nicname);\r\n\r\n  //   const config = {\r\n  //     headers: {\r\n  //       \"content-type\": \"multipart/form-data\",\r\n  //     },\r\n  //   };\r\n\r\n  //   return post(url, formData, config);\r\n  // };\r\n\r\n  return (\r\n    <form action=\"http://localhost:3001/signup\" method=\"post\">\r\n      <h1>회원가입</h1>\r\n      이메일:\r\n      <input\r\n        type=\"text\"\r\n        name=\"email\"\r\n        value={email}\r\n        onChange={onChangeEmail}\r\n      ></input>\r\n      비밀번호:\r\n      <input\r\n        type=\"password\"\r\n        name=\"password\"\r\n        value={password}\r\n        onChange={onChangePassword}\r\n      ></input>\r\n      닉네임:\r\n      <input\r\n        type=\"text\"\r\n        name=\"nicname\"\r\n        value={nicname}\r\n        onChange={onChangeNicname}\r\n      ></input>\r\n      <button type=\"submit\">가입완료</button>\r\n    </form>\r\n  );\r\n};\r\n\r\nexport default Signup;\r\n","C:\\WYH\\frontend\\src\\components\\Login.js",["62"],"import React, { useState } from \"react\";\r\nimport { post } from \"axios\";\r\n\r\nconst Login = () => {\r\n  const [username, setUsername] = useState(\"\");\r\n  const [password, setPassword] = useState(\"\");\r\n\r\n  const onChangeUsername = (e) => setUsername(e.target.value);\r\n  const onChangePassword = (e) => setPassword(e.target.value);\r\n\r\n  // const handleFormSubmit = () => {\r\n  //   const url = \"/login\";\r\n  //   let formData = new FormData();\r\n  //   formData.append(\"username\", username);\r\n  //   formData.append(\"password\", password);\r\n\r\n  //   let config = {\r\n  //     headers: {\r\n  //       \"content-type\": \"multipart/form-data\",\r\n  //     },\r\n  //   };\r\n\r\n  //   return post(url, formData, config);\r\n  // };\r\n\r\n  return (\r\n    <form action=\"http://localhost:3001/login\" method=\"post\">\r\n      <h1>로그인 화면</h1>\r\n      이메일:\r\n      <input\r\n        type=\"text\"\r\n        name=\"email\"\r\n        value={username}\r\n        onChange={onChangeUsername}\r\n      ></input>\r\n      비밀번호:\r\n      <input\r\n        type=\"password\"\r\n        name=\"password\"\r\n        value={password}\r\n        onChange={onChangePassword}\r\n      ></input>\r\n      <button type=\"submit\">로그인</button>\r\n    </form>\r\n  );\r\n};\r\n\r\nexport default Login;\r\n","C:\\WYH\\frontend\\src\\components\\WriteBoard.js",["63","64","65","66"],"import React, { useState } from \"react\";\r\n\r\nconst WriteBoard = () => {\r\n  const [title, setTitle] = useState(\"\");\r\n  const [content, setContent] = useState(\"\");\r\n  const [hobby, setHobby] = useState(\"\");\r\n\r\n  const onChangeTitle = (e) => setTitle(e.target.value);\r\n  const onChangeContent = (e) => setContent(e.target.value);\r\n  const onChangeHobby = (e) => setHobby(e.target.value);\r\n\r\n  return (\r\n    <div>\r\n      <form\r\n        action=\"http://localhost:3001/writeBoard\"\r\n        method=\"post\"\r\n        encType=\"multipart/form-data\"\r\n      >\r\n        <label>제목</label>\r\n        <input type=\"text\" name=\"title\" onChange={onChangeTitle}></input>\r\n        <br></br>\r\n        <label>본문</label>\r\n        <textarea\r\n          type=\"text\"\r\n          name=\"content\"\r\n          onChange={onChangeContent}\r\n        ></textarea>\r\n        <br></br>\r\n        <label>취미</label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"ex/sp\" name=\"hobby\" />\r\n          운동/스포츠\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"out/tr\" name=\"hobby\" />\r\n          아웃도어/여행\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"bk/wr\" name=\"hobby\" />\r\n          인문학/책/글\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"fg/lg\" name=\"hobby\" />\r\n          외국/언어\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"cul/pfm\" name=\"hobby\" />\r\n          문화/공연\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"mu/inst\" name=\"hobby\" />\r\n          음악/악기\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"cft\" name=\"hobby\" />\r\n          공예/만들기\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"dan\" name=\"hobby\" />\r\n          댄스/무용\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"volu\" name=\"hobby\" />\r\n          봉사활동\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"par\" name=\"hobby\" />\r\n          사교/인맥\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"game\" name=\"hobby\" />\r\n          게임/오락\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"pic\" name=\"hobby\" />\r\n          사진/편집/촬영/영상\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"inv\" name=\"hobby\" />\r\n          제테크/투자\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"cok/fod\" name=\"hobby\" />\r\n          요리/음식/맛집\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"fas/bea\" name=\"hobby\" />\r\n          패션/뷰티/코디\r\n        </label>\r\n        <br></br>\r\n        <label>\r\n          <input type=\"radio\" value=\"art/draw\" name=\"hobby\" />\r\n          미술/그림\r\n        </label>\r\n        <br></br>\r\n        <br></br>\r\n        <label>사진첨부</label>\r\n        <input type=\"file\" name=\"photo\"></input>\r\n        <br></br>\r\n        <button type=\"submit\">ok</button>\r\n      </form>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default WriteBoard;\r\n","C:\\WYH\\frontend\\src\\components\\DetailBoard.js",["67","68","69"],"C:\\WYH\\frontend\\src\\components\\WriteProfile.js",["70","71","72","73","74","75"],"import React, { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nconst WriteProfile = () => {\r\n  const [Profile, setProfile] = useState({\r\n    profile_photo: \"\",\r\n    created_at: \"\",\r\n    self_intro: \"\",\r\n    user_id: \"\",\r\n    user_email: \"\",\r\n    location: \"\",\r\n    age: \"\",\r\n  });\r\n  const [Img, setImg] = useState(\"\");\r\n  const [imgBase64, setImgBase64] = useState(\"\");\r\n  const [imgFile, setImgFile] = useState(null);\r\n\r\n  const handleChangeFile = (event) => {\r\n    let reader = new FileReader();\r\n    reader.onloadend = () => {\r\n      // 2. 읽기가 완료되면 아래코드가 실행됩니다.\r\n      const base64 = reader.result;\r\n      if (base64) {\r\n        setImgBase64(base64.toString()); // 파일 base64 상태 업데이트\r\n      }\r\n    };\r\n    if (event.target.files[0]) {\r\n      reader.readAsDataURL(event.target.files[0]); // 1. 파일을 읽어 버퍼에 저장합니다.\r\n      setImgFile(event.target.files[0]); // 파일 상태 업데이트\r\n    }\r\n  };\r\n\r\n  const onChangeProfilePhoto = (e) =>\r\n    setProfile({ profile_photo: e.target.value });\r\n  const onChangeSelfIntro = (e) => setProfile({ self_intro: e.target.value });\r\n  const onChangeLocation = (e) => setProfile({ location: e.target.value });\r\n  const onChangeAge = (e) => setProfile({ age: e.target.value });\r\n\r\n  useEffect(async () => {\r\n    async function fetchData() {\r\n      console.log(\"writeProfile axios get 호출\");\r\n      let res = await axios.get(\"http://localhost:3001/getProfileInfo\");\r\n      console.log(res);\r\n      console.dir(res.data[0]);\r\n      if (res.data[0] != undefined) {\r\n        setProfile(res.data[0]);\r\n        setImg(\"http://localhost:3001/uploads/\" + res.data[0].profile_photo);\r\n      }\r\n    }\r\n    fetchData();\r\n  }, []);\r\n\r\n  return (\r\n    <div>\r\n      <label>기존 프로필 사진</label>\r\n      <br></br>\r\n      <img src={Img} width=\"200px\" height=\"200px\"></img>\r\n      <br></br>\r\n      <label>선택한 프로필 사진</label>\r\n      <br></br>\r\n      {/* <div\r\n        style={{ backgroundColor: \"#efefef\", width: \"200px\", height: \"200px\" }}\r\n      > */}\r\n      <img src={imgBase64} width=\"200px\" height=\"200px\" />\r\n      {/* </div> */}\r\n      <form\r\n        method=\"post\"\r\n        action=\"http://localhost:3001/writeProfile\"\r\n        encType=\"multipart/form-data\"\r\n      >\r\n        <label>프로필 사진</label>\r\n        <input\r\n          type=\"file\"\r\n          name=\"photo\"\r\n          //value=\"http://localhost:3001/uploads/\"+`{Profile.profile_photo}`\r\n          // onChange={onChangeProfilePhoto}\r\n          onChange={handleChangeFile}\r\n        ></input>\r\n        <br></br>\r\n        <input\r\n          type=\"text\"\r\n          name=\"self_intro\"\r\n          placeholder=\"간단한 자기소개 및 관심사\"\r\n          value={Profile.self_intro}\r\n          onChange={onChangeSelfIntro}\r\n        ></input>\r\n        <br></br>\r\n        <input\r\n          type=\"text\"\r\n          name=\"age\"\r\n          placeholder=\"나이\"\r\n          value={Profile.age}\r\n          onChange={onChangeAge}\r\n        ></input>\r\n        <br></br>\r\n        <input\r\n          type=\"text\"\r\n          name=\"loc\"\r\n          placeholder=\"사는 곳\"\r\n          value={Profile.location}\r\n          onChange={onChangeLocation}\r\n        ></input>\r\n        <br></br>\r\n        <button type=\"submit\">작성 완료</button>\r\n      </form>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default WriteProfile;\r\n",{"ruleId":"76","severity":1,"message":"77","line":1,"column":17,"nodeType":"78","messageId":"79","endLine":1,"endColumn":26},{"ruleId":"80","replacedBy":"81"},{"ruleId":"82","replacedBy":"83"},{"ruleId":"84","severity":1,"message":"85","line":29,"column":13,"nodeType":"86","endLine":41,"endColumn":4},{"ruleId":"84","severity":1,"message":"87","line":41,"column":6,"nodeType":"88","endLine":41,"endColumn":8,"suggestions":"89"},{"ruleId":"90","severity":1,"message":"91","line":51,"column":15,"nodeType":"92","endLine":51,"endColumn":59},{"ruleId":"76","severity":1,"message":"93","line":2,"column":10,"nodeType":"78","messageId":"79","endLine":2,"endColumn":15},{"ruleId":"84","severity":1,"message":"85","line":13,"column":13,"nodeType":"86","endLine":34,"endColumn":4},{"ruleId":"84","severity":1,"message":"94","line":34,"column":6,"nodeType":"88","endLine":34,"endColumn":8,"suggestions":"95"},{"ruleId":"76","severity":1,"message":"93","line":2,"column":10,"nodeType":"78","messageId":"79","endLine":2,"endColumn":15},{"ruleId":"76","severity":1,"message":"96","line":3,"column":10,"nodeType":"78","messageId":"79","endLine":3,"endColumn":14},{"ruleId":"76","severity":1,"message":"96","line":2,"column":10,"nodeType":"78","messageId":"79","endLine":2,"endColumn":14},{"ruleId":"76","severity":1,"message":"97","line":4,"column":10,"nodeType":"78","messageId":"79","endLine":4,"endColumn":15},{"ruleId":"76","severity":1,"message":"98","line":5,"column":10,"nodeType":"78","messageId":"79","endLine":5,"endColumn":17},{"ruleId":"76","severity":1,"message":"99","line":6,"column":10,"nodeType":"78","messageId":"79","endLine":6,"endColumn":15},{"ruleId":"76","severity":1,"message":"100","line":10,"column":9,"nodeType":"78","messageId":"79","endLine":10,"endColumn":22},{"ruleId":"84","severity":1,"message":"85","line":31,"column":13,"nodeType":"86","endLine":47,"endColumn":4},{"ruleId":"84","severity":1,"message":"101","line":47,"column":6,"nodeType":"88","endLine":47,"endColumn":8,"suggestions":"102"},{"ruleId":"90","severity":1,"message":"91","line":59,"column":9,"nodeType":"92","endLine":59,"endColumn":71},{"ruleId":"76","severity":1,"message":"103","line":16,"column":10,"nodeType":"78","messageId":"79","endLine":16,"endColumn":17},{"ruleId":"76","severity":1,"message":"104","line":33,"column":9,"nodeType":"78","messageId":"79","endLine":33,"endColumn":29},{"ruleId":"84","severity":1,"message":"85","line":39,"column":13,"nodeType":"86","endLine":51,"endColumn":4},{"ruleId":"105","severity":1,"message":"106","line":45,"column":23,"nodeType":"107","messageId":"108","endLine":45,"endColumn":25},{"ruleId":"90","severity":1,"message":"91","line":57,"column":7,"nodeType":"92","endLine":57,"endColumn":51},{"ruleId":"90","severity":1,"message":"91","line":64,"column":7,"nodeType":"92","endLine":64,"endColumn":59},"no-unused-vars","'Component' is defined but never used.","Identifier","unusedVar","no-native-reassign",["109"],"no-negated-in-lhs",["110"],"react-hooks/exhaustive-deps","Effect callbacks are synchronous to prevent race conditions. Put the async function inside:\n\nuseEffect(() => {\n  async function fetchData() {\n    // You can await here\n    const response = await MyAPI.getData(someId);\n    // ...\n  }\n  fetchData();\n}, [someId]); // Or [] if effect doesn't need props or state\n\nLearn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching","ArrowFunctionExpression","React Hook useEffect has a missing dependency: 'email'. Either include it or remove the dependency array.","ArrayExpression",["111"],"jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","'Route' is defined but never used.","React Hook useEffect has a missing dependency: 'input'. Either include it or remove the dependency array.",["112"],"'post' is defined but never used.","'title' is assigned a value but never used.","'content' is assigned a value but never used.","'hobby' is assigned a value but never used.","'onChangeHobby' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'Board' and 'board_id'. Either include them or remove the dependency array.",["113"],"'imgFile' is assigned a value but never used.","'onChangeProfilePhoto' is assigned a value but never used.","eqeqeq","Expected '!==' and instead saw '!='.","BinaryExpression","unexpected","no-global-assign","no-unsafe-negation",{"desc":"114","fix":"115"},{"desc":"116","fix":"117"},{"desc":"118","fix":"119"},"Update the dependencies array to be: [email]",{"range":"120","text":"121"},"Update the dependencies array to be: [input]",{"range":"122","text":"123"},"Update the dependencies array to be: [Board, board_id]",{"range":"124","text":"125"},[1071,1073],"[email]",[988,990],"[input]",[1309,1311],"[Board, board_id]"]
\ No newline at end of file
diff --git a/frontend/src/components/Board.js b/frontend/src/components/Board.js
index 088fc89275475c5f7999829254ae443956a98711..28d23ea05c708091dcc5fb9a2fb720127b14d165 100644
--- a/frontend/src/components/Board.js
+++ b/frontend/src/components/Board.js
@@ -4,6 +4,11 @@ import axios from "axios";
 
 const Board = () => {
   const [response, setResponse] = useState([]);
+  const [input, setInput] = useState("");
+  const handleInputChange = (e) => {
+    setInput(e.target.value);
+    console.log(input);
+  };
 
   useEffect(async () => {
     // try {
@@ -19,13 +24,27 @@ const Board = () => {
     // }
     async function fetchData() {
       console.log("react board get axios 호출");
-      const result = await axios.get("http://localhost:3001/board");
+      const result = await axios.get("http://localhost:3001/board", {
+        input: input,
+      });
       console.log(result.data);
       setResponse(result.data);
     }
     fetchData();
   }, []);
 
+  const handleOnSubmit = () => {
+    async function fetchData2() {
+      console.log("react board search axios 호출");
+      const result2 = await axios.post("http://localhost:3001/searchBoard", {
+        input: input,
+      });
+      console.log(result2.data);
+      setResponse(result2.data);
+    }
+    fetchData2();
+  };
+
   return (
     <div>
       <button>
@@ -34,10 +53,16 @@ const Board = () => {
       <button>
         <Link to="/updateProf">프로필 작성</Link>
       </button>
-      <form action="http://localhost:3001/searchBoard" method="post">
-        <input type="text" name="searchKeyword"></input>
-        <button type="submit">게시글검색</button>
-      </form>
+
+      <input
+        type="text"
+        //name="searchKeyword"
+        onChange={handleInputChange}
+      ></input>
+      <button type="submit" onClick={handleOnSubmit}>
+        게시글검색
+      </button>
+
       <ol>
         {response.map((res) => (
           <li key={res._id}>