-
Notifications
You must be signed in to change notification settings - Fork 10
[4주차] 김민서 과제 제출합니다. #20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
minseo0614
wants to merge
67
commits into
CEOS-Developers:master
Choose a base branch
from
minseo0614:minseo
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
67 commits
Select commit
Hold shift + click to select a range
919e65e
[CHORE] 초기 세팅
minseo0614 1b8d8b8
[CHORE] 프로젝트 초기 파일 구조 설정
minseo0614 dde1a1a
[CHORE] 디자인 토큰 초기 설정
minseo0614 9428f2f
[FEAT] 앱 하단 네비게이션 바 UI 구현
minseo0614 fccca1d
[FEAT] useState 기반 하단 네비게이션 화면 전환 구현
minseo0614 d66b9b8
[FEAT] 채팅 목록 상단 헤더 UI 구현
minseo0614 d258af8
[FEAT] Avatar, CountBadge 공통 컴포넌트 구현
minseo0614 e8bb428
[FEAT] 채팅 목록 리스트 UI 구현
minseo0614 ae4a1a1
[FEAT] 채팅 목록에서 채팅방 진입 및 뒤로가기 기능 구현
minseo0614 0667c52
[FEAT] 채팅방 헤더 UI 구현
minseo0614 c73f0fc
[FEAT] 메시지 입력창 UI 구현
minseo0614 e34b2e8
[FEAT] MessageBubble 컴포넌트 구현
minseo0614 0224a28
[FEAT] MessageLine, DateDivider 컴포넌트 구현
minseo0614 24e2ab8
[FEAT] 메시지 타입 정의 및 샘플 데이터 추가
minseo0614 2d0c4c5
[FEAT] 채팅방 메시지 데이터 연동
minseo0614 9926fed
[FIX] 메시지 컴포넌트 수정
minseo0614 8fa5ffe
[FEAT] 메시지 전송 기능 구현
minseo0614 a45c251
[FEAT] 유저 전환 기능 구현
minseo0614 e4a2870
[FEAT] localStorage 기반 메시지 저장
minseo0614 ec1729e
[REFACTOR] 중복 타입 정의 및 import 경로 정리
minseo0614 412d84c
[REFACTOR] 미사용 변수 삭제 및 중복 로직 정리
minseo0614 f734c51
[FEAT] 채팅 목록 데이터 기반 렌더링 및 localStorage 연동
minseo0614 620ab3c
chore: redeploy
minseo0614 8d4df1a
[FIX] 파일명 대소문자 수정
minseo0614 966107b
[FIX] DM 헤더 아이콘 크기 수정
minseo0614 104f091
[FIX] 채팅 목록 상단 4개만 핀 표시
minseo0614 6a9db36
[FIX] 네비게이션 선택 아이콘 색상 수정
minseo0614 5721fd5
[FIX] 채팅 목록 마지막 대화 텍스트 최대 너비 제한
minseo0614 9a6a63f
[FIX] 메시지 인풋 창 배경 및 스타일 수정
minseo0614 ca99810
[FIX] 프로필 상태 아이콘 조정
minseo0614 84f4e0e
[FIX] 채팅방 아바타, 상태 아이콘, 헤더 스타일 수정
minseo0614 033307e
[FIX] 메시지 인풋 클릭 시 자동 포커스
minseo0614 6f7a599
[FIX] navigation 타입 파일 복원
minseo0614 b4eb4f8
[FIX] 아바타-말풍선 간격 조정
minseo0614 6c99ce5
[FEAT] 채팅 목록 아이템 호버/프레스드 상태 적용
minseo0614 752b95a
[FEAT] React Router 도입 및 페이지 라우팅 적용
minseo0614 a07e99b
[FEAT] 홈 페이지 라우트 및 헤더 컴포넌트 추가
minseo0614 fba6f40
[FEAT] UpdateCard 컴포넌트 추가
minseo0614 bf51e93
[FEAT] Draft 아이콘 및 UpdateSection 컴포넌트 추가
minseo0614 907db38
[FEAT] 홈 페이지에 새로운 업데이트 섹션 연결
minseo0614 b670b00
[FEAT] 토픽/팀원 목록 섹션용 아이콘 정리
minseo0614 cf9c63f
[FEAT] CollapsibleSectionHeader 컴포넌트 추가
minseo0614 34841d7
[FEAT] 홈 페이지에 토픽/팀원 목록 섹션 헤더 추가
minseo0614 f09b289
[FEAT] CollapsibleSectionHeader 토글 prop 추가
minseo0614 6cd5422
[FEAT] MemberItem 컴포넌트 추가
minseo0614 91fd3c2
[FEAT] MemberList 컴포넌트 추가
minseo0614 a972b61
[FEAT] 팀원 목록 아코디언 펼침 동작 구현
minseo0614 5a24724
[FIX] 팀원 목록 토글 시 헤더 텍스트 위치 고정
minseo0614 ad045d5
[FEAT] me 유저 프로필 데이터 추가
minseo0614 a31f2b5
[FEAT] 프로필 페이지 라우트 및 네비게이션 추가
minseo0614 9b4cf10
[FEAT] ProfileHeader 컴포넌트 추가
minseo0614 63a1413
[FEAT] 프로필 페이지에 프로필 요약 연결
minseo0614 f3a3249
[FEAT] StatusRow 컴포넌트 추가
minseo0614 9b8ca2a
[FEAT] 프로필 페이지에 상태 행 연결
minseo0614 c822c4d
[FEAT] ProfileActionCard 컴포넌트 추가
minseo0614 e488372
[FEAT] 프로필 페이지에 액션 카드 두 개 연결
minseo0614 7c25ac7
[FEAT] IconTextRow 공통 컴포넌트 추가
minseo0614 5af6c8b
[FEAT] ContactSection 컴포넌트 추가
minseo0614 6e09b8a
[FEAT] 프로필 페이지에 연락처 섹션 연결
minseo0614 4b5a865
[FIX] IconTextRow 아이콘-텍스트 간격 12px로 수정
minseo0614 3d8a3fd
[FEAT] SlackInfoSection 컴포넌트 추가
minseo0614 a26ec5c
[FEAT] 프로필 페이지에 Slack 정보 섹션 연결 및 gap 수정
minseo0614 d42009d
[FIX] IconTextRow description 폰트를 c2_11_r로 수정
minseo0614 65a7cad
[FIX] HomeHeader 우측 프로필 수정
minseo0614 23346b1
[FIX] UpdateSection 하단 구분선 추가
minseo0614 0c0a283
[FIX] 메세지 전송 오류 해결
minseo0614 7607534
[CHORE] Vercel 재배포 트리거
minseo0614 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| # Logs | ||
| logs | ||
| *.log | ||
| npm-debug.log* | ||
| yarn-debug.log* | ||
| yarn-error.log* | ||
| pnpm-debug.log* | ||
| lerna-debug.log* | ||
|
|
||
| node_modules | ||
| dist | ||
| dist-ssr | ||
| *.local | ||
|
|
||
| # Editor directories and files | ||
| .vscode/* | ||
| !.vscode/extensions.json | ||
| .idea | ||
| .DS_Store | ||
| *.suo | ||
| *.ntvs* | ||
| *.njsproj | ||
| *.sln | ||
| *.sw? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| node_modules | ||
| dist |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| { | ||
| "semi": false, | ||
| "singleQuote": true, | ||
| "trailingComma": "all" | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,84 +1,73 @@ | ||
| # **서론** | ||
|
|
||
| 안녕하세요 😻 | ||
| 23기 프론트엔드 운영진 원채영입니다. | ||
|
|
||
| 이번 주에는 투두리스트를 넘어, 새로운 프로젝트인 **Messenger** 구현을 진행합니다. | ||
|
|
||
| 이번 과제는 디자이너와 협업하여 진행되는 프로젝트로, | ||
| 디자인 파트에서 리디자인한 메신저 화면을 직접 구현해보는 경험을 하게 됩니다. | ||
|
|
||
| 또한, 이번 주부터는 **TypeScript**와 **Tailwind CSS**를 필수로 적용하여 개발을 진행합니다. | ||
|
|
||
| 프로젝트 규모가 커질수록 컴포넌트의 props도 점점 복잡해지는데요, | ||
| 이때 TypeScript를 활용하면 props의 구조와 타입을 명확하게 관리할 수 있고, | ||
| 자동완성을 통해 개발 생산성을 높일 수 있습니다. | ||
|
|
||
| 아울러, 이번 과제에서는 **React Hooks**에 더욱 익숙해지는 것을 목표로 합니다. | ||
| 특히 useState, useEffect, useRef를 중심으로 활용해보며, React에서 자주 사용되는 핵심 개념을 확실히 익혀보시길 바랍니다. | ||
|
|
||
| 그럼 이번 과제도 파이팅입니다!! 🎉 | ||
|
|
||
|
|
||
| # **과제** | ||
|
|
||
| ## **목표** | ||
|
|
||
| - TypeScript를 사용해봅시다. | ||
| - useState로 컴포넌트의 상태를 관리합니다. | ||
| - useEffect와 useRef의 사용법을 이해합니다. | ||
| - Tailwind CSS의 사용법에 익숙해집니다. | ||
|
|
||
| ## **기한** | ||
|
|
||
| - 2026년 3월 28일 토요일 23:59까지 | ||
|
|
||
| ## **Review Questions** | ||
|
|
||
| - 디자이너와 협업하며 전달받은 자료 | ||
| (피그마 링크, 캡처본, 커뮤니케이션 과정 등) | ||
|
|
||
| - JSX / JS / TSX / TS의 개념과 각각의 차이점, 사용 이유 | ||
|
|
||
| - TypeScript를 사용하는 이유 | ||
|
|
||
| - SSR과 CSR의 개념 및 차이점 | ||
|
|
||
|
|
||
| ## **필수 구현 기능** | ||
|
|
||
| - 피그마 **Dev Mode**를 통해, 매칭된 디자인 파트원의 UI를 구현합니다. | ||
| - [🔗 예시 1](https://react-messenger-21th-kwondu.vercel.app/) | ||
| - [🔗 예시 2](https://react-messenger-21th-nine.vercel.app/) | ||
| - 디자인 시스템을 구축합니다. | ||
| - tailwind CSS를 사용합니다. | ||
| - 메세지를 보내면 채팅방 하단으로 스크롤을 이동시킵니다. | ||
| - 메세지에 유저 정보(프로필 사진, 이름)를 표시합니다. | ||
| - user와 message 데이터를 json 파일에 저장합니다. | ||
| - UI는 **반응형을 제외**하고 피그마파일을 따라서 진행합니다. | ||
|
|
||
| ### **추가 구현 기능** | ||
|
|
||
| - 채팅방 상단의 프로필을 클릭하면 사용자를 변경할 수 있습니다. | ||
| - 더블 클릭 하면 감정표현을 추가합니다. | ||
| - 그 외 추가하고 싶은 기능이 있다면 마음껏 추가해 주세요! | ||
|
|
||
| <br/> | ||
|
|
||
| 이번 과제는 다음 과제까지 이어지는 만큼, **확장성**을 충분히 고려해 주세요. | ||
| 4주차 과제에서는 **유저 및 기능 추가**, **Routing 구현**이 진행될 예정입니다. | ||
|
|
||
| 이를 대비해, [**zustand**](https://zustand-demo.pmnd.rs/)를 활용한 상태 관리도 미리 적용해보시는 것을 추천드립니다! | ||
|
|
||
| ## **링크 및 참고자료** | ||
|
|
||
| - [React docs - Hook](https://ko.reactjs.org/docs/hooks-intro.html) | ||
| - [React의 Hooks 완벽 정복하기](https://velog.io/@velopert/react-hooks#1-usestate) | ||
| - [useEffect 완벽 가이드](https://overreacted.io/ko/a-complete-guide-to-useeffect/) | ||
| - [코딩 컨벤션](https://ui.toast.com/fe-guide/ko_CODING-CONVENTION) | ||
| - [타입스크립트 핸드북](https://joshua1988.github.io/ts/intro.html) | ||
| - [리액트 프로젝트에서 타입스크립트 사용하기 (시리즈)](https://velog.io/@velopert/series/react-with-typescript) | ||
| - [디자인 시스템 구축기](https://yozm.wishket.com/magazine/detail/1830/) | ||
| - [[영상] : 컴포넌트에 대한 이해](https://www.youtube.com/watch?v=21eiJc90ggo) | ||
| - [Tailwind CSS 장단점, 사용법](https://wonny.space/writing/dev/hello-tailwind-css) | ||
| - [ts 절대경로 설정하기](https://tesseractjh.tistory.com/232) | ||
| # React + TypeScript + Vite | ||
|
|
||
| This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. | ||
|
|
||
| Currently, two official plugins are available: | ||
|
|
||
| - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs) | ||
| - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) | ||
|
|
||
| ## React Compiler | ||
|
|
||
| The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). | ||
|
|
||
| ## Expanding the ESLint configuration | ||
|
|
||
| If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: | ||
|
|
||
| ```js | ||
| export default defineConfig([ | ||
| globalIgnores(['dist']), | ||
| { | ||
| files: ['**/*.{ts,tsx}'], | ||
| extends: [ | ||
| // Other configs... | ||
|
|
||
| // Remove tseslint.configs.recommended and replace with this | ||
| tseslint.configs.recommendedTypeChecked, | ||
| // Alternatively, use this for stricter rules | ||
| tseslint.configs.strictTypeChecked, | ||
| // Optionally, add this for stylistic rules | ||
| tseslint.configs.stylisticTypeChecked, | ||
|
|
||
| // Other configs... | ||
| ], | ||
| languageOptions: { | ||
| parserOptions: { | ||
| project: ['./tsconfig.node.json', './tsconfig.app.json'], | ||
| tsconfigRootDir: import.meta.dirname, | ||
| }, | ||
| // other options... | ||
| }, | ||
| }, | ||
| ]) | ||
| ``` | ||
|
|
||
| You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: | ||
|
|
||
| ```js | ||
| // eslint.config.js | ||
| import reactX from 'eslint-plugin-react-x' | ||
| import reactDom from 'eslint-plugin-react-dom' | ||
|
|
||
| export default defineConfig([ | ||
| globalIgnores(['dist']), | ||
| { | ||
| files: ['**/*.{ts,tsx}'], | ||
| extends: [ | ||
| // Other configs... | ||
| // Enable lint rules for React | ||
| reactX.configs['recommended-typescript'], | ||
| // Enable lint rules for React DOM | ||
| reactDom.configs.recommended, | ||
| ], | ||
| languageOptions: { | ||
| parserOptions: { | ||
| project: ['./tsconfig.node.json', './tsconfig.app.json'], | ||
| tsconfigRootDir: import.meta.dirname, | ||
| }, | ||
| // other options... | ||
| }, | ||
| }, | ||
| ]) | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| import js from '@eslint/js' | ||
| import globals from 'globals' | ||
| import reactHooks from 'eslint-plugin-react-hooks' | ||
| import reactRefresh from 'eslint-plugin-react-refresh' | ||
| import tseslint from 'typescript-eslint' | ||
| import { defineConfig, globalIgnores } from 'eslint/config' | ||
|
|
||
| export default defineConfig([ | ||
| globalIgnores(['dist']), | ||
| { | ||
| files: ['**/*.{ts,tsx}'], | ||
| extends: [ | ||
| js.configs.recommended, | ||
| tseslint.configs.recommended, | ||
| reactHooks.configs.flat.recommended, | ||
| reactRefresh.configs.vite, | ||
| ], | ||
| languageOptions: { | ||
| ecmaVersion: 2020, | ||
| globals: globals.browser, | ||
| }, | ||
| }, | ||
| ]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| <!doctype html> | ||
| <html lang="en"> | ||
| <head> | ||
| <meta charset="UTF-8" /> | ||
| <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
| <title>react-messenger-23rd</title> | ||
| </head> | ||
| <body> | ||
| <div id="root"></div> | ||
| <script type="module" src="/src/main.tsx"></script> | ||
| </body> | ||
| </html> | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
html lang 속성도 ko로 설정해주시면 좋을 것 같아요!