Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
297a6c8
Chore: 프로젝트 초기 설정 (Vite + React + Tailwind)
a-00-a Mar 23, 2026
d59f2b9
Refactor: FSD 구조로 리팩토링
a-00-a Mar 24, 2026
da09507
Chore: 채팅방 svg를 shared/assets/icons로 이동
a-00-a Mar 24, 2026
59dc55e
Chore: 절대 경로 별칭 @로 자동 import - 확인
a-00-a Mar 24, 2026
2a81623
Chore: 절대 경로 별칭 @로 자동 import 되는지 확인
a-00-a Mar 24, 2026
2b4a9f3
Style: ESlint로 import문 정렬 적용 확인
a-00-a Mar 24, 2026
5289a03
Chore: tailwindcss 기본 설정
a-00-a Mar 24, 2026
b24eb0f
Refactor: App.tsx를 src 루트로 이동
a-00-a Mar 24, 2026
862ebef
Feat: TailwindCSS 전역 스타일 설정
a-00-a Mar 24, 2026
0036b7f
Feat: 채팅방 페이지 레이아웃 구성
a-00-a Mar 24, 2026
35e2656
Feat: 메시지 말풍선 및 데이터 구조 구현
a-00-a Mar 24, 2026
1e6c19b
Style: 채팅방 UI 스타일 및 디자인 적용
a-00-a Mar 24, 2026
48bab4e
Feat: 메시지 날짜 구분선 및 채팅 배경 스타일 적용 변경
a-00-a Mar 24, 2026
a41c200
Fix: 메시지 시간 날짜 데이터 수정 및 입력창 UI 여백 조정
a-00-a Mar 24, 2026
3e773f1
Chore: 1차 UI 배포 기준점
a-00-a Mar 25, 2026
adbc51b
Feat: 메시지 전송 및 전송 시 자동 스크롤 기능 구현
a-00-a Mar 25, 2026
e3e101a
Feat: 버튼 hover 효과
a-00-a Mar 25, 2026
c689c3b
Feat: user 데이터 기반 메시지 렌더링 및 프로필 이미지 적용
a-00-a Mar 25, 2026
a288b59
Fix: 배포 빌드 오류 수정
a-00-a Mar 25, 2026
979b2ec
Chore: 2차 배포 기준점
a-00-a Mar 25, 2026
cc960d9
Fix: 메시지 시간 포맷 띄어쓰기 수정
a-00-a Mar 25, 2026
050090d
Fix: 돋보기 아이콘 사이즈 수정
a-00-a Mar 26, 2026
33b0937
Fix: 상단 대화상대 텍스트 17px로 변경
a-00-a Mar 26, 2026
39435cf
Fix: 내가 보낸 채팅 간격 8px로 수정
a-00-a Mar 26, 2026
ea92e8d
Fix: 보낸 시간 표시가 해당 min에 마지막으로 보낸 채팅에만 적용되게 수정
a-00-a Mar 26, 2026
d603421
Fix: 마지막 음절 반복 전송 오류 수정
a-00-a Mar 26, 2026
9f48b76
Chore: 3차 배포 기준점
a-00-a Mar 26, 2026
a74d82a
Fix: 채팅 박스 가로 패딩값 12px로 조정
a-00-a Mar 26, 2026
f56882c
Fix: 쌓인 메시지 수 & 뒤로가기 아이콘 간격 조정
a-00-a Mar 26, 2026
8512342
Chore: 4차 배포 기준점
a-00-a Mar 26, 2026
ada13e9
Fix: 내 채팅 박스 가로 패딩값 12px로 조정
a-00-a Mar 26, 2026
3cdedf8
Fix: 상단 이름 17px 1차 확인
a-00-a Mar 26, 2026
8e59e9e
Fix: 텍스트 박스 색깔 Main에서 Main/Text Box으로 변경
a-00-a Mar 27, 2026
f41dea5
Fix: 상단바 폰트 크기 변경
a-00-a Mar 27, 2026
9c14d6a
Fix: 쌓인 메시지 수 17px로 수정
a-00-a Mar 27, 2026
b4d6727
Fix: 내가 보낸 채팅이랑 상대방 채팅 간격이 12px로 수정
a-00-a Mar 27, 2026
bd77915
Fix: 텍스트 max weight를 232px로 수정
a-00-a Mar 27, 2026
b4ba2f1
Fix: 텍스트 박스 라운드값 8px로 수정
a-00-a Mar 27, 2026
22f7ecd
Fix: 입력창 라운드값 12px, 패딩값 12px 수정
a-00-a Mar 27, 2026
bb5c9e4
Fix: 날짜랑 텍스트박스 간격 24px로 수정
a-00-a Mar 27, 2026
f8de850
Fix: 입력창 자동 확장 기능 추가
a-00-a Mar 28, 2026
45a8824
Feat: 시점 변환 기능 추가
a-00-a Mar 28, 2026
30d46dd
Feat: 텍스트 입력하면 전송 버튼 보이기 및 기능 추가
a-00-a Mar 28, 2026
ac0e7d8
Style: 입력창 아이콘 hover 색상값 변경 및 추가
a-00-a Mar 28, 2026
a118773
Fix: vercel 배포 오류 수정
a-00-a Mar 28, 2026
67aed78
feat: 상태바, 모바일 레이아웃 컴포넌트 생성
a-00-a Mar 28, 2026
74c175d
Feat: 렌더링 시 상태바 적용
a-00-a Mar 28, 2026
3d98e15
Feat: 분 단위로 프로필 이미지와 이름 노출 조건 추가
a-00-a Mar 28, 2026
c39fd86
Fix: 입력창 안쪽 가로 패딩값 12px로 수정
a-00-a Mar 28, 2026
18df6db
Chore: 불필요한 코드 삭제
a-00-a Mar 28, 2026
dca8114
Fix: 입력창 오른쪽 패딩값 8px로 수정
a-00-a Mar 28, 2026
b47639d
Fix: 보내기 아이콘 사이즈 수정
a-00-a Mar 28, 2026
831dbac
Fix: tailwind 기본적용값 삭제
a-00-a Mar 31, 2026
bb03c24
Fix: scroll bar 숨기기
a-00-a Mar 31, 2026
b08593a
Chore: 중복된 파일 삭제
a-00-a Mar 31, 2026
b1d9c00
Fix: tailwindCSS @layer 적용 확인
a-00-a Mar 31, 2026
b558722
Fix: 채팅방 텍스트(말풍선, 채팅시간, 상대이름) @theme @layer 적용
a-00-a Mar 31, 2026
d6ae78d
Fix: 나머지 모든 파일에 tailwindCSS @theme @layer 적용
a-00-a Mar 31, 2026
853baa2
Fix: 배경과 구분되게 테두리 부분 색 변경
a-00-a Mar 31, 2026
3a978ba
Refactor: MessageeBubble.tsx 의 user 데이터 참조를 MessageList로 이동
a-00-a Apr 4, 2026
dd9c50d
Feat: 채팅목록, 채팅방, 친구목록 페이지 라우팅 연결
a-00-a Apr 4, 2026
dee961a
Feat: 채팅방 id 기반 메시지 구조 적용 및 상태바 중복 렌더링 수정
a-00-a Apr 4, 2026
c6cad7b
Feat: 채팅방 id 기반 라우팅 및 데이터 연결 구조 구현
a-00-a Apr 4, 2026
cfa7763
Feat: 채팅목록과 채팅방 연결 및 마지막 메시지 표시 구조 구현
a-00-a Apr 5, 2026
ea10521
Feat: 채팅목록에서 localStorage 기반 마지막 메시지 동기화 구현
a-00-a Apr 5, 2026
7cd7e7b
Fix: 페이지별 상태바 배경색 분기 처리
a-00-a Apr 5, 2026
1ca3d84
Feat: 채팅목록 검색창 및 읽지 않은 메시지 UI 구현
a-00-a Apr 5, 2026
7f2441a
Feat: 하단 탭바 active 상태 표시 구현
a-00-a Apr 5, 2026
0919f52
Feat: 채팅방 뒤로가기 버튼에 채팅목록 이동 연결
a-00-a Apr 5, 2026
28a4d69
Fix: scroll bar 숨기기 추가
a-00-a Apr 5, 2026
301fea9
Feat: 내 프로필 페이지 추가 및 라우팅 연결
a-00-a Apr 5, 2026
83444e5
Feat: 채팅목록 UI 및 네비게이션 구조 구현
a-00-a Apr 5, 2026
8cd84d8
Feat: 채팅목록 마지막 메시지 fallback 처리
a-00-a Apr 5, 2026
5ea69ba
Style: 채팅방 배경색을 디자인 토큰(bg-bg)으로 수정
a-00-a Apr 5, 2026
2b9d69a
Refactor: Friend 타입을 entities 레이어로 분리
a-00-a Apr 5, 2026
aa7e761
Style: color 추가 및 적용
a-00-a Apr 5, 2026
e2cd86a
Feat: 친구목록 1차 구현
a-00-a Apr 5, 2026
fe87ab4
Add: user-02.svg를 chat-list폴더에 추가(프로필 아이콘)
a-00-a Apr 5, 2026
e6dde2a
Chore: 추가설정 업데이트
a-00-a Apr 5, 2026
1b4bd75
Add: friends 폴더에 아이콘 저장
a-00-a Apr 5, 2026
ca97413
Fix: remove invalid ignoreDeprecations setting
a-00-a Apr 5, 2026
f9be949
Feat: 채팅목록 헤더 수정 및 README 업데이트
a-00-a Apr 5, 2026
486307c
Feat: 채팅 아이콘에 unreadCount 뱃지 추가
a-00-a Apr 6, 2026
29d600e
Style: rounded px값으로 수정
a-00-a Apr 6, 2026
b72de30
Feat: 채팅방 이름을 채팅상대 프로필 이름으로 사용하도록 수정
a-00-a Apr 6, 2026
a75da32
Feat: 하단 탭바 active 상태에 따른 아이콘 적용
a-00-a Apr 6, 2026
71a1d50
Feat: 채팅 목록 상단 영역이 list와 함께 스크롤되도록 수정
a-00-a Apr 7, 2026
0eeef4d
Add: 친구목록 svg 파일들 추가
a-00-a Apr 8, 2026
5edefcf
Fix: 채팅목록 내 프로필 아이콘 추가
a-00-a Apr 8, 2026
6fbb736
Feat: 친구목록 헤더 UI 구현
a-00-a Apr 8, 2026
49635bf
Feat: 태그 섹션 UI 구현 및 접기/펼치기 기능 구현
a-00-a Apr 8, 2026
67ede38
Feat: 친구목록 및 아이템 UI 구현 및 접기/펼치기 기능 구현 + 메시지 여부, 읽음 여부에 따른 아이콘 추가
a-00-a Apr 8, 2026
c54d474
Feat: 친구목록 페이지 레이아웃 구현
a-00-a Apr 8, 2026
2721bc8
Style: 텍스트 색 변경
a-00-a Apr 8, 2026
d90431c
Add: my-profile 폴더에 아이콘 저장
a-00-a Apr 8, 2026
292db39
Feat: 내 프로필 페이지 1차 레이아웃 구성
a-00-a Apr 8, 2026
ce275e7
Feat: 내 프로필 페이지 2차 구현(메뉴 목록)
a-00-a Apr 9, 2026
49e0c76
Fix: 하단탭바 채팅 아이콘 사이즈 수정
a-00-a Apr 10, 2026
a97d41a
Fix: 친구목록, 내 프로필 이름,id 색상 변경 및 친구목록 태그 간격 수정
a-00-a Apr 11, 2026
7cfac6e
Fix:하단바 바뀐 UI 로 수정 및 메시지 수 중앙 정렬
a-00-a Apr 11, 2026
89cbce6
Fix: unreadCount localStorage 반영
a-00-a Apr 11, 2026
67411cb
Feat: 채팅목록 시간 표시 포맷 로직 구현
a-00-a Apr 11, 2026
9aa0d54
Fix: 프로필 아이콘 패딩값 피그마 기준으로 조정
a-00-a Apr 12, 2026
b12f122
Feat: 채팅방 핀 아이콘 UI 및 정렬 로직 구현
a-00-a Apr 12, 2026
b51f495
Merge branch 'master' into a-00-a
a-00-a Apr 25, 2026
3bf68e5
Feat: 프로필 ID 복사 토스트 UI 및 위치 조정
a-00-a Apr 25, 2026
479b8a6
Chore: 사용하지 않는 파일 삭제
a-00-a Apr 25, 2026
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
167 changes: 167 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,170 @@
- [[영상] : 컴포넌트에 대한 이해](https://www.youtube.com/watch?v=21eiJc90ggo)
- [Tailwind CSS 사용법](https://www.heropy.dev/p/E67ZHS)
- [ts 절대경로 설정하기](https://tesseractjh.tistory.com/232)

## **Project Tree**

```
ceos.week3.react-messenger-23rd
├─ react-messenger-23rd
│ ├─ .prettierrc
│ ├─ dist
│ │ ├─ assets
│ │ │ ├─ index-BZvjYWlK.css
│ │ │ └─ index-DuB9fP3j.js
│ │ ├─ favicon.svg
│ │ ├─ icons.svg
│ │ ├─ images
│ │ │ ├─ Frame 73.svg
│ │ │ └─ user-02.svg
│ │ └─ index.html
│ ├─ eslint.config.js
│ ├─ index.html
│ ├─ package-lock.json
│ ├─ package.json
│ ├─ public
│ │ ├─ favicon.svg
│ │ ├─ icons.svg
│ │ └─ images
│ │ ├─ Frame 73.svg
│ │ └─ user-02.svg
│ ├─ README.md
│ ├─ src
│ │ ├─ app
│ │ │ └─ styles
│ │ │ └─ index.css
│ │ ├─ App.tsx
│ │ ├─ entities
│ │ │ ├─ chat-room
│ │ │ │ └─ model
│ │ │ │ ├─ chatRooms.json
│ │ │ │ └─ types.ts
│ │ │ ├─ message
│ │ │ │ ├─ model
│ │ │ │ │ ├─ messages.json
│ │ │ │ │ └─ types.ts
│ │ │ │ └─ ui
│ │ │ │ └─ MessageBubble.tsx
│ │ │ └─ user
│ │ │ └─ model
│ │ │ ├─ types.ts
│ │ │ └─ users.json
│ │ ├─ features
│ │ │ ├─ create-chat-room
│ │ │ │ ├─ model
│ │ │ │ └─ ui
│ │ │ ├─ send-message
│ │ │ │ ├─ model
│ │ │ │ └─ ui
│ │ │ └─ upload-image
│ │ │ ├─ model
│ │ │ └─ ui
│ │ ├─ main.tsx
│ │ ├─ pages
│ │ │ ├─ chat-list
│ │ │ │ ├─ model
│ │ │ │ └─ ui
│ │ │ │ └─ ChatListPage.tsx
│ │ │ ├─ chat-room
│ │ │ │ ├─ model
│ │ │ │ └─ ui
│ │ │ │ └─ ChatRoomPage.tsx
│ │ │ ├─ friends
│ │ │ │ ├─ model
│ │ │ │ └─ ui
│ │ │ │ └─ FriendsPage.tsx
│ │ │ └─ my-profile
│ │ │ ├─ model
│ │ │ └─ ui
│ │ │ └─ MyProfilePage.tsx
│ │ ├─ shared
│ │ │ ├─ assets
│ │ │ │ └─ icons
│ │ │ │ ├─ chat-list
│ │ │ │ │ ├─ compass-03.svg
│ │ │ │ │ ├─ Icon.svg
│ │ │ │ │ ├─ new chatting(24_24).svg
│ │ │ │ │ ├─ search(20_20).svg
│ │ │ │ │ ├─ settings-02.svg
│ │ │ │ │ ├─ Toggle.svg
│ │ │ │ │ ├─ user-02.svg
│ │ │ │ │ ├─ user-circle.svg
│ │ │ │ │ └─ users-01.svg
│ │ │ │ ├─ chat-room
│ │ │ │ │ ├─ face-smile.svg
│ │ │ │ │ ├─ Frame 73.svg
│ │ │ │ │ ├─ hamburger(24_24).svg
│ │ │ │ │ ├─ microphone-01.svg
│ │ │ │ │ ├─ My_Text Box
│ │ │ │ │ │ └─ Back (32_32).svg
│ │ │ │ │ ├─ plus.svg
│ │ │ │ │ ├─ search(24_24).svg
│ │ │ │ │ └─ Status Bar
│ │ │ │ │ ├─ Elements
│ │ │ │ │ │ ├─ Battery.svg
│ │ │ │ │ │ ├─ Connection.svg
│ │ │ │ │ │ └─ Signal.svg
│ │ │ │ │ └─ Mic & Cam.svg
│ │ │ │ ├─ chattingRoom
│ │ │ │ │ ├─ arrow-narrow-up.svg
│ │ │ │ │ ├─ face-smile.svg
│ │ │ │ │ ├─ Frame 73.svg
│ │ │ │ │ ├─ hamburger(24_24).svg
│ │ │ │ │ ├─ microphone-01.svg
│ │ │ │ │ ├─ My_Text Box
│ │ │ │ │ │ └─ Back (32_32).svg
│ │ │ │ │ ├─ plus.svg
│ │ │ │ │ ├─ search(24_24).svg
│ │ │ │ │ └─ Status Bar
│ │ │ │ │ ├─ Elements
│ │ │ │ │ │ ├─ Battery.svg
│ │ │ │ │ │ ├─ Connection.svg
│ │ │ │ │ │ └─ Signal.svg
│ │ │ │ │ └─ Mic & Cam.svg
│ │ │ │ └─ friends
│ │ │ │ ├─ folder-download.svg
│ │ │ │ ├─ message-question-circle(24_24).svg
│ │ │ │ ├─ notification-message (1).svg
│ │ │ │ ├─ notification-message.svg
│ │ │ │ ├─ plus.svg
│ │ │ │ ├─ rightside(24_24).svg
│ │ │ │ ├─ search(24_24).svg
│ │ │ │ ├─ upside(24_24).svg
│ │ │ │ ├─ user-02.svg
│ │ │ │ └─ user-plus(24_24).svg
│ │ │ ├─ constants
│ │ │ ├─ lib
│ │ │ └─ ui
│ │ │ ├─ MobileLayout.tsx
│ │ │ └─ StatusBar.tsx
│ │ └─ widgets
│ │ ├─ chat-list
│ │ │ ├─ model
│ │ │ └─ ui
│ │ │ ├─ BottomTabBar.tsx
│ │ │ ├─ ChatListHeader.tsx
│ │ │ ├─ ChatListSearch.tsx
│ │ │ ├─ ChatRoomItem.tsx
│ │ │ └─ ChatRoomList.tsx
│ │ ├─ chat-room
│ │ │ ├─ model
│ │ │ └─ ui
│ │ │ ├─ ChatRoomHeader.tsx
│ │ │ ├─ DateDivider.tsx
│ │ │ ├─ MessageInputBar.tsx
│ │ │ └─ MessageList.tsx
│ │ └─ friends
│ │ ├─ model
│ │ └─ ui
│ │ ├─ FriendItem.tsx
│ │ ├─ FriendsHeader.tsx
│ │ ├─ FriendsList.tsx
│ │ ├─ MyProfileSection.tsx
│ │ └─ TagSection.tsx
│ ├─ tsconfig.app.json
│ ├─ tsconfig.json
│ ├─ tsconfig.node.json
│ └─ vite.config.ts
└─ README.md

```
24 changes: 24 additions & 0 deletions react-messenger-23rd/.gitignore
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?
9 changes: 9 additions & 0 deletions react-messenger-23rd/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"htmlWhitespaceSensitivity": "ignore",
"tabWidth": 2,
"printWidth": 120,
"singleQuote": true,
"trailingComma": "all",
"semi": true,
"endOfLine": "lf"
}
73 changes: 73 additions & 0 deletions react-messenger-23rd/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# 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...
},
},
])
```
31 changes: 31 additions & 0 deletions react-messenger-23rd/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import js from '@eslint/js';
import { defineConfig, globalIgnores } from 'eslint/config';
import reactHooks from 'eslint-plugin-react-hooks';
import reactRefresh from 'eslint-plugin-react-refresh';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import globals from 'globals';
import tseslint from 'typescript-eslint';

export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx,js,jsx}'],
extends: [
js.configs.recommended,
...tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
'simple-import-sort': simpleImportSort,
},
rules: {
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},
]);
13 changes: 13 additions & 0 deletions react-messenger-23rd/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="ko">
<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>
Loading