diff --git a/index.html b/index.html index f3aa5296..b3dce841 100644 --- a/index.html +++ b/index.html @@ -2,20 +2,35 @@ + BrainPIX 아이디어 거래 & 협업 플랫폼 + name="keywords" + content="브레인픽스, brainpix, 아이디어 거래, 협업" /> + name="description" + content="BrainPIX에서 누구나 자신의 아이디어를 거래하고, 딱 맞는 협력자를 찾아요." /> - BrainPIX 아이디어 거래 & 협업 플랫폼 + property="og:type" + content="website" /> + + + + +
diff --git a/package-lock.json b/package-lock.json index 7d960f11..1084ac33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-helmet-async": "^2.0.5", "react-hook-form": "^7.54.2", "react-quill-new": "^3.3.3", "react-router-dom": "^7.1.1", @@ -5252,6 +5253,15 @@ "node": ">= 0.4" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -7340,6 +7350,26 @@ "react": "^18.3.1" } }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-helmet-async": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-2.0.5.tgz", + "integrity": "sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==", + "license": "Apache-2.0", + "dependencies": { + "invariant": "^2.2.4", + "react-fast-compare": "^3.2.2", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-hook-form": { "version": "7.54.2", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.54.2.tgz", @@ -8111,6 +8141,12 @@ "node": ">= 0.4" } }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", diff --git a/package.json b/package.json index c5ea63ac..30f100ee 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-helmet-async": "^2.0.5", "react-hook-form": "^7.54.2", "react-quill-new": "^3.3.3", "react-router-dom": "^7.1.1", diff --git a/src/App.tsx b/src/App.tsx index e61e6c2b..dc676f73 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,19 +5,22 @@ import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { ToastProvider } from './contexts/toastContext'; import { Suspense } from 'react'; import LoadingPage from './pages/loading/LoadingPage'; +import { HelmetProvider } from 'react-helmet-async'; function App() { const queryClient = new QueryClient(); return ( - - - - }> - ; - - - + + + + + }> + ; + + + + ); } diff --git a/src/assets/images/logoImage.png b/src/assets/images/logoImage.png new file mode 100644 index 00000000..ee27e782 Binary files /dev/null and b/src/assets/images/logoImage.png differ diff --git a/src/assets/images/postCardImage.png b/src/assets/images/postCardImage.png deleted file mode 100644 index d15d6e09..00000000 Binary files a/src/assets/images/postCardImage.png and /dev/null differ diff --git a/src/pages/collaboration/CollaborationMain.tsx b/src/pages/collaboration/CollaborationMain.tsx index bbb34829..5624cb96 100644 --- a/src/pages/collaboration/CollaborationMain.tsx +++ b/src/pages/collaboration/CollaborationMain.tsx @@ -11,6 +11,7 @@ import { GetCollaborationListRequest } from '../../types/collaborationType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -177,6 +178,12 @@ const CollaborationMain = () => { return ( <> +
협업 광장 diff --git a/src/pages/collaboration/CollaborationRegister.tsx b/src/pages/collaboration/CollaborationRegister.tsx index cea71f55..291a3bb8 100644 --- a/src/pages/collaboration/CollaborationRegister.tsx +++ b/src/pages/collaboration/CollaborationRegister.tsx @@ -98,12 +98,6 @@ const OPTIONS = [ '기타', ]; -// interface RecruitmentField { -// id: number; -// field: string; -// numberOfPeople: number; -// } - const CollaborationRegister = () => { const navigate = useNavigate(); const [category, setCategory] = useState(''); diff --git a/src/pages/collaboration/PostDetailWithLink.tsx b/src/pages/collaboration/PostDetailWithLink.tsx index 844a37b7..06951a88 100644 --- a/src/pages/collaboration/PostDetailWithLink.tsx +++ b/src/pages/collaboration/PostDetailWithLink.tsx @@ -16,6 +16,7 @@ import { useQuery } from '@tanstack/react-query'; import { getCollaborationDetail } from '../../apis/detailPageAPI'; import { CollaborationDetail } from '../../types/detailPageType'; import { getUserIdFromToken } from '../../utils/auth'; +import { MetaTag } from '../../seoMetaTag'; const PostDetailWithLink = () => { const { collaborationId } = useParams<{ collaborationId: string }>(); @@ -90,6 +91,12 @@ const PostDetailWithLink = () => { return ( <> +
{ + const { title, description, keywords, image, url } = data; + + return ( + + {`BrainPIX ${title}`} + + + + + + + + + + + + + ); +};