Skip to content
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

[4주차] 오대균 미션 제출합니다. #13

Open
wants to merge 61 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
5c61c70
feat: 프로젝트 초기 세팅
oooppq Sep 25, 2023
7a5a9f2
style: 채팅방 헤더와 입력바 스타일 적용 완료
oooppq Sep 25, 2023
91acf7c
refactor: ButtonWithIcon 스타일링 방식 변경
oooppq Sep 26, 2023
4dbbf12
style: 유저 인터렉션을 제외한 채팅방 디자인 적용 완료
oooppq Sep 26, 2023
6c885d1
feat: 메시지 input 기능 구현
oooppq Sep 26, 2023
a14a53a
feat: 메시지 input 디테일 기능 구현
oooppq Sep 27, 2023
539108b
feat: 메시지 보내기 기능 구현
oooppq Sep 27, 2023
8436912
feat: 유저 변경 기능 구현
oooppq Sep 27, 2023
6677389
feat: 메시지 좋아요 기능 구현
oooppq Sep 27, 2023
17083f1
style: 아이콘 변경사항 적용
oooppq Sep 27, 2023
c106cbe
feat: 메시지 읽음 처리 구현
oooppq Sep 27, 2023
c3ee047
refactor: messages의 전역관리 방식에서 shallow 비교 제거
oooppq Sep 27, 2023
e8f73b6
chore: readme 작성 및 dummy data 업데이트
oooppq Sep 27, 2023
19e724f
hotfix: 날짜, 시간 표현 에러 수정
oooppq Sep 27, 2023
bd04bc3
hotfix: favicon 추가
oooppq Sep 27, 2023
5bf1c77
hotfix: 좋아요 눌렀을 때, 스크롤 아래로 내려가는 버그 해결
oooppq Sep 27, 2023
e3ae9b4
hotfix: 좋아요시 발생하는 type error 해결 및 예외상황 처리
oooppq Sep 27, 2023
92e1387
hotfix: ios 환경에서 한글 버퍼가 초기화되지 않는 오류 수정
oooppq Sep 30, 2023
0fcec0c
style: 디자인 QA 적용
oooppq Oct 16, 2023
082b92c
feat: 페이지간 라우팅 적용
oooppq Oct 16, 2023
896f628
feat: navbar를 위해 라우팅 구조 변경
oooppq Oct 16, 2023
e0863b9
style: NavBar 디자인 적용
oooppq Oct 16, 2023
d73d7b1
feat: navbar 기능 구현
oooppq Oct 16, 2023
1870b31
style: 채팅목록 페이지 디자인 적용
oooppq Oct 16, 2023
4213ee5
refactor: 유저 상태 저장방식 변경
oooppq Oct 16, 2023
0b42b28
feat: 채팅목록 기능 구현 완료
oooppq Oct 16, 2023
cd0e6a0
style: 홈화면 기본 스타일 적용
oooppq Oct 23, 2023
b172d0b
style: 상태메시지 더보기 구현
oooppq Oct 23, 2023
9ba6d89
feat: 홈 페이지 기능 구현
oooppq Oct 24, 2023
7f7e6a6
refactor: 메시지의 프로필사진 로딩방식 변경
oooppq Oct 24, 2023
f619f96
style: 프로필 페이지 디자인 적용
oooppq Oct 24, 2023
186d236
feat: 프로필 페이지 기능 구현
oooppq Oct 24, 2023
629be31
hotfix: 채팅방 리스트 관련 마이너 에러 수정
oooppq Oct 24, 2023
073f8e7
style: 채팅목록 채팅썸네일 두 줄 넘어가면 ... 표시 적용
oooppq Oct 24, 2023
79274ef
hotfix: 채팅목록 시간 분 두자리수 패딩 추가
oooppq Oct 24, 2023
16de657
style: 상태메시지 줄바꿈 추가
oooppq Oct 24, 2023
1f8aab5
feat: localStorage 데이터의 버전 관리 추가
oooppq Oct 24, 2023
315e721
feat: 친구 목록 사전순으로 기본 정렬
oooppq Oct 24, 2023
4f72dfa
feat: 홈, 채팅목록 페이지 검색 기능 구현
oooppq Oct 24, 2023
a52f23d
feat: 한글 초성 검색 가능하도록 기능 구현
oooppq Oct 24, 2023
f6a0e0b
hotfix: 채팅방 날짜 타이핑오류 해결
oooppq Oct 24, 2023
0274122
chore: mock data 수정
oooppq Oct 24, 2023
fc1db63
refactor: 모든 footer position: fixed로 변경
oooppq Oct 25, 2023
e7437eb
feat: 프로필 사진 변경 기능 추가
oooppq Oct 25, 2023
bc2db28
hotfix: 채팅목록 시간 날짜 두자리 패딩 추가
oooppq Oct 25, 2023
2036c67
refactor: search bar 컴포넌트 분리
oooppq Oct 25, 2023
3f60592
feat: 새로운 채팅 기능 구현을 위한 컴포넌트 구성
oooppq Oct 25, 2023
17c666e
feat: 새로운 채팅 기능 구현 완료
oooppq Oct 25, 2023
1d052e1
refactor: 유저 전환 방식 변경
oooppq Oct 25, 2023
fade2e9
hotfix: 홈화면 상태메시지 너비 반응형으로 수정
oooppq Oct 25, 2023
59a586f
feat: username, status message 수정 기능 추가
oooppq Oct 25, 2023
8bca85a
hotfix: buttonWithIcon 컴포넌트 크기 에러 수정
oooppq Oct 25, 2023
a43cf23
feat: 프로필 변경(사진, 이름, 상태메시지) 구현
oooppq Nov 1, 2023
bc0ae7a
feat: 프로필 변경 최적화
oooppq Nov 1, 2023
2b6278f
chore: 주석 추가 및 코드 정리
oooppq Nov 1, 2023
e09f274
chore: mock data 및 readme 수정
oooppq Nov 1, 2023
a27de83
hotfix: 사소한 타이핑 에러 수정
oooppq Nov 1, 2023
5ebfbbb
hotfix: 새로운 채팅의 취소 버튼 font size 수정
oooppq Nov 1, 2023
91daaf0
hotfix: 프로필 변경 에러 수정
oooppq Nov 1, 2023
007fcc8
hotfix: 프로필 사진 크기 조절
oooppq Nov 1, 2023
3ab0e82
hotfix: 메시지 좋아요시 다른 채팅방 메시지들 삭제하는 에러 수정
oooppq Nov 5, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
REACT_APP_VERSION = 1.1.0
6 changes: 6 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"trailingComma": "es5",
"tabWidth": 2,
"semi": true,
"singleQuote": true
}
83 changes: 17 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,66 +1,17 @@
# 서론

안녕하세요 🙌🏻 18기 프론트 운영진 김문기입니다. 이번 미션에서는 드디어 투두리스트에서 벗어나 새로운 프로젝트인 **messenger** 만들기를 진행합니다.

이번주는 특별히 **디자이너와의 협업**으로 진행되는 미션입니다. 디자이너분께서 열심히 리디자인 한 메신저 프로젝트를 여러분들께서 구현해주시면 됩니다.

동시에, 이번주부터는 새로 **TypeScript**를 적용해보려고 합니다.

프로젝트의 규모가 커지게 될 수록, 컴포넌트가 가지는 props의 종류 또한 다양해지게 됩니다. 무지성 코딩을 하다보면 가끔 이 props의 구성과 이름, 어떤 타입이 들어가야 하는지 헷갈리기 마련이죠. 보통 그럴 때 다시 컴포넌트 정의 부분으로 돌아가 props의 구성을 보고 오곤 합니다.

하지만 이럴 때, typescript를 적용한다면 컴포넌트의 구성과 그 이름, 심지어 타입까지 한번에 자동완성으로 편리하게 관리할 수 있고, 생산성이 증대되겠죠.

또한, **React Hooks**에 조금 더 익숙해지는 것을 목표로 합니다. 여러 Hook들이 있지만 그 중에서도 `useState`, `useEffect`, `useRef`를 중점적으로 사용해 보는 미션인데요, React를 사용하면서 굉장히 자주 쓰이는 Hook들이기 때문에 이 부분을 집중적으로 공부해 보아요!

그럼 이번 미션도 파이팅입니다!!🎉

# 미션

## Key Questions

- JavaScript를 사용할때에 비해 TypeScript를 사용할 때의 장점은 무엇인가요?
- 디자이너로부터 전달받은 피그마 링크 혹은, 피그마 캡처본
- 컴포넌트를 분리한 기준은 무엇인가요?
- 디자인 시스템을 적용하면서 느낀 점은 무엇인가요?
- 디자이너와 소통하며 느낀점은 무엇인가요?

## 미션 목표

- TypeScript를 사용해봅시다.
- useState로 컴포넌트의 상태를 관리합니다.
- useEffect와 useRef의 사용법을 이해합니다.
- styled-components를 통한 CSS-in-JS 및 CSS Preprocessor의 사용법에 익숙해집니다.

## 기한

2023년 9월 29일 금요일

## 필수 구현 기능

- 피그마를 보고 [결과화면](https://3th-fb-messenger.netlify.app)과 같이 구현합니다.
- 디자인 시스템을 구축합니다.
- 채팅방 상단의 프로필을 클릭하면 사용자를 변경할 수 있습니다.
- 메세지를 보내면 채팅방 하단으로 스크롤을 이동시킵니다.
- 메세지에 유저 정보(프로필 사진, 이름)를 표시합니다.
- user와 message 데이터를 json 파일에 저장합니다.
- UI는 **반응형을 제외**하고 피그마파일을 따라서 진행합니다.

### 추가 구현 기능

- 더블 클릭 하면 감정표현을 추가합니다.
- 그 외 추가하고 싶은 기능이 있다면 마음껏 추가해 주세요!

참고로 이번 과제는 다음주까지 이어지는 과제이므로 **확장성**을 충분히 고려해 주세요. 참고로 **4주차 과제에서는 유저 및 기능 추가와 Routing을** 진행합니다. 이를 위해 [recoil](https://recoiljs.org/ko/)이나 [redux](https://ko.redux.js.org/introduction/getting-started/)를 이용한 상태관리를 미리 해보시는 것을 추천합니다!! 모두 공식문서 많이 읽어보시고 자신만의 상태관리 조합도 찾아보면 재밌을 거에요 XD

## 링크 및 참고자료

- [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)
- [Styled Component로 디자인 시스템 구축하기](https://zaat.dev/blog/building-a-design-system-in-react-with-styled-components/)
- [ts 절대경로 설정하기](https://tesseractjh.tistory.com/232)
# 배포

[오대균의 Todo List](https://ceos-line-plus.vercel.app/)

# Key Features

- 모바일과 데스크탑 환경 모두 대응
- 모바일과 데스크탑의 작동 방식 차별화
- react router dom을 활용한 라우팅
- useState(local)와 zustand(global)를 활용한 상태 관리
- styled components를 활용한 스타일링
- 읽음 기능
- 메시지 좋아요 기능
- 홈화면에서 원하는 유저를 더블 클릭하면 main 유저 변경 기능
- 새로운 대화 시작 기능
- 홈, 채팅목록, 새로운 채팅 페이지에서 검색 기능
- 유저 프로필 변경 기능
Loading