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주차] 노이진 미션 제출합니다. #18

Open
wants to merge 57 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
d4c3708
feat: 기본적인 틀 작성
leejin-rho Sep 27, 2023
a96c371
chore: font적용 및 채팅디자인 구현
leejin-rho Sep 27, 2023
80b6401
feat: input함수 구현
leejin-rho Sep 28, 2023
a7048a6
feat: 채팅기능 구현 및 스크롤 조정
leejin-rho Sep 28, 2023
587ee87
feat: 시간 현재시간 반영 및 am, pm 지정
leejin-rho Sep 28, 2023
ac7e1b0
feat: 같은 시간에 보낸 메시지일 경우 마지막에만 시간이 나오게 구현
leejin-rho Sep 28, 2023
7807fe3
feat: 시간 다른 사람일 경우에는 같아도 보이게 수정, 메시지 있을때만 chatOn
leejin-rho Sep 28, 2023
a5c0386
chore: favicon
leejin-rho Sep 28, 2023
7128ee0
redeploy
leejin-rho Sep 28, 2023
ac3d3b3
chore: alert 문장 변경
leejin-rho Sep 28, 2023
63cceb8
chore: 상대 이름 간격 수정
leejin-rho Sep 28, 2023
df7be7f
chore: margin 수정
leejin-rho Sep 28, 2023
947fdf6
chore: showTime에 boolean값 표현
leejin-rho Sep 30, 2023
8ea0a35
chore: margin 표현 수정
leejin-rho Sep 30, 2023
29b862b
chore: word-break 수정
leejin-rho Oct 1, 2023
e209071
chore: gitignore수정
leejin-rho Oct 1, 2023
a52a0c8
chore: README 수정
leejin-rho Oct 1, 2023
fc453d6
chore: status_bar, indicator 위치 설정
leejin-rho Oct 22, 2023
e7ca3bc
chore: 기본 틀 설정
leejin-rho Oct 22, 2023
c686bb4
feat: tapBar 아이콘 추가, inputbar 생성
leejin-rho Oct 22, 2023
70bd925
style: 친구페이지 디자인 적용
leejin-rho Oct 25, 2023
b2d5ae2
.
leejin-rho Oct 25, 2023
90b5eae
.
leejin-rho Oct 25, 2023
0c823e4
feat: 탭바 탭기능
leejin-rho Oct 25, 2023
7977e8d
feat: mypage구현 및 링크연결
leejin-rho Oct 28, 2023
f91971a
chore: add profile images
leejin-rho Oct 29, 2023
30d0647
style: chatList 기본 스타일
leejin-rho Oct 29, 2023
17bca82
feat: chatting link 연결
leejin-rho Oct 30, 2023
655eb79
feat: chatting방 uid 연결
leejin-rho Oct 31, 2023
ef27060
feat: atom 생성
leejin-rho Oct 31, 2023
40c1b6d
feat: chatData user별 저장, chatOn 설정, showProfile 설정
leejin-rho Nov 2, 2023
239fb3a
feat: 채팅방에 마지막 채팅 내용, 시간 표시
leejin-rho Nov 2, 2023
90c425f
feat: 채팅방 목록 수정
leejin-rho Nov 2, 2023
3f09003
feat: 검색 기능 구현
leejin-rho Nov 2, 2023
39bb636
feat: 채팅없는 친구는 채팅목록에 안나오게 필터
leejin-rho Nov 2, 2023
e99fab8
feat: 프로필 이름변경 기능
leejin-rho Nov 2, 2023
fcdc8f2
feat: 채팅리스트 정렬, 다른날엔 날짜표시
leejin-rho Nov 2, 2023
427671d
chore: chatList content 글자수 조정
leejin-rho Nov 2, 2023
feeac62
feat: 맨 아래 스크롤에서 시작하도록 조정
leejin-rho Nov 2, 2023
dce37a5
redeploy
leejin-rho Nov 2, 2023
d5a15d9
.
leejin-rho Nov 2, 2023
24cda46
.
leejin-rho Nov 2, 2023
c4e6c3c
.
leejin-rho Nov 2, 2023
6f5e957
redeploy
leejin-rho Nov 2, 2023
1f16947
redeploy
leejin-rho Nov 2, 2023
70bbf74
redeploy
leejin-rho Nov 3, 2023
06644ab
redeploy
leejin-rho Nov 3, 2023
9448e3c
redeploy
leejin-rho Nov 3, 2023
d76fc55
style: 채팅 margin 조정
leejin-rho Nov 3, 2023
d008f7b
chore: 날짜 추가
leejin-rho Nov 3, 2023
8600b66
style: am, pm 다시 추가
leejin-rho Nov 4, 2023
832024c
style: am, pm
leejin-rho Nov 4, 2023
9420172
style: am,pm 추가 width 조절
leejin-rho Nov 4, 2023
50c375a
style: am,pm 사이 고백 제거
leejin-rho Nov 4, 2023
62b7c70
chore: 간격 조절
leejin-rho Nov 4, 2023
6ae5bfe
chore: 주석 수정, cursor: pointer 추가
leejin-rho Nov 4, 2023
36e03a2
chore: 기능 주석 추가
leejin-rho Nov 4, 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
7 changes: 7 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"printWidth": 120,
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "all",
"semi": false
}
Comment on lines +1 to +7
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prettier 설정을 직접 하셨네요!! 멋집니다 ㅎㅎ

3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"typescript.tsdk": "node_modules/typescript/lib"
}
82 changes: 36 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,66 +1,56 @@
# 서론
# 4주차 미션: React-Messenger 💌

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

이번주는 특별히 **디자이너와의 협업**으로 진행되는 미션입니다. 디자이너분께서 열심히 리디자인 한 메신저 프로젝트를 여러분들께서 구현해주시면 됩니다.
안녕하세요 🙌🏻 프론트엔드 운영진 김문기입니다.

동시에, 이번주부터는 새로 **TypeScript**를 적용해보려고 합니다.
다들 저번주 미션은 어떠셨나요? 이번주에는 저번 과제를 확장하여 보다 더 완성도 높은 메신저 서비스를 만들어 봅시다.

프로젝트의 규모가 커지게 될 수록, 컴포넌트가 가지는 props의 종류 또한 다양해지게 됩니다. 무지성 코딩을 하다보면 가끔 이 props의 구성과 이름, 어떤 타입이 들어가야 하는지 헷갈리기 마련이죠. 보통 그럴 때 다시 컴포넌트 정의 부분으로 돌아가 props의 구성을 보고 오곤 합니다.
이번주 과제의 목표는 React에서 **Routing**을 구현하는 방법과 **상태를 관리**하는 방법에 대해 익숙해지는 것입니다. 해당 부분을 잘 고려하시면서 미션을 수행해 주세요!

하지만 이럴 때, typescript를 적용한다면 컴포넌트의 구성과 그 이름, 심지어 타입까지 한번에 자동완성으로 편리하게 관리할 수 있고, 생산성이 증대되겠죠.
또한, 이번주에는 디자이너 측에서 QA를 전달해주실 예정입니다. 전달받은 QA에 대해 디자이너와 소통 후, 이를 고쳐보시는 과정도 수행해주세요!

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

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

# 미션
### 미션 목표

## Key Questions

- JavaScript를 사용할때에 비해 TypeScript를 사용할 때의 장점은 무엇인가요?
- 디자이너로부터 전달받은 피그마 링크 혹은, 피그마 캡처본
- 컴포넌트를 분리한 기준은 무엇인가요?
- 디자인 시스템을 적용하면서 느낀 점은 무엇인가요?
- 디자이너와 소통하며 느낀점은 무엇인가요?
- SPA의 개념을 이해하고, 그에 따른 라우팅을 구현합니다.
- 디자이너로부터 QA를 전달받고, 이에 대한 대응합니다.
- React에서 사용하는 상태 관리 방법에 익숙해집니다.
- UI 컴포넌트의 중복을 줄여 봅니다.
- 코드를 확장/재사용/리팩토링하는 방법을 이해합니다.

## 미션 목표
### 기한

- TypeScript를 사용해봅시다.
- useState로 컴포넌트의 상태를 관리합니다.
- useEffect와 useRef의 사용법을 이해합니다.
- styled-components를 통한 CSS-in-JS 및 CSS Preprocessor의 사용법에 익숙해집니다.
2023년 11월 3일 금요일 (기한 엄수!)

## 기한
### 필수 요건

2023년 9월 29일 금요일
- 친구 목록 페이지, 채팅 목록 페이지, 설정 페이지 세 부분으로 구성합니다.
- 채팅 목록을 누르면 3주차 미션에서 구현했던 채팅방으로 이동합니다.
- 검색 기능을 추가하여 검색한 내용과 일치하는 이름을 가진 사용자만 화면에 표시합니다.
- (선택) 각자 메신저에 추가하고 싶거나, 구현하고 싶은 기능 마음껏 구현합니다. ✨
- Custom hooks를 통해 중복되는 로직을 줄입니다.

## 필수 구현 기능
### 선택 사항

- 피그마를 보고 [결과화면](https://3th-fb-messenger.netlify.app)과 같이 구현합니다.
- 디자인 시스템을 구축합니다.
- 채팅방 상단의 프로필을 클릭하면 사용자를 변경할 수 있습니다.
- 메세지를 보내면 채팅방 하단으로 스크롤을 이동시킵니다.
- 메세지에 유저 정보(프로필 사진, 이름)를 표시합니다.
- user와 message 데이터를 json 파일에 저장합니다.
- UI는 **반응형을 제외**하고 피그마파일을 따라서 진행합니다.
- Recoil, Redux 등의 상태 관리 라이브러리를 적용해 봅니다.
- Base UI component system을 통해 UI 컴포넌트의 코드 재사용성을 높입니다.

### 추가 구현 기능

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

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

## 링크 및 참고자료

- [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)
- [React Router v6 튜토리얼](https://velog.io/@velopert/react-router-v6-tutorial)
- [(선택) react-router v6에서는 어떤 것들이 변했을까?](https://blog.woolta.com/categories/1/posts/211)
- [React 상태 관리 가이드](https://www.stevy.dev/react-state-management-guide/)
- [Flux 패턴이란?](https://velog.io/@huurray/React%EC%9D%98-%ED%83%84%EC%83%9D%EA%B3%BC-Flux-%ED%8C%A8%ED%84%B4%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC)
- [useReducer](https://www.daleseo.com/react-hooks-use-reducer/)
Loading