diff --git a/public/data/count.json b/public/data/count.json new file mode 100644 index 00000000..b14bca87 --- /dev/null +++ b/public/data/count.json @@ -0,0 +1,5 @@ +{ + "ongoingProjectCount": 63, + "endProjectCount": 4, + "totalProjectCount": 67 +} diff --git a/public/data/method.json b/public/data/method.json new file mode 100644 index 00000000..8b293f4b --- /dev/null +++ b/public/data/method.json @@ -0,0 +1,17 @@ +[ + { + "id": 1, + "name": "온라인", + "createdAt": "2025-01-02T12:36:01.000Z" + }, + { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + { + "id": 3, + "name": "온/오프라인", + "createdAt": "2025-01-02T12:36:10.000Z" + } +] diff --git a/public/data/position.json b/public/data/position.json new file mode 100644 index 00000000..77c5bc6c --- /dev/null +++ b/public/data/position.json @@ -0,0 +1,47 @@ +[ + { + "id": 1, + "name": "백엔드", + "createdAt": "2025-01-02T12:19:48.000Z" + }, + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + }, + { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + }, + { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + }, + { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + }, + { + "id": 7, + "name": "PM", + "createdAt": "2025-01-02T12:20:48.000Z" + }, + { + "id": 8, + "name": "기획자", + "createdAt": "2025-01-02T12:20:59.000Z" + }, + { + "id": 9, + "name": "마케터", + "createdAt": "2025-01-02T12:21:02.000Z" + } +] diff --git a/public/data/project.json b/public/data/project.json new file mode 100644 index 00000000..c1a8a609 --- /dev/null +++ b/public/data/project.json @@ -0,0 +1,2447 @@ +{ + "projects": [ + { + "id": 87, + "title": "테스트!테스트!", + "description": "테스트!테스트!테스트!테스트!", + "totalMember": 2, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "3개월", + "methodId": 3, + "authorId": 8, + "views": 60, + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2025-01-02T00:00:00.000Z", + "recruitmentEndDate": "2025-01-18T00:00:00.000Z", + "createdAt": "2025-01-23T10:02:20.000Z", + "updatedAt": "2025-01-23T10:02:20.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 87, + "skillTagId": 12, + "SkillTag": { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + } + }, + { + "projectId": 87, + "skillTagId": 19, + "SkillTag": { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + } + ], + "Method": { + "id": 3, + "name": "온/오프라인", + "createdAt": "2025-01-02T12:36:10.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 87, + "positionTagId": 4, + "PositionTag": { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + } + }, + { + "projectId": 87, + "positionTagId": 5, + "PositionTag": { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + } + } + ], + "skillTags": [ + { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + }, + { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + ], + "positionTags": [ + { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + }, + { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + } + ] + }, + { + "id": 86, + "title": "테스트!테스트!", + "description": "테스트!테스트!테스트!테스트!테스트!", + "totalMember": 2, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "3개월", + "methodId": 2, + "authorId": 8, + "views": 18, + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2024-12-29T00:00:00.000Z", + "recruitmentEndDate": "2025-01-11T00:00:00.000Z", + "createdAt": "2025-01-23T10:01:58.000Z", + "updatedAt": "2025-01-23T10:01:58.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 86, + "skillTagId": 2, + "SkillTag": { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + } + }, + { + "projectId": 86, + "skillTagId": 3, + "SkillTag": { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 86, + "positionTagId": 5, + "PositionTag": { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + } + }, + { + "projectId": 86, + "positionTagId": 6, + "PositionTag": { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + } + } + ], + "skillTags": [ + { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + }, + { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + } + ], + "positionTags": [ + { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + }, + { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + } + ] + }, + { + "id": 85, + "title": "테스트 1", + "description": "테스트!테스트!테스트!테스트!테스트!테스트!", + "totalMember": 5, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "3개월", + "methodId": 2, + "authorId": 8, + "views": 7, + "isBeginner": false, + "isDone": true, + "recruitmentStartDate": "2024-12-30T00:00:00.000Z", + "recruitmentEndDate": "2025-01-10T00:00:00.000Z", + "createdAt": "2025-01-23T10:01:36.000Z", + "updatedAt": "2025-01-23T10:01:36.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 85, + "skillTagId": 12, + "SkillTag": { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + } + }, + { + "projectId": 85, + "skillTagId": 19, + "SkillTag": { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 85, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 85, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + } + ], + "skillTags": [ + { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + }, + { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + ] + }, + { + "id": 84, + "title": "김수한무 거북이와 두루미 삼천갑자 동방삭 치치카포 사리사리센타 워리워리 세브리깡 무두셀라 구름이 허리케인에 담벼락 담벼락에 서생원 서생원에 고양이 고양이엔 바둑이 바둑이는 돌돌이", + "description": "fagadfhsdhsdf", + "totalMember": 2, + "startDate": "2025-02-05T00:00:00.000Z", + "estimatedPeriod": "2개월", + "methodId": 2, + "authorId": 8, + "views": 11, + "isBeginner": false, + "isDone": true, + "recruitmentStartDate": "2025-01-23T00:00:00.000Z", + "recruitmentEndDate": "2025-01-24T00:00:00.000Z", + "createdAt": "2025-01-23T08:37:59.000Z", + "updatedAt": "2025-01-23T08:37:59.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 84, + "skillTagId": 2, + "SkillTag": { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 3, + "SkillTag": { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 4, + "SkillTag": { + "id": 4, + "name": "Vue", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Vue.png", + "createdAt": "2025-01-02T15:07:37.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 5, + "SkillTag": { + "id": 5, + "name": "Svelte", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Svelte.png", + "createdAt": "2025-01-02T15:07:42.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 11, + "SkillTag": { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 12, + "SkillTag": { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 13, + "SkillTag": { + "id": 13, + "name": "Express", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Express.png", + "createdAt": "2025-01-02T15:09:26.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 14, + "SkillTag": { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 19, + "SkillTag": { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 20, + "SkillTag": { + "id": 20, + "name": "Firebase", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Firebase.png", + "createdAt": "2025-01-02T15:10:22.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 21, + "SkillTag": { + "id": 21, + "name": "Flutter", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Flutter.png", + "createdAt": "2025-01-02T15:10:28.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 22, + "SkillTag": { + "id": 22, + "name": "Swift", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Swift.png", + "createdAt": "2025-01-02T15:10:34.000Z" + } + }, + { + "projectId": 84, + "skillTagId": 27, + "SkillTag": { + "id": 27, + "name": "Git", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Git.png", + "createdAt": "2025-01-02T15:11:07.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 84, + "positionTagId": 1, + "PositionTag": { + "id": 1, + "name": "백엔드", + "createdAt": "2025-01-02T12:19:48.000Z" + } + }, + { + "projectId": 84, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 84, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + }, + { + "projectId": 84, + "positionTagId": 4, + "PositionTag": { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + } + } + ], + "skillTags": [ + { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + }, + { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + }, + { + "id": 4, + "name": "Vue", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Vue.png", + "createdAt": "2025-01-02T15:07:37.000Z" + }, + { + "id": 5, + "name": "Svelte", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Svelte.png", + "createdAt": "2025-01-02T15:07:42.000Z" + }, + { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + }, + { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + }, + { + "id": 13, + "name": "Express", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Express.png", + "createdAt": "2025-01-02T15:09:26.000Z" + }, + { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + }, + { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + }, + { + "id": 20, + "name": "Firebase", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Firebase.png", + "createdAt": "2025-01-02T15:10:22.000Z" + }, + { + "id": 21, + "name": "Flutter", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Flutter.png", + "createdAt": "2025-01-02T15:10:28.000Z" + }, + { + "id": 22, + "name": "Swift", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Swift.png", + "createdAt": "2025-01-02T15:10:34.000Z" + }, + { + "id": 27, + "name": "Git", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Git.png", + "createdAt": "2025-01-02T15:11:07.000Z" + } + ], + "positionTags": [ + { + "id": 1, + "name": "백엔드", + "createdAt": "2025-01-02T12:19:48.000Z" + }, + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + }, + { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + } + ] + }, + { + "id": 83, + "title": "김수한무 거북이와 두루미 삼천갑자 동방삭 치치카포 사리사리센타 워리워리 세브리깡 무두셀라 구름이 허리케인에 담벼락 담벼락에 서생원 서생원에 고양이 고양이엔 바둑이 바둑이는 돌돌이", + "description": "sfdaertareygadfhg", + "totalMember": 2, + "startDate": "2025-02-05T00:00:00.000Z", + "estimatedPeriod": "2개월", + "methodId": 2, + "authorId": 8, + "views": 45, + "isBeginner": false, + "isDone": false, + "recruitmentStartDate": "2025-01-23T00:00:00.000Z", + "recruitmentEndDate": "2025-01-31T00:00:00.000Z", + "createdAt": "2025-01-23T08:33:16.000Z", + "updatedAt": "2025-01-23T08:33:16.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 83, + "skillTagId": 2, + "SkillTag": { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 83, + "positionTagId": 4, + "PositionTag": { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + } + }, + { + "projectId": 83, + "positionTagId": 5, + "PositionTag": { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + } + }, + { + "projectId": 83, + "positionTagId": 6, + "PositionTag": { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + } + }, + { + "projectId": 83, + "positionTagId": 7, + "PositionTag": { + "id": 7, + "name": "PM", + "createdAt": "2025-01-02T12:20:48.000Z" + } + }, + { + "projectId": 83, + "positionTagId": 8, + "PositionTag": { + "id": 8, + "name": "기획자", + "createdAt": "2025-01-02T12:20:59.000Z" + } + }, + { + "projectId": 83, + "positionTagId": 9, + "PositionTag": { + "id": 9, + "name": "마케터", + "createdAt": "2025-01-02T12:21:02.000Z" + } + } + ], + "skillTags": [ + { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + } + ], + "positionTags": [ + { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + }, + { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + }, + { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + }, + { + "id": 7, + "name": "PM", + "createdAt": "2025-01-02T12:20:48.000Z" + }, + { + "id": 8, + "name": "기획자", + "createdAt": "2025-01-02T12:20:59.000Z" + }, + { + "id": 9, + "name": "마케터", + "createdAt": "2025-01-02T12:21:02.000Z" + } + ] + }, + { + "id": 82, + "title": "김수한무 거북이와 두루미 삼천갑자 동방삭 치치카포 사리사리센타 워리워리 세브리깡 무두셀라 구름이 허리케인에 담벼락 담벼락에 서생원 서생원에 고양이 고양이엔 바둑이 바둑이는 돌돌이", + "description": "김수한무 거북이와 두루미 삼천갑자 동방삭 치치카포 사리사리센타 워리워리 세브리깡 무두셀라 구름이 허리케인에 담벼락 담벼락에 서생원 서생원에 고양이 고양이엔 바둑이 바둑이는 돌돌이", + "totalMember": 3, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "3개월", + "methodId": 2, + "authorId": 8, + "views": 28, + "isBeginner": false, + "isDone": true, + "recruitmentStartDate": "2024-12-30T00:00:00.000Z", + "recruitmentEndDate": "2025-01-04T00:00:00.000Z", + "createdAt": "2025-01-23T07:20:09.000Z", + "updatedAt": "2025-01-23T07:20:09.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 82, + "skillTagId": 1, + "SkillTag": { + "id": 1, + "name": "JavaScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/JavaScript.png", + "createdAt": "2025-01-02T15:07:03.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 2, + "SkillTag": { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 3, + "SkillTag": { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 4, + "SkillTag": { + "id": 4, + "name": "Vue", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Vue.png", + "createdAt": "2025-01-02T15:07:37.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 5, + "SkillTag": { + "id": 5, + "name": "Svelte", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Svelte.png", + "createdAt": "2025-01-02T15:07:42.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 6, + "SkillTag": { + "id": 6, + "name": "Nextjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nextjs.png", + "createdAt": "2025-01-02T15:07:48.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 7, + "SkillTag": { + "id": 7, + "name": "Nodejs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nodejs.png", + "createdAt": "2025-01-02T15:07:55.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 8, + "SkillTag": { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 9, + "SkillTag": { + "id": 9, + "name": "Spring", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Spring.png", + "createdAt": "2025-01-02T15:09:02.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 10, + "SkillTag": { + "id": 10, + "name": "Go", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Go.png", + "createdAt": "2025-01-02T15:09:08.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 11, + "SkillTag": { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 12, + "SkillTag": { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 13, + "SkillTag": { + "id": 13, + "name": "Express", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Express.png", + "createdAt": "2025-01-02T15:09:26.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 14, + "SkillTag": { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 15, + "SkillTag": { + "id": 15, + "name": "MongoDB", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MongoDB.png", + "createdAt": "2025-01-02T15:09:38.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 16, + "SkillTag": { + "id": 16, + "name": "Python", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Python.png", + "createdAt": "2025-01-02T15:09:49.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 17, + "SkillTag": { + "id": 17, + "name": "Django", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Django.png", + "createdAt": "2025-01-02T15:10:03.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 18, + "SkillTag": { + "id": 18, + "name": "php", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/php.png", + "createdAt": "2025-01-02T15:10:06.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 19, + "SkillTag": { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 20, + "SkillTag": { + "id": 20, + "name": "Firebase", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Firebase.png", + "createdAt": "2025-01-02T15:10:22.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 21, + "SkillTag": { + "id": 21, + "name": "Flutter", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Flutter.png", + "createdAt": "2025-01-02T15:10:28.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 22, + "SkillTag": { + "id": 22, + "name": "Swift", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Swift.png", + "createdAt": "2025-01-02T15:10:34.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 23, + "SkillTag": { + "id": 23, + "name": "ReactNative", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:10:43.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 24, + "SkillTag": { + "id": 24, + "name": "Unity", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Unity.png", + "createdAt": "2025-01-02T15:10:49.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 25, + "SkillTag": { + "id": 25, + "name": "AWS", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/AWS.png", + "createdAt": "2025-01-02T15:10:54.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 26, + "SkillTag": { + "id": 26, + "name": "Docker", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Docker.png", + "createdAt": "2025-01-02T15:11:05.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 27, + "SkillTag": { + "id": 27, + "name": "Git", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Git.png", + "createdAt": "2025-01-02T15:11:07.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 28, + "SkillTag": { + "id": 28, + "name": "Figma", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Figma.png", + "createdAt": "2025-01-02T15:11:15.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 29, + "SkillTag": { + "id": 29, + "name": "Zeplin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Zeplin.png", + "createdAt": "2025-01-02T15:11:21.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 30, + "SkillTag": { + "id": 30, + "name": "Jest", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Jest.png", + "createdAt": "2025-01-02T15:11:26.000Z" + } + }, + { + "projectId": 82, + "skillTagId": 31, + "SkillTag": { + "id": 31, + "name": "C", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/C(%2B%2B).png", + "createdAt": "2025-01-02T15:17:55.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 82, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 82, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + }, + { + "projectId": 82, + "positionTagId": 5, + "PositionTag": { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + } + }, + { + "projectId": 82, + "positionTagId": 6, + "PositionTag": { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + } + }, + { + "projectId": 82, + "positionTagId": 8, + "PositionTag": { + "id": 8, + "name": "기획자", + "createdAt": "2025-01-02T12:20:59.000Z" + } + }, + { + "projectId": 82, + "positionTagId": 9, + "PositionTag": { + "id": 9, + "name": "마케터", + "createdAt": "2025-01-02T12:21:02.000Z" + } + } + ], + "skillTags": [ + { + "id": 1, + "name": "JavaScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/JavaScript.png", + "createdAt": "2025-01-02T15:07:03.000Z" + }, + { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + }, + { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + }, + { + "id": 4, + "name": "Vue", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Vue.png", + "createdAt": "2025-01-02T15:07:37.000Z" + }, + { + "id": 5, + "name": "Svelte", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Svelte.png", + "createdAt": "2025-01-02T15:07:42.000Z" + }, + { + "id": 6, + "name": "Nextjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nextjs.png", + "createdAt": "2025-01-02T15:07:48.000Z" + }, + { + "id": 7, + "name": "Nodejs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nodejs.png", + "createdAt": "2025-01-02T15:07:55.000Z" + }, + { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + }, + { + "id": 9, + "name": "Spring", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Spring.png", + "createdAt": "2025-01-02T15:09:02.000Z" + }, + { + "id": 10, + "name": "Go", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Go.png", + "createdAt": "2025-01-02T15:09:08.000Z" + }, + { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + }, + { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + }, + { + "id": 13, + "name": "Express", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Express.png", + "createdAt": "2025-01-02T15:09:26.000Z" + }, + { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + }, + { + "id": 15, + "name": "MongoDB", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MongoDB.png", + "createdAt": "2025-01-02T15:09:38.000Z" + }, + { + "id": 16, + "name": "Python", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Python.png", + "createdAt": "2025-01-02T15:09:49.000Z" + }, + { + "id": 17, + "name": "Django", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Django.png", + "createdAt": "2025-01-02T15:10:03.000Z" + }, + { + "id": 18, + "name": "php", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/php.png", + "createdAt": "2025-01-02T15:10:06.000Z" + }, + { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + }, + { + "id": 20, + "name": "Firebase", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Firebase.png", + "createdAt": "2025-01-02T15:10:22.000Z" + }, + { + "id": 21, + "name": "Flutter", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Flutter.png", + "createdAt": "2025-01-02T15:10:28.000Z" + }, + { + "id": 22, + "name": "Swift", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Swift.png", + "createdAt": "2025-01-02T15:10:34.000Z" + }, + { + "id": 23, + "name": "ReactNative", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:10:43.000Z" + }, + { + "id": 24, + "name": "Unity", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Unity.png", + "createdAt": "2025-01-02T15:10:49.000Z" + }, + { + "id": 25, + "name": "AWS", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/AWS.png", + "createdAt": "2025-01-02T15:10:54.000Z" + }, + { + "id": 26, + "name": "Docker", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Docker.png", + "createdAt": "2025-01-02T15:11:05.000Z" + }, + { + "id": 27, + "name": "Git", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Git.png", + "createdAt": "2025-01-02T15:11:07.000Z" + }, + { + "id": 28, + "name": "Figma", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Figma.png", + "createdAt": "2025-01-02T15:11:15.000Z" + }, + { + "id": 29, + "name": "Zeplin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Zeplin.png", + "createdAt": "2025-01-02T15:11:21.000Z" + }, + { + "id": 30, + "name": "Jest", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Jest.png", + "createdAt": "2025-01-02T15:11:26.000Z" + }, + { + "id": 31, + "name": "C", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/C(%2B%2B).png", + "createdAt": "2025-01-02T15:17:55.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + }, + { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + }, + { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + }, + { + "id": 8, + "name": "기획자", + "createdAt": "2025-01-02T12:20:59.000Z" + }, + { + "id": 9, + "name": "마케터", + "createdAt": "2025-01-02T12:21:02.000Z" + } + ] + }, + { + "id": 81, + "title": "ㅇㄹㅍㅇㅋㅎㄱ", + "description": "fxgfggxgrdgf", + "totalMember": 3, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "6개월", + "methodId": 2, + "authorId": 8, + "views": 13, + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2024-12-29T00:00:00.000Z", + "recruitmentEndDate": "2025-01-04T00:00:00.000Z", + "createdAt": "2025-01-23T06:39:07.000Z", + "updatedAt": "2025-01-23T06:39:07.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 81, + "skillTagId": 8, + "SkillTag": { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + } + }, + { + "projectId": 81, + "skillTagId": 9, + "SkillTag": { + "id": 9, + "name": "Spring", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Spring.png", + "createdAt": "2025-01-02T15:09:02.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 81, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 81, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + } + ], + "skillTags": [ + { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + }, + { + "id": 9, + "name": "Spring", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Spring.png", + "createdAt": "2025-01-02T15:09:02.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + ] + }, + { + "id": 80, + "title": "hthftgh", + "description": "sgrgdrgdrg", + "totalMember": 1, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "1개월", + "methodId": 3, + "authorId": 8, + "views": 3, + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2025-01-01T00:00:00.000Z", + "recruitmentEndDate": "2025-01-10T00:00:00.000Z", + "createdAt": "2025-01-23T06:30:08.000Z", + "updatedAt": "2025-01-23T06:30:08.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 80, + "skillTagId": 14, + "SkillTag": { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + } + }, + { + "projectId": 80, + "skillTagId": 15, + "SkillTag": { + "id": 15, + "name": "MongoDB", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MongoDB.png", + "createdAt": "2025-01-02T15:09:38.000Z" + } + } + ], + "Method": { + "id": 3, + "name": "온/오프라인", + "createdAt": "2025-01-02T12:36:10.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 80, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + } + ], + "skillTags": [ + { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + }, + { + "id": 15, + "name": "MongoDB", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MongoDB.png", + "createdAt": "2025-01-02T15:09:38.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + ] + }, + { + "id": 79, + "title": "rghtdrhfg", + "description": "dghtydghtdghdt", + "totalMember": 5, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "3개월", + "methodId": 2, + "authorId": 8, + "views": 6, + "isBeginner": false, + "isDone": true, + "recruitmentStartDate": "2024-12-31T00:00:00.000Z", + "recruitmentEndDate": "2025-01-03T00:00:00.000Z", + "createdAt": "2025-01-23T06:15:31.000Z", + "updatedAt": "2025-01-23T06:15:31.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 79, + "skillTagId": 8, + "SkillTag": { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 79, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 79, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + } + ], + "skillTags": [ + { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + ] + }, + { + "id": 78, + "title": "sefsdafrgrg", + "description": "dgftghfyhgfbfdth", + "totalMember": 5, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "2개월", + "methodId": 2, + "authorId": 8, + "views": 14, + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2024-12-30T00:00:00.000Z", + "recruitmentEndDate": "2025-01-10T00:00:00.000Z", + "createdAt": "2025-01-23T06:14:23.000Z", + "updatedAt": "2025-01-23T06:14:23.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 78, + "skillTagId": 14, + "SkillTag": { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 78, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 78, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + } + ], + "skillTags": [ + { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + ] + }, + { + "id": 77, + "title": "온라인 스터디 매칭 프로젝트 모집", + "description": "# 🌟 **온라인 스터디 매칭 플랫폼** 프로젝트 팀원 모집\n\n안녕하세요, **온라인 스터디 매칭 플랫폼** 프로젝트에 함께할 팀원을 모집합니다! 🎉 \n이 프로젝트는 스터디를 원하는 사람들이 주제별로 쉽게 매칭될 수 있도록 돕는 플랫폼을 만드는 것을 목표로 합니다.\n\n---\n\n## 💡 **프로젝트 개요**\n- **프로젝트 이름**: 온라인 스터디 매칭 플랫폼\n- **목표**: 사용자가 관심 있는 주제를 선택하면 적합한 스터디 그룹 또는 팀원과 연결해주는 웹 서비스 개발\n- **주요 기능**:\n 1. 관심사 기반 스터디 그룹 추천\n 2. 사용자 간 매칭 시스템 (1:1 또는 그룹 매칭)\n 3. 실시간 채팅 및 알림 기능\n 4. 스터디 진행 상황 트래킹 (출석, 진도율 등)\n\n---\n\n## ⚙️ **기술 스택**\n- **Frontend**: React, TypeScript, Vite\n- **Backend**: Node.js (Express), MongoDB\n- **DevOps**: Docker, AWS\n- **Collaboration Tools**: GitHub, Notion, Slack\n\n---\n\n## 🎯 **모집 대상**\n- **Frontend 개발자 (2명)**:\n - React 및 TypeScript 경험자\n - 스타일링(CSS, Tailwind, Styled-Components) 경험 우대\n- **Backend 개발자 (2명)**:\n - REST API 설계 및 개발 경험자\n - MongoDB 또는 다른 NoSQL DB 경험자\n- **UI/UX 디자이너 (1명)**:\n - Figma 또는 Adobe XD 활용 가능자\n - 사용자 경험 설계에 관심 있는 분\n- **기타**:\n - 프로젝트 매니저, DevOps 엔지니어 환영\n\n---\n\n## 🕒 **진행 일정**\n- **기획 및 디자인**: 2025년 1월 ~ 2월\n- **개발 기간**: 2025년 3월 ~ 5월\n- **베타 테스트 및 런칭**: 2025년 6월\n\n---\n\n## 📢 **우리가 찾는 사람**\n- 협업에 적극적인 마인드를 가진 분\n- 프로젝트 완성을 목표로 끝까지 함께할 수 있는 분\n- Git, 코드 리뷰 경험이 있는 분이라면 더욱 환영합니다!\n\n---\n\n## 📩 **지원 방법**\n1. 간단한 자기소개와 기술 스택을 포함한 이메일 작성\n2. 아래 이메일로 지원\n - **이메일**: example@project.com\n3. 제목 형식: `[스터디 매칭 플랫폼] 지원 - 이름/포지션`\n\n---\n\n## 🎁 **참여 혜택**\n- 팀 프로젝트 경험 및 포트폴리오 구성\n- 다양한 기술 스택과 협업 경험\n- 프로젝트 종료 후 성과에 따른 인센티브(베타 테스트 성공 시)\n\n---\n\n**함께 만들어가는 즐거움과 성장의 기회를 놓치지 마세요! 많은 관심과 지원 부탁드립니다. 🙌**\n\n", + "totalMember": 3, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "4개월", + "methodId": 2, + "authorId": 8, + "views": 74, + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2024-12-30T00:00:00.000Z", + "recruitmentEndDate": "2025-01-03T00:00:00.000Z", + "createdAt": "2025-01-22T07:59:40.000Z", + "updatedAt": "2025-01-22T07:59:40.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 77, + "skillTagId": 1, + "SkillTag": { + "id": 1, + "name": "JavaScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/JavaScript.png", + "createdAt": "2025-01-02T15:07:03.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 2, + "SkillTag": { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 3, + "SkillTag": { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 4, + "SkillTag": { + "id": 4, + "name": "Vue", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Vue.png", + "createdAt": "2025-01-02T15:07:37.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 5, + "SkillTag": { + "id": 5, + "name": "Svelte", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Svelte.png", + "createdAt": "2025-01-02T15:07:42.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 6, + "SkillTag": { + "id": 6, + "name": "Nextjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nextjs.png", + "createdAt": "2025-01-02T15:07:48.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 7, + "SkillTag": { + "id": 7, + "name": "Nodejs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nodejs.png", + "createdAt": "2025-01-02T15:07:55.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 8, + "SkillTag": { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 9, + "SkillTag": { + "id": 9, + "name": "Spring", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Spring.png", + "createdAt": "2025-01-02T15:09:02.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 10, + "SkillTag": { + "id": 10, + "name": "Go", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Go.png", + "createdAt": "2025-01-02T15:09:08.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 11, + "SkillTag": { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 12, + "SkillTag": { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 13, + "SkillTag": { + "id": 13, + "name": "Express", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Express.png", + "createdAt": "2025-01-02T15:09:26.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 14, + "SkillTag": { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 15, + "SkillTag": { + "id": 15, + "name": "MongoDB", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MongoDB.png", + "createdAt": "2025-01-02T15:09:38.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 16, + "SkillTag": { + "id": 16, + "name": "Python", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Python.png", + "createdAt": "2025-01-02T15:09:49.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 17, + "SkillTag": { + "id": 17, + "name": "Django", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Django.png", + "createdAt": "2025-01-02T15:10:03.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 18, + "SkillTag": { + "id": 18, + "name": "php", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/php.png", + "createdAt": "2025-01-02T15:10:06.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 19, + "SkillTag": { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 20, + "SkillTag": { + "id": 20, + "name": "Firebase", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Firebase.png", + "createdAt": "2025-01-02T15:10:22.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 21, + "SkillTag": { + "id": 21, + "name": "Flutter", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Flutter.png", + "createdAt": "2025-01-02T15:10:28.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 22, + "SkillTag": { + "id": 22, + "name": "Swift", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Swift.png", + "createdAt": "2025-01-02T15:10:34.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 23, + "SkillTag": { + "id": 23, + "name": "ReactNative", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:10:43.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 24, + "SkillTag": { + "id": 24, + "name": "Unity", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Unity.png", + "createdAt": "2025-01-02T15:10:49.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 25, + "SkillTag": { + "id": 25, + "name": "AWS", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/AWS.png", + "createdAt": "2025-01-02T15:10:54.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 26, + "SkillTag": { + "id": 26, + "name": "Docker", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Docker.png", + "createdAt": "2025-01-02T15:11:05.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 27, + "SkillTag": { + "id": 27, + "name": "Git", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Git.png", + "createdAt": "2025-01-02T15:11:07.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 28, + "SkillTag": { + "id": 28, + "name": "Figma", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Figma.png", + "createdAt": "2025-01-02T15:11:15.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 29, + "SkillTag": { + "id": 29, + "name": "Zeplin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Zeplin.png", + "createdAt": "2025-01-02T15:11:21.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 30, + "SkillTag": { + "id": 30, + "name": "Jest", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Jest.png", + "createdAt": "2025-01-02T15:11:26.000Z" + } + }, + { + "projectId": 77, + "skillTagId": 31, + "SkillTag": { + "id": 31, + "name": "C", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/C(%2B%2B).png", + "createdAt": "2025-01-02T15:17:55.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 77, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 77, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + }, + { + "projectId": 77, + "positionTagId": 4, + "PositionTag": { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + } + }, + { + "projectId": 77, + "positionTagId": 5, + "PositionTag": { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + } + }, + { + "projectId": 77, + "positionTagId": 6, + "PositionTag": { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + } + }, + { + "projectId": 77, + "positionTagId": 7, + "PositionTag": { + "id": 7, + "name": "PM", + "createdAt": "2025-01-02T12:20:48.000Z" + } + }, + { + "projectId": 77, + "positionTagId": 8, + "PositionTag": { + "id": 8, + "name": "기획자", + "createdAt": "2025-01-02T12:20:59.000Z" + } + } + ], + "skillTags": [ + { + "id": 1, + "name": "JavaScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/JavaScript.png", + "createdAt": "2025-01-02T15:07:03.000Z" + }, + { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + }, + { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + }, + { + "id": 4, + "name": "Vue", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Vue.png", + "createdAt": "2025-01-02T15:07:37.000Z" + }, + { + "id": 5, + "name": "Svelte", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Svelte.png", + "createdAt": "2025-01-02T15:07:42.000Z" + }, + { + "id": 6, + "name": "Nextjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nextjs.png", + "createdAt": "2025-01-02T15:07:48.000Z" + }, + { + "id": 7, + "name": "Nodejs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nodejs.png", + "createdAt": "2025-01-02T15:07:55.000Z" + }, + { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + }, + { + "id": 9, + "name": "Spring", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Spring.png", + "createdAt": "2025-01-02T15:09:02.000Z" + }, + { + "id": 10, + "name": "Go", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Go.png", + "createdAt": "2025-01-02T15:09:08.000Z" + }, + { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + }, + { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + }, + { + "id": 13, + "name": "Express", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Express.png", + "createdAt": "2025-01-02T15:09:26.000Z" + }, + { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + }, + { + "id": 15, + "name": "MongoDB", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MongoDB.png", + "createdAt": "2025-01-02T15:09:38.000Z" + }, + { + "id": 16, + "name": "Python", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Python.png", + "createdAt": "2025-01-02T15:09:49.000Z" + }, + { + "id": 17, + "name": "Django", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Django.png", + "createdAt": "2025-01-02T15:10:03.000Z" + }, + { + "id": 18, + "name": "php", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/php.png", + "createdAt": "2025-01-02T15:10:06.000Z" + }, + { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + }, + { + "id": 20, + "name": "Firebase", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Firebase.png", + "createdAt": "2025-01-02T15:10:22.000Z" + }, + { + "id": 21, + "name": "Flutter", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Flutter.png", + "createdAt": "2025-01-02T15:10:28.000Z" + }, + { + "id": 22, + "name": "Swift", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Swift.png", + "createdAt": "2025-01-02T15:10:34.000Z" + }, + { + "id": 23, + "name": "ReactNative", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:10:43.000Z" + }, + { + "id": 24, + "name": "Unity", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Unity.png", + "createdAt": "2025-01-02T15:10:49.000Z" + }, + { + "id": 25, + "name": "AWS", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/AWS.png", + "createdAt": "2025-01-02T15:10:54.000Z" + }, + { + "id": 26, + "name": "Docker", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Docker.png", + "createdAt": "2025-01-02T15:11:05.000Z" + }, + { + "id": 27, + "name": "Git", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Git.png", + "createdAt": "2025-01-02T15:11:07.000Z" + }, + { + "id": 28, + "name": "Figma", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Figma.png", + "createdAt": "2025-01-02T15:11:15.000Z" + }, + { + "id": 29, + "name": "Zeplin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Zeplin.png", + "createdAt": "2025-01-02T15:11:21.000Z" + }, + { + "id": 30, + "name": "Jest", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Jest.png", + "createdAt": "2025-01-02T15:11:26.000Z" + }, + { + "id": 31, + "name": "C", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/C(%2B%2B).png", + "createdAt": "2025-01-02T15:17:55.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + }, + { + "id": 4, + "name": "IOS", + "createdAt": "2025-01-02T12:20:25.000Z" + }, + { + "id": 5, + "name": "안드로이드", + "createdAt": "2025-01-02T12:20:29.000Z" + }, + { + "id": 6, + "name": "데브옵스", + "createdAt": "2025-01-02T12:20:45.000Z" + }, + { + "id": 7, + "name": "PM", + "createdAt": "2025-01-02T12:20:48.000Z" + }, + { + "id": 8, + "name": "기획자", + "createdAt": "2025-01-02T12:20:59.000Z" + } + ] + }, + { + "id": 76, + "title": "온라인 스터디 매칭 플랫폼 프로젝트 팀원 모집", + "description": "# 🌟 **온라인 스터디 매칭 플랫폼** 프로젝트 팀원 모집\n\n안녕하세요, **온라인 스터디 매칭 플랫폼** 프로젝트에 함께할 팀원을 모집합니다! 🎉 \n이 프로젝트는 스터디를 원하는 사람들이 주제별로 쉽게 매칭될 수 있도록 돕는 플랫폼을 만드는 것을 목표로 합니다.\n\n---\n\n## 💡 **프로젝트 개요**\n- **프로젝트 이름**: 온라인 스터디 매칭 플랫폼\n- **목표**: 사용자가 관심 있는 주제를 선택하면 적합한 스터디 그룹 또는 팀원과 연결해주는 웹 서비스 개발\n- **주요 기능**:\n 1. 관심사 기반 스터디 그룹 추천\n 2. 사용자 간 매칭 시스템 (1:1 또는 그룹 매칭)\n 3. 실시간 채팅 및 알림 기능\n 4. 스터디 진행 상황 트래킹 (출석, 진도율 등)\n\n---\n\n## ⚙️ **기술 스택**\n- **Frontend**: React, TypeScript, Vite\n- **Backend**: Node.js (Express), MongoDB\n- **DevOps**: Docker, AWS\n- **Collaboration Tools**: GitHub, Notion, Slack\n\n---\n\n## 🎯 **모집 대상**\n- **Frontend 개발자 (2명)**:\n - React 및 TypeScript 경험자\n - 스타일링(CSS, Tailwind, Styled-Components) 경험 우대\n- **Backend 개발자 (2명)**:\n - REST API 설계 및 개발 경험자\n - MongoDB 또는 다른 NoSQL DB 경험자\n- **UI/UX 디자이너 (1명)**:\n - Figma 또는 Adobe XD 활용 가능자\n - 사용자 경험 설계에 관심 있는 분\n- **기타**:\n - 프로젝트 매니저, DevOps 엔지니어 환영\n\n---\n\n## 🕒 **진행 일정**\n- **기획 및 디자인**: 2025년 1월 ~ 2월\n- **개발 기간**: 2025년 3월 ~ 5월\n- **베타 테스트 및 런칭**: 2025년 6월\n\n---\n\n## 📢 **우리가 찾는 사람**\n- 협업에 적극적인 마인드를 가진 분\n- 프로젝트 완성을 목표로 끝까지 함께할 수 있는 분\n- Git, 코드 리뷰 경험이 있는 분이라면 더욱 환영합니다!\n\n---\n\n## 📩 **지원 방법**\n1. 간단한 자기소개와 기술 스택을 포함한 이메일 작성\n2. 아래 이메일로 지원\n - **이메일**: example@project.com\n3. 제목 형식: `[스터디 매칭 플랫폼] 지원 - 이름/포지션`\n\n---\n\n## 🎁 **참여 혜택**\n- 팀 프로젝트 경험 및 포트폴리오 구성\n- 다양한 기술 스택과 협업 경험\n- 프로젝트 종료 후 성과에 따른 인센티브(베타 테스트 성공 시)\n\n---\n\n**함께 만들어가는 즐거움과 성장의 기회를 놓치지 마세요! 많은 관심과 지원 부탁드립니다. 🙌**\n\n", + "totalMember": 5, + "startDate": "2012-02-12T00:00:00.000Z", + "estimatedPeriod": "3개월", + "methodId": 2, + "authorId": 8, + "views": 129, + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2024-12-31T00:00:00.000Z", + "recruitmentEndDate": "2025-01-03T00:00:00.000Z", + "createdAt": "2025-01-22T07:30:43.000Z", + "updatedAt": "2025-01-22T07:30:43.000Z", + "User": { + "id": 8, + "nickname": "김개발", + "email": "devpals@mail.com", + "bio": "안녕하세요 자기소개입니다.\n반갑습니다. 같이 프로젝트해요!\n열심히 하겠습니다.\n\nㅎㅎ", + "profileImg": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/users/profile_b4dc06af-410c-497e-9e01-f543e1682423.jpeg", + "createdAt": "2025-01-04T06:39:31.000Z", + "updatedAt": "2025-01-09T23:19:28.000Z" + }, + "ProjectSkillTag": [ + { + "projectId": 76, + "skillTagId": 11, + "SkillTag": { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + } + }, + { + "projectId": 76, + "skillTagId": 19, + "SkillTag": { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + } + ], + "Method": { + "id": 2, + "name": "오프라인", + "createdAt": "2025-01-02T12:36:07.000Z" + }, + "ProjectPositionTag": [ + { + "projectId": 76, + "positionTagId": 2, + "PositionTag": { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + } + }, + { + "projectId": 76, + "positionTagId": 3, + "PositionTag": { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + } + ], + "skillTags": [ + { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + }, + { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + } + ], + "positionTags": [ + { + "id": 2, + "name": "프론트엔드", + "createdAt": "2025-01-02T12:19:51.000Z" + }, + { + "id": 3, + "name": "디자이너", + "createdAt": "2025-01-02T12:19:55.000Z" + } + ] + } + ], + "total": 86, + "currentPage": 1, + "lastPage": 8 +} diff --git a/public/data/skill.json b/public/data/skill.json new file mode 100644 index 00000000..5183761d --- /dev/null +++ b/public/data/skill.json @@ -0,0 +1,188 @@ +[ + { + "id": 1, + "name": "JavaScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/JavaScript.png", + "createdAt": "2025-01-02T15:07:03.000Z" + }, + { + "id": 2, + "name": "TypeScript", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/TypeScript.png", + "createdAt": "2025-01-02T15:07:23.000Z" + }, + { + "id": 3, + "name": "React", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:07:31.000Z" + }, + { + "id": 4, + "name": "Vue", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Vue.png", + "createdAt": "2025-01-02T15:07:37.000Z" + }, + { + "id": 5, + "name": "Svelte", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Svelte.png", + "createdAt": "2025-01-02T15:07:42.000Z" + }, + { + "id": 6, + "name": "Nextjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nextjs.png", + "createdAt": "2025-01-02T15:07:48.000Z" + }, + { + "id": 7, + "name": "Nodejs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nodejs.png", + "createdAt": "2025-01-02T15:07:55.000Z" + }, + { + "id": 8, + "name": "Java", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Java.png", + "createdAt": "2025-01-02T15:08:55.000Z" + }, + { + "id": 9, + "name": "Spring", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Spring.png", + "createdAt": "2025-01-02T15:09:02.000Z" + }, + { + "id": 10, + "name": "Go", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Go.png", + "createdAt": "2025-01-02T15:09:08.000Z" + }, + { + "id": 11, + "name": "Nestjs", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Nestjs.png", + "createdAt": "2025-01-02T15:09:13.000Z" + }, + { + "id": 12, + "name": "Kotlin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Kotlin.png", + "createdAt": "2025-01-02T15:09:19.000Z" + }, + { + "id": 13, + "name": "Express", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Express.png", + "createdAt": "2025-01-02T15:09:26.000Z" + }, + { + "id": 14, + "name": "MySQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MySQL.png", + "createdAt": "2025-01-02T15:09:32.000Z" + }, + { + "id": 15, + "name": "MongoDB", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/MongoDB.png", + "createdAt": "2025-01-02T15:09:38.000Z" + }, + { + "id": 16, + "name": "Python", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Python.png", + "createdAt": "2025-01-02T15:09:49.000Z" + }, + { + "id": 17, + "name": "Django", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Django.png", + "createdAt": "2025-01-02T15:10:03.000Z" + }, + { + "id": 18, + "name": "php", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/php.png", + "createdAt": "2025-01-02T15:10:06.000Z" + }, + { + "id": 19, + "name": "GraphQL", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/GraphQL.png", + "createdAt": "2025-01-02T15:10:13.000Z" + }, + { + "id": 20, + "name": "Firebase", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Firebase.png", + "createdAt": "2025-01-02T15:10:22.000Z" + }, + { + "id": 21, + "name": "Flutter", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Flutter.png", + "createdAt": "2025-01-02T15:10:28.000Z" + }, + { + "id": 22, + "name": "Swift", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Swift.png", + "createdAt": "2025-01-02T15:10:34.000Z" + }, + { + "id": 23, + "name": "ReactNative", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/React.png", + "createdAt": "2025-01-02T15:10:43.000Z" + }, + { + "id": 24, + "name": "Unity", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Unity.png", + "createdAt": "2025-01-02T15:10:49.000Z" + }, + { + "id": 25, + "name": "AWS", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/AWS.png", + "createdAt": "2025-01-02T15:10:54.000Z" + }, + { + "id": 26, + "name": "Docker", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Docker.png", + "createdAt": "2025-01-02T15:11:05.000Z" + }, + { + "id": 27, + "name": "Git", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Git.png", + "createdAt": "2025-01-02T15:11:07.000Z" + }, + { + "id": 28, + "name": "Figma", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Figma.png", + "createdAt": "2025-01-02T15:11:15.000Z" + }, + { + "id": 29, + "name": "Zeplin", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Zeplin.png", + "createdAt": "2025-01-02T15:11:21.000Z" + }, + { + "id": 30, + "name": "Jest", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/Jest.png", + "createdAt": "2025-01-02T15:11:26.000Z" + }, + { + "id": 31, + "name": "C", + "img": "https://devpals-imgs.s3.ap-northeast-2.amazonaws.com/skill-tags/C(%2B%2B).png", + "createdAt": "2025-01-02T15:17:55.000Z" + } +] diff --git a/src/api/projectLists.api.ts b/src/api/projectLists.api.ts index e45cff40..f37fbcab 100644 --- a/src/api/projectLists.api.ts +++ b/src/api/projectLists.api.ts @@ -4,7 +4,8 @@ import type { } from '../models/mainProjectLists'; import { SearchFilters } from '../models/SearchFilters'; import { httpClient } from './http.api'; -export const fetchProjectLists = async (params: SearchFilters) => { + +export const getProjectLists = async (params: SearchFilters) => { try { const response = await httpClient.get('/project', { params, @@ -12,15 +13,15 @@ export const fetchProjectLists = async (params: SearchFilters) => { return response.data; } catch (e) { - console.log('fetchProjectListsE', e); + console.log('getProjectLists', e); } }; -export const fetchProjectStatistic = async () => { +export const getProjectStatistic = async () => { try { const response = await httpClient.get('/project/count'); return response.data; } catch (e) { - console.log('fetchProjectStatisticE', e); + console.log('getProjectStatistic', e); } }; diff --git a/src/api/projectSearchFiltering.api.ts b/src/api/projectSearchFiltering.api.ts index b69d535f..fcf4882f 100644 --- a/src/api/projectSearchFiltering.api.ts +++ b/src/api/projectSearchFiltering.api.ts @@ -1,29 +1,29 @@ import type { MethodTag, PositionTag, SkillTag } from '../models/tags'; import { httpClient } from './http.api'; -export const fetchSkillTag = async () => { +export const getSkillTag = async () => { try { const response = await httpClient.get('/skill-tag'); return response.data; } catch (e) { - console.log('fetchSkillTagE', e); + console.log('getSkillTag', e); } }; -export const fetchPositionTag = async () => { +export const getPositionTag = async () => { try { const response = await httpClient.get('/position-tag'); return response.data; } catch (e) { - console.log('fetchSkillTagE', e); + console.log('getPositionTag', e); } }; -export const fetchMethodTag = async () => { +export const getMethodTag = async () => { try { const response = await httpClient.get('/method'); return response.data; } catch (e) { - console.log('fetchSkillTagE', e); + console.log('getMethodTag', e); } }; diff --git a/src/components/common/page/noResultPage/NoResultPage.styled.ts b/src/components/common/page/noResultPage/NoResultPage.styled.ts index d3c84aec..92134405 100644 --- a/src/components/common/page/noResultPage/NoResultPage.styled.ts +++ b/src/components/common/page/noResultPage/NoResultPage.styled.ts @@ -13,11 +13,11 @@ export const Wrapper = styled.div` display: flex; gap: 0.5rem; - .noResultTitle { - font-size: 1.5rem; - } - svg { width: 1.5rem; } `; + +export const Title = styled.span` + font-size: 1.5rem; +`; diff --git a/src/components/common/page/noResultPage/NoResultPage.tsx b/src/components/common/page/noResultPage/NoResultPage.tsx index 4e1368a2..790624c2 100644 --- a/src/components/common/page/noResultPage/NoResultPage.tsx +++ b/src/components/common/page/noResultPage/NoResultPage.tsx @@ -9,7 +9,7 @@ export default function NoResultPage({ height }: NoResultPageProps) { return ( - 검색 결과가 없습니다. + 검색 결과가 없습니다. diff --git a/src/components/common/positionButton/PositionButton.styled.ts b/src/components/common/positionButton/PositionButton.styled.ts index 48518b42..24c60cc7 100644 --- a/src/components/common/positionButton/PositionButton.styled.ts +++ b/src/components/common/positionButton/PositionButton.styled.ts @@ -1,30 +1,30 @@ import styled from 'styled-components'; -export const Container = styled.div<{ +export const Container = styled.div``; + +export const PositionButton = styled.button<{ $isSelected: boolean; $isHover: boolean; }>` - .positionButton { - background-color: ${({ $isSelected, theme }) => - $isSelected ? theme.buttonScheme.primary.bg : theme.color.lightgrey}; - width: fit-content; - border: 1px solid - ${({ $isSelected, theme }) => - $isSelected ? theme.buttonScheme.primary.bg : theme.color.border}; - border-radius: ${({ theme }) => theme.borderRadius.primary}; - padding: 0.2rem 0.4rem; - color: ${({ $isSelected, theme }) => $isSelected && theme.color.white}; + background-color: ${({ $isSelected, theme }) => + $isSelected ? theme.buttonScheme.primary.bg : theme.color.lightgrey}; + width: fit-content; + border: 1px solid + ${({ $isSelected, theme }) => + $isSelected ? theme.buttonScheme.primary.bg : theme.color.border}; + border-radius: ${({ theme }) => theme.borderRadius.primary}; + padding: 0.3rem 0.4rem; + color: ${({ $isSelected, theme }) => $isSelected && theme.color.white}; - cursor: pointer; - transition: all 0.2s; + cursor: pointer; + transition: all 0.2s; - ${({ $isHover }) => - $isHover && - ` + ${({ $isHover }) => + $isHover && + ` &:hover { transform: scale(1.1); transition: all 100ms ease-in-out; } `} - } `; diff --git a/src/components/common/positionButton/PositionButton.tsx b/src/components/common/positionButton/PositionButton.tsx index 30c64d81..6d6141c3 100644 --- a/src/components/common/positionButton/PositionButton.tsx +++ b/src/components/common/positionButton/PositionButton.tsx @@ -14,8 +14,10 @@ export default function PositionButton({ isHover = false, }: PositionButtonProps) { return ( - -
{position}
+ + + {position} + ); } diff --git a/src/components/common/skillTagBox/SkillTagBox.styled.ts b/src/components/common/skillTagBox/SkillTagBox.styled.ts index 956b21a0..83e6f9b3 100644 --- a/src/components/common/skillTagBox/SkillTagBox.styled.ts +++ b/src/components/common/skillTagBox/SkillTagBox.styled.ts @@ -13,33 +13,40 @@ export const Wrapper = styled.div` display: flex; flex-direction: column; gap: 1rem; - .skillTagWrapper { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - } +`; + +export const SkillTagWrapper = styled.div` + display: flex; + flex-wrap: wrap; + width: 100%; + gap: 0.5rem; +`; - .buttonWrapper { - display: flex; - justify-content: end; - .resetButton { - width: fit-content; - gap: 0.5rem; - border: 1px solid ${({ theme }) => theme.color.border}; - border-radius: 3rem; - background-color: ${({ theme }) => theme.color.white}; - padding: 0.5rem; - span { - font-size: 1.2em; - } - svg { - width: 1.2rem; - } +export const ButtonWrapper = styled.div` + display: flex; + justify-content: end; +`; - &:hover { - transform: scale(1.1); - transition: all 50ms ease-in; - } - } +export const ResetButton = styled.button` + display: flex; + justify-content: center; + align-items: center; + width: fit-content; + gap: 0.5rem; + padding: 0.5rem; + border: 1px solid ${({ theme }) => theme.color.border}; + border-radius: 3rem; + background-color: ${({ theme }) => theme.color.white}; + svg { + width: 1.1rem; } + + &:hover { + transform: scale(1.1); + transition: all 100ms ease-in; + } +`; + +export const ResetSpan = styled.span` + font-size: 1rem; `; diff --git a/src/components/common/skillTagBox/SkillTagBox.tsx b/src/components/common/skillTagBox/SkillTagBox.tsx index b07cb53e..10147a74 100644 --- a/src/components/common/skillTagBox/SkillTagBox.tsx +++ b/src/components/common/skillTagBox/SkillTagBox.tsx @@ -26,7 +26,7 @@ export default function SkillTagBox({ {Boolean(skillTagsData.length) && ( -
+ {skillTagsData?.map((skillTagData) => ( ))} -
+ {isMain && Boolean(searchFiltersSkillTag?.length) && ( -
- -
+ 초기화 + + )}
)} diff --git a/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.styled.ts b/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.styled.ts index e9321415..f0483ce1 100644 --- a/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.styled.ts +++ b/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.styled.ts @@ -4,10 +4,11 @@ import { SkillTagImgProps } from './SkillTagImg'; export const Wrapper = styled.div>` background-color: ${({ theme }) => theme.color.white}; border-radius: 50%; - img { - width: 2.2rem; - border-radius: 50%; - border: 1px solid - ${({ theme, $select }) => ($select ? 'none' : theme.color.border)}; - } +`; + +export const SkillImg = styled.img>` + width: 2.2rem; + border-radius: 50%; + border: 1px solid + ${({ theme, $select }) => ($select ? 'none' : theme.color.border)}; `; diff --git a/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.tsx b/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.tsx index a8d1297c..924444a3 100644 --- a/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.tsx +++ b/src/components/common/skillTagBox/skillTag/skillTagImg/SkillTagImg.tsx @@ -14,7 +14,7 @@ export default function SkillTagImg({ }: SkillTagImgProps) { return ( - {skillTag} + ); } diff --git a/src/components/home/banner/Banner.styled.ts b/src/components/home/banner/Banner.styled.ts index fcc6f293..68a10ac3 100644 --- a/src/components/home/banner/Banner.styled.ts +++ b/src/components/home/banner/Banner.styled.ts @@ -2,8 +2,8 @@ import styled from 'styled-components'; export const Container = styled.section` margin-top: 2rem; +`; - img { - width: 100%; - } +export const BannerImg = styled.img` + width: 100%; `; diff --git a/src/components/home/banner/Banner.tsx b/src/components/home/banner/Banner.tsx index df690347..25e7107f 100644 --- a/src/components/home/banner/Banner.tsx +++ b/src/components/home/banner/Banner.tsx @@ -4,7 +4,7 @@ import banner from '../../../assets/banner.svg'; export default function Banner() { return ( - banner1 + ); } diff --git a/src/components/home/projectCardLists/ProjectCardLists.styled.ts b/src/components/home/projectCardLists/ProjectCardLists.styled.ts index d8f67334..90d295e4 100644 --- a/src/components/home/projectCardLists/ProjectCardLists.styled.ts +++ b/src/components/home/projectCardLists/ProjectCardLists.styled.ts @@ -1,11 +1,7 @@ import styled from 'styled-components'; -export const Container = styled.div` +export const Container = styled.section` width: 100%; - /* height: 115.2rem; */ - h1 { - padding: 4rem 0 2rem 0; - } `; export const Wrapper = styled.div<{ $flex: boolean }>` @@ -15,3 +11,9 @@ export const Wrapper = styled.div<{ $flex: boolean }>` place-items: ${({ $flex }) => ($flex ? '' : 'center')}; gap: 3rem; `; + +export const CardListTitleWrapper = styled.div``; + +export const CardListTitle = styled.h1` + padding: 4rem 0 2rem 0; +`; diff --git a/src/components/home/projectCardLists/ProjectCardLists.tsx b/src/components/home/projectCardLists/ProjectCardLists.tsx index e84768d6..d33b568a 100644 --- a/src/components/home/projectCardLists/ProjectCardLists.tsx +++ b/src/components/home/projectCardLists/ProjectCardLists.tsx @@ -23,9 +23,9 @@ export default function ProjectCardLists() { return ( -
-

프로젝트 리스트

-
+ + 프로젝트 리스트 + {projectListsData && Boolean(projectListsData.projects.length) ? ( projectListsData.projects.map((list) => ( diff --git a/src/components/home/projectCardLists/cardList/CardList.styled.ts b/src/components/home/projectCardLists/cardList/CardList.styled.ts index e174ffaa..506b76dd 100644 --- a/src/components/home/projectCardLists/cardList/CardList.styled.ts +++ b/src/components/home/projectCardLists/cardList/CardList.styled.ts @@ -1,6 +1,6 @@ import styled from 'styled-components'; -export const Container = styled.div` +export const Container = styled.article` position: relative; cursor: pointer; width: 22.4rem; @@ -12,86 +12,52 @@ export const Container = styled.div` display: flex; flex-direction: column; gap: 1rem; +`; - .deadLine { - color: #3c3c3c; - font-size: 0.9rem; - } - - .title { - height: 4rem; - font-size: 1.25rem; - font-weight: bold; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - } +export const Deadline = styled.div` + color: #3c3c3c; + font-size: 0.9rem; +`; - .position { - display: flex; - flex-direction: column; - flex-wrap: wrap; - gap: 0.5rem; - } +export const Title = styled.div` + height: 4rem; + font-size: 1.25rem; + font-weight: bold; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +`; - .positionTitle { - font-weight: 600; - font-size: 0.9rem; - color: #5f5f5f; - } +export const PositionWrapper = styled.div` + display: flex; + flex-direction: column; + flex-wrap: wrap; + gap: 0.5rem; +`; - .skillTag, - .positionTags { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - position: relative; - } +export const PositionTitle = styled.div` + font-weight: 600; + font-size: 0.9rem; + color: #5f5f5f; +`; - .positionTags { - font-size: 0.8rem; - } +export const TagsWrapper = styled.div` + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + position: relative; +`; - .info { - display: flex; - justify-content: space-between; - align-items: center; - width: 100%; - - .nickname { - display: flex; - align-items: center; - gap: 0.5rem; - - span { - font-size: 0.95rem; - font-weight: 500; - color: #646464; - } - } - .etc { - display: flex; - align-items: end; - gap: 0.5rem; - img { - width: 2rem; - } - .view { - display: flex; - gap: 0.3rem; - - svg { - width: 1.3rem; - color: #5f5f5f; - } - span { - flex-direction: row; - color: #5f5f5f; - } - } - } - } +export const TagWrapper = styled.div<{ $positionPadding?: boolean }>` + background-color: ${({ theme }) => theme.color.white}; + position: absolute; + display: flex; + flex-wrap: wrap; + border-radius: ${({ theme }) => theme.borderRadius.primary}; + padding-bottom: ${({ $positionPadding }) => ($positionPadding ? '1rem' : '')}; + gap: 0.5rem; + z-index: 10; `; export const EllipsisIcon = styled.button<{ $hiddenIcon: boolean }>` @@ -110,13 +76,46 @@ export const EllipsisIcon = styled.button<{ $hiddenIcon: boolean }>` } `; -export const TagWrapper = styled.div<{ $positionPadding?: boolean }>` - background-color: ${({ theme }) => theme.color.white}; - position: absolute; +export const InfoWrapper = styled.div` display: flex; - flex-wrap: wrap; - border-radius: ${({ theme }) => theme.borderRadius.primary}; - padding-bottom: ${({ $positionPadding }) => ($positionPadding ? '1rem' : '')}; + justify-content: space-between; + align-items: center; + width: 100%; +`; + +export const ProfileWrapper = styled.div` + display: flex; + align-items: center; gap: 0.5rem; - z-index: 10; +`; + +export const NickName = styled.span` + font-size: 0.95rem; + font-weight: 500; + color: #646464; +`; + +export const StatusWrapper = styled.div` + display: flex; + align-items: end; + gap: 0.5rem; +`; + +export const BeginnerImg = styled.img` + width: 2rem; +`; + +export const ViewWrapper = styled.div` + display: flex; + gap: 0.3rem; + + svg { + width: 1.3rem; + color: #5f5f5f; + } +`; + +export const ViewCount = styled.span` + flex-direction: row; + color: #5f5f5f; `; diff --git a/src/components/home/projectCardLists/cardList/CardList.tsx b/src/components/home/projectCardLists/cardList/CardList.tsx index d6190427..6fc1f6c0 100644 --- a/src/components/home/projectCardLists/cardList/CardList.tsx +++ b/src/components/home/projectCardLists/cardList/CardList.tsx @@ -27,15 +27,11 @@ export default function CardList({ list }: CardListProps) { return ( -
- 마감일: {formatDate(list.recruitmentEndDate)} -
-
- {list.title} -
-
-
모집 분야
-
+ 마감일: {formatDate(list.recruitmentEndDate)} + {list.title} + + 모집 분야 + {Boolean(list.positionTags.length) && listPositionTag.map((tag) => ( @@ -56,9 +52,9 @@ export default function CardList({ list }: CardListProps) { )} -
-
-
+ + + {Boolean(list.skillTags.length) && listSkillTag.map((tag) => ( @@ -79,20 +75,20 @@ export default function CardList({ list }: CardListProps) { )} -
-
-
+ + + - {list.User.nickname} -
-
- {list.isBeginner && plant} -
+ {list.User.nickname} + + + {list.isBeginner && } + - {list.views} -
-
-
+ {list.views} + + +
); } diff --git a/src/components/home/projectCardLists/pagination/Pagination.styled.ts b/src/components/home/projectCardLists/pagination/Pagination.styled.ts index 06ada207..1a17006a 100644 --- a/src/components/home/projectCardLists/pagination/Pagination.styled.ts +++ b/src/components/home/projectCardLists/pagination/Pagination.styled.ts @@ -1,26 +1,22 @@ import styled from 'styled-components'; -export const Container = styled.div` +export const Container = styled.nav` display: flex; justify-content: center; padding: 3rem 0; `; export const Wrapper = styled.div` - .paginationWrapper { - display: flex; - gap: 1rem; + display: flex; + gap: 1rem; - svg { - width: 1.5rem; - } - .doubleButton { - font-size: 1.1rem; - font-weight: 500; - } + svg { + width: 1.5rem; } `; +export const PaginationWrapper = styled.div``; + export const Pagination = styled.button<{ $select: boolean }>` display: flex; justify-content: center; @@ -34,3 +30,10 @@ export const Pagination = styled.button<{ $select: boolean }>` $select ? theme.color.navy : 'initial'}; color: ${({ $select, theme }) => ($select ? theme.color.white : 'initial')}; `; + +export const PaginationButton = styled.button``; + +export const PaginationDoubleButton = styled.button` + font-size: 1.1rem; + font-weight: 500; +`; diff --git a/src/components/home/projectCardLists/pagination/Pagination.tsx b/src/components/home/projectCardLists/pagination/Pagination.tsx index a95b3570..424963a8 100644 --- a/src/components/home/projectCardLists/pagination/Pagination.tsx +++ b/src/components/home/projectCardLists/pagination/Pagination.tsx @@ -64,47 +64,47 @@ export default function Pagination() { return ( - -
- {currentPage !== 1 && ( - <> - - - - - )} + + {currentPage !== 1 && ( + <> + handleUpdateFilters('page', lastPage)} + > + + + handleChevronClick('pageFirst')} + > + 1 + + + + )} - {pagination.map((pageIndex) => ( - ( + + {pageIndex} + + ))} + {currentPage !== lastPage && ( + <> + + handleChevronClick('pageEnd')} > - {pageIndex} - - ))} - {currentPage !== lastPage && ( - <> - - - - - )} -
+ {lastPage} + + handleChevronClick('pageNext')}> + + + + )}
); diff --git a/src/components/home/projectStats/projectStat/ProjectStat.styled.ts b/src/components/home/projectStats/projectStat/ProjectStat.styled.ts index 19d0ce24..9b190efc 100644 --- a/src/components/home/projectStats/projectStat/ProjectStat.styled.ts +++ b/src/components/home/projectStats/projectStat/ProjectStat.styled.ts @@ -1,27 +1,28 @@ import styled from 'styled-components'; -export const Container = styled.div` +export const Container = styled.section` display: flex; justify-content: center; flex: 1; padding-left: 1.25rem; align-items: center; gap: 1rem; +`; + +export const Border = styled.div` + width: 0.3rem; + height: 4rem; + background-color: ${({ theme }) => theme.color.navy}; +`; - .border { - width: 0.3rem; - height: 4rem; - background-color: ${({ theme }) => theme.color.navy}; - } +export const StatWrapper = styled.div``; + +export const StatNumber = styled.div` + font-size: 2rem; + font-weight: bold; +`; - .stat { - .number { - font-size: 2rem; - font-weight: bold; - } - .title { - font-size: 1.25rem; - font-weight: 500; - } - } +export const StatTitle = styled.div` + font-size: 1.25rem; + font-weight: 500; `; diff --git a/src/components/home/projectStats/projectStat/ProjectStat.tsx b/src/components/home/projectStats/projectStat/ProjectStat.tsx index ca908c01..604e3da0 100644 --- a/src/components/home/projectStats/projectStat/ProjectStat.tsx +++ b/src/components/home/projectStats/projectStat/ProjectStat.tsx @@ -8,11 +8,11 @@ interface ProjectStatProps { export default function ProjectStat({ title, count }: ProjectStatProps) { return ( -
-
-
{count}
-
{title}
-
+ + + {count} + {title} +
); } diff --git a/src/components/home/searchFiltering/SearchFiltering.styled.ts b/src/components/home/searchFiltering/SearchFiltering.styled.ts index ffabb1d0..01f47866 100644 --- a/src/components/home/searchFiltering/SearchFiltering.styled.ts +++ b/src/components/home/searchFiltering/SearchFiltering.styled.ts @@ -1,8 +1,8 @@ import styled from 'styled-components'; -export const Container = styled.section``; +export const Container = styled.nav``; -export const Wrapper = styled.nav` +export const Wrapper = styled.div` display: flex; justify-content: space-between; align-items: center; diff --git a/src/components/home/searchFiltering/filteringContents/FilteringContents.styled.ts b/src/components/home/searchFiltering/filteringContents/FilteringContents.styled.ts index f7148981..7d63ea25 100644 --- a/src/components/home/searchFiltering/filteringContents/FilteringContents.styled.ts +++ b/src/components/home/searchFiltering/filteringContents/FilteringContents.styled.ts @@ -17,48 +17,47 @@ export const Container = styled.div` border-radius: 1.5rem; } - .filteringButton { - button { - border-radius: 1.5rem; - width: 100%; - height: 100%; - padding: 0 1rem; - display: flex; - justify-content: space-between; - align-items: center; - } - } - - .beginnerButton { - button { - display: flex; - align-items: center; - padding: 0 1.5rem; - } - } - svg { width: 1rem; } +`; - .skillTagBox { - width: 100%; - height: 100%; - border: none; - position: absolute; - top: 110%; - } +export const SkillTagButtonWrapper = styled.div``; + +export const SkillTagButton = styled.button` + border-radius: 1.5rem; + width: 100%; + height: 100%; + padding: 0 1rem; + display: flex; + justify-content: space-between; + align-items: center; +`; + +export const SkillTagBoxWrapper = styled.div` + width: 100%; + height: 100%; + border: none; + position: absolute; + top: 110%; `; -export const BeginnerDiv = styled.div<{ $toggle: boolean | null }>` +export const BeginnerButtonWrapper = styled.div<{ $toggle: boolean | null }>` outline: 1px solid ${({ theme, $toggle }) => ($toggle ? theme.color.navy : 'initial')}; border: 1px solid ${({ theme, $toggle }) => ($toggle ? theme.color.navy : 'initial')}; transition: all 100ms ease-in-out; +`; - button { - color: ${({ theme, $toggle }) => ($toggle ? theme.color.navy : 'initial')}; - font-weight: ${({ $toggle }) => ($toggle ? 'bold' : 'initial')}; - } +export const BeginnerButton = styled.button<{ $toggle: boolean | null }>` + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 1.5rem; + color: ${({ theme, $toggle }) => ($toggle ? theme.color.navy : 'initial')}; + font-weight: ${({ $toggle }) => ($toggle ? 'bold' : 'initial')}; `; + +export const BeginnerImg = styled.img``; diff --git a/src/components/home/searchFiltering/filteringContents/FilteringContents.tsx b/src/components/home/searchFiltering/filteringContents/FilteringContents.tsx index 3816f14e..479f1d80 100644 --- a/src/components/home/searchFiltering/filteringContents/FilteringContents.tsx +++ b/src/components/home/searchFiltering/filteringContents/FilteringContents.tsx @@ -39,21 +39,21 @@ export default function FilteringContents() { return ( -
- + {skillTagButtonToggle && ( -
+ -
+ )} -
+ - - - + + +
); } diff --git a/src/components/home/searchFiltering/filteringContents/filtering/Filtering.styled.ts b/src/components/home/searchFiltering/filteringContents/filtering/Filtering.styled.ts index 36822751..1380857a 100644 --- a/src/components/home/searchFiltering/filteringContents/filtering/Filtering.styled.ts +++ b/src/components/home/searchFiltering/filteringContents/filtering/Filtering.styled.ts @@ -5,43 +5,47 @@ export const Container = styled.div``; export const Wrapper = styled.div` height: 100%; width: 100%; - .refWrapper { - height: 100%; - display: flex; - justify-content: center; - align-items: center; - position: relative; - border-radius: 1.5rem; +`; - .defaultValue { - width: 100%; - height: 100%; - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 1rem; - border-radius: 1.5rem; - } +export const RefWrapper = styled.div` + height: 100%; + display: flex; + justify-content: center; + align-items: center; + position: relative; + border-radius: 1.5rem; +`; + +export const DefaultValueButton = styled.button` + width: 100%; + height: 100%; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 1rem; + border-radius: 1.5rem; +`; - .select { - width: 100%; - border: 1px solid ${({ theme }) => theme.color.border}; - border-radius: 0.5rem; - position: absolute; - top: 2.8rem; - cursor: pointer; - overflow: hidden; - background-color: ${({ theme }) => theme.color.white}; +export const SelectWrapper = styled.div` + width: 100%; + border: 1px solid ${({ theme }) => theme.color.border}; + border-radius: 0.5rem; + position: absolute; + top: 2.8rem; + cursor: pointer; + overflow: hidden; + background-color: ${({ theme }) => theme.color.white}; +`; - .option { - text-align: initial; - padding: 0.5rem; +export const SelectButton = styled.button` + width: 100%; + display: block; + font-size: 01rem; + text-align: initial; + padding: 0.5rem; - &:hover { - background-color: ${({ theme }) => theme.color.navy}; - color: ${({ theme }) => theme.color.white}; - } - } - } + &:hover { + background-color: ${({ theme }) => theme.color.navy}; + color: ${({ theme }) => theme.color.white}; } `; diff --git a/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx b/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx index 1588802a..18319211 100644 --- a/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx +++ b/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx @@ -68,25 +68,25 @@ export default function Filtering({ selects, defaultValue }: FilteringProps) { return ( -
- + {dropDownToggle && ( -
+ {addAll.map((select) => ( -
handleValueClick(select.name, select.id)} > {select.name} -
+ ))} -
+ )} -
+
); diff --git a/src/components/home/searchFiltering/search/Search.styled.ts b/src/components/home/searchFiltering/search/Search.styled.ts index 9a43d804..9f2710a8 100644 --- a/src/components/home/searchFiltering/search/Search.styled.ts +++ b/src/components/home/searchFiltering/search/Search.styled.ts @@ -13,23 +13,26 @@ export const Wrapper = styled.div` width: 100%; display: flex; align-items: center; - form { - width: 100%; - display: flex; - justify-content: space-between; - padding: 0 1.2rem; - input { - width: 100%; - } +`; + +export const SearchForm = styled.form` + width: 100%; + display: flex; + justify-content: space-between; + padding: 0 1.2rem; +`; + +export const SearchInput = styled.input` + width: 100%; +`; + +export const ButtonWrapper = styled.div` + display: flex; + gap: 0.4rem; +`; - .buttonWrapper { - display: flex; - gap: 0.4rem; - .searchIcon { - svg { - width: 1.6rem; - } - } - } +export const SearchButton = styled.button` + svg { + width: 1.6rem; } `; diff --git a/src/components/home/searchFiltering/search/Search.tsx b/src/components/home/searchFiltering/search/Search.tsx index 3889586f..7b72b7d1 100644 --- a/src/components/home/searchFiltering/search/Search.tsx +++ b/src/components/home/searchFiltering/search/Search.tsx @@ -23,28 +23,25 @@ export default function Search() { return ( -
- + -
+ {searchFilters.keyword && ( - + )} - -
- + + +
); diff --git a/src/context/SearchFilteringContext.tsx b/src/context/SearchFilteringContext.tsx index bd0589dc..b023b873 100644 --- a/src/context/SearchFilteringContext.tsx +++ b/src/context/SearchFilteringContext.tsx @@ -1,4 +1,4 @@ -import { createContext, PropsWithChildren, useEffect, useState } from 'react'; +import { createContext, PropsWithChildren, useState } from 'react'; import type { SearchFilters } from '../models/SearchFilters'; type SearchFilteringKey = @@ -73,10 +73,6 @@ export function SearchFilteringProvider({ children }: PropsWithChildren) { }); }; - useEffect(() => { - console.log('searchFilters', searchFilters); - }, [searchFilters]); - return ( { const { searchFilters } = useSaveSearchFiltering(); @@ -9,7 +9,7 @@ export const useProjectCardListData = () => { data: projectListsData, } = useQuery({ queryKey: ['searchFilters', searchFilters], - queryFn: () => fetchProjectLists(searchFilters), + queryFn: () => getProjectLists(searchFilters), }); return { diff --git a/src/hooks/useProjectStatistic.ts b/src/hooks/useProjectStatistic.ts index e1d192cd..fdc9d383 100644 --- a/src/hooks/useProjectStatistic.ts +++ b/src/hooks/useProjectStatistic.ts @@ -1,5 +1,5 @@ import { useQuery } from '@tanstack/react-query'; -import { fetchProjectStatistic } from '../api/projectLists.api'; +import { getProjectStatistic } from '../api/projectLists.api'; import { useEffect, useState } from 'react'; interface ProjectStatDataReset { @@ -15,7 +15,7 @@ export const useProjectStatistic = () => { // 실시간성 데이터가 필요할까? const { data } = useQuery({ queryKey: ['projectStat'], - queryFn: async () => await fetchProjectStatistic(), + queryFn: async () => await getProjectStatistic(), staleTime: Infinity, gcTime: Infinity, }); diff --git a/src/hooks/useSearchFilteringSkillTag.ts b/src/hooks/useSearchFilteringSkillTag.ts index 357952e4..10203fa5 100644 --- a/src/hooks/useSearchFilteringSkillTag.ts +++ b/src/hooks/useSearchFilteringSkillTag.ts @@ -1,9 +1,9 @@ import { - fetchMethodTag, - fetchPositionTag, + getMethodTag, + getPositionTag, } from './../api/projectSearchFiltering.api'; import { useQueries } from '@tanstack/react-query'; -import { fetchSkillTag } from '../api/projectSearchFiltering.api'; +import { getSkillTag } from '../api/projectSearchFiltering.api'; import { useEffect, useState } from 'react'; import type { MethodTag, PositionTag, SkillTag } from '../models/tags'; @@ -16,19 +16,19 @@ export const useSearchFilteringSkillTag = () => { queries: [ { queryKey: ['skillTagsData', skillTagsData], - queryFn: async () => await fetchSkillTag(), + queryFn: async () => await getSkillTag(), staleTime: Infinity, gcTime: Infinity, }, { queryKey: ['positionsData', positionTagsData], - queryFn: async () => await fetchPositionTag(), + queryFn: async () => await getPositionTag(), staleTime: Infinity, gcTime: Infinity, }, { queryKey: ['fetchMethodTag', methodTagsData], - queryFn: async () => await fetchMethodTag(), + queryFn: async () => await getMethodTag(), staleTime: Infinity, gcTime: Infinity, }, diff --git a/src/mock/browser.ts b/src/mock/browser.ts index e9a841ec..555a74fe 100644 --- a/src/mock/browser.ts +++ b/src/mock/browser.ts @@ -15,8 +15,19 @@ import { myPageSkillTag, } from './mypage'; import { userPageAppliedProjectList, userPageProfile } from './userpage'; +import { fetchProjectLists, fetchProjectStatistic } from './projectLists'; +import { + fetchMethodTag, + fetchPositionTag, + fetchSkillTag, +} from './projectSearchFiltering'; export const handlers = [ + fetchProjectLists, + fetchProjectStatistic, + fetchMethodTag, + fetchPositionTag, + fetchSkillTag, passNonPassList, myProjectList, applicantList, diff --git a/src/mock/projectLists.ts b/src/mock/projectLists.ts new file mode 100644 index 00000000..30a52759 --- /dev/null +++ b/src/mock/projectLists.ts @@ -0,0 +1,21 @@ +import { HttpResponse, http } from 'msw'; +import count from '../../public/data/count.json'; +import project from '../../public/data/project.json'; + +export const fetchProjectLists = http.get( + `${import.meta.env.VITE_API_BASE_URL}/project`, + () => { + return HttpResponse.json(project, { + status: 200, + }); + } +); + +export const fetchProjectStatistic = http.get( + `${import.meta.env.VITE_API_BASE_URL}/project/count`, + () => { + return HttpResponse.json(count, { + status: 200, + }); + } +); diff --git a/src/mock/projectSearchFiltering.ts b/src/mock/projectSearchFiltering.ts new file mode 100644 index 00000000..f016b047 --- /dev/null +++ b/src/mock/projectSearchFiltering.ts @@ -0,0 +1,30 @@ +import { HttpResponse, http } from 'msw'; +import skill from '../../public/data/skill.json'; +import position from '../../public/data/position.json'; +import method from '../../public/data/method.json'; + +export const fetchSkillTag = http.get( + `${import.meta.env.VITE_API_BASE_URL}/skill-tag`, + () => { + return HttpResponse.json(skill, { + status: 200, + }); + } +); +export const fetchPositionTag = http.get( + `${import.meta.env.VITE_API_BASE_URL}/position-tag`, + () => { + return HttpResponse.json(position, { + status: 200, + }); + } +); + +export const fetchMethodTag = http.get( + `${import.meta.env.VITE_API_BASE_URL}/method`, + () => { + return HttpResponse.json(method, { + status: 200, + }); + } +);