Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
536e01c
[SETTING] React + TS + Vite + TailwindCSS 프로젝트 초기세팅
waldls Mar 24, 2026
7b3d1eb
[FEAT] 디자인 시스템 구축 및 타이포그래피 클래스 추가
waldls Mar 24, 2026
f64cb4f
[FEAT] 기본 라우트 레이아웃 설계 및 파비콘 추가
waldls Mar 24, 2026
deff596
[FIX] Vercel 배포 시 라우팅 처리를 위한 vercel.json 추가
waldls Mar 24, 2026
50502b6
[FEAT] StatusBar 렌더링 및 아이콘 파일 추가
waldls Mar 24, 2026
7e10c1c
[FEAT] 공통 Header 컴포넌트 구현 및 각 페이지에 헤더 연결
waldls Mar 24, 2026
0739d80
[FEAT] 공통 Navibar 컴포넌트 구현 및 각 페이지에 연결
waldls Mar 24, 2026
5c14daa
[CHORE] 스크롤 영역 수정
waldls Mar 24, 2026
925f52f
[FEAT] 홈 인디케이터 플로팅 구현
waldls Mar 24, 2026
b23a969
[FEAT] 인디케이터 배경 그라데이션 컬러 추가
waldls Mar 24, 2026
7921ab3
[FEAT] useScrolled 커스텀 훅 추가 및 스타일 적용
waldls Mar 24, 2026
9666500
[FEAT] 채팅방 날짜 태그, 말풍선 구현
waldls Mar 24, 2026
049094a
[FEAT] 사이트 타이틀 및 오픈그래프 썸네일 추가
waldls Mar 25, 2026
ef909c2
[FEAT] ChatRead 컴포넌트 구현
waldls Mar 25, 2026
328c1b6
[REFACTOR] 수트 폰트 전역으로 적용 및 TAILWINDCSS 문법으로 수정
waldls Mar 25, 2026
19447b4
[RENAME] 파일명 소문자 -> 대문자 수정
waldls Mar 25, 2026
bf55222
[FEAT] 채팅 프로필 사진 컴포넌트 구현
waldls Mar 25, 2026
6277c4c
[REFACTOR] 동그란 프로필 컴포넌트 공통으로 분리
waldls Mar 25, 2026
8d1cc95
[FEAT] 메시지 컴포넌트 구현 및 JSON 파일 연결
waldls Mar 25, 2026
2d4837f
[FEAT] messages.json에 date 필드 추가 및 날짜별 MessageDate 렌더링
waldls Mar 25, 2026
f22b730
[CHORE] 채팅방 임시 이동 버튼 추가 및 BackIcon 뒤로가기 연결
waldls Mar 25, 2026
462dc37
[FEAT] 메시지 입력 필드 컴포넌트 구현
waldls Mar 25, 2026
3d58396
[REFACTOR] Navibar 조건부 렌더링 및 레이아웃 구조 수정
waldls Mar 25, 2026
5da8809
[FEAT] 채팅방 TextField 입력 시 메시지 목록 하단 자동 스크롤
waldls Mar 25, 2026
0da8bbe
[CHORE] 레이아웃 마진 값 수정
waldls Mar 25, 2026
ca807b7
[FIX] 말풍선 바깥으로 영어, 숫자 튀어나오지 않도록 수정
waldls Mar 25, 2026
9c35f7d
[FEAT] 메시지 시간+날짜 기준으로 말풍선 모서리 및 읽음 표시 위치 개선
waldls Mar 25, 2026
83cef8c
[REFACTOR] JSON 파일 내용 수정 및 마지막 메시지 조건 수정
waldls Mar 25, 2026
2cb4317
[CHORE] JSON 데이터 파일 수정
waldls Mar 25, 2026
71b158f
[REFACTOR] QA 반영 헤더 스타일 수정 및 함수 분리
waldls Mar 25, 2026
d28ddd9
[FIX] Navibar 클릭 배경 트랜지션 부드럽게 수정
waldls Mar 25, 2026
43eb733
[CHORE] 라우터 파일 생성 및 경로 연결
waldls Mar 26, 2026
ed5b78f
[FEAT] 채팅방 전역 상태 관리 및 헤더네임 클릭 시 관점 변경
waldls Mar 26, 2026
ac4de2d
[REFACTOR] 유저 엔티티 분리 및 프로필 컬러 개인화
waldls Mar 26, 2026
d2f80d0
[FEAT] 클립 클릭 시 폴더 열리도록 수정 및 전반적으로 최적화 적용
waldls Mar 26, 2026
ccd1f0d
[REFACTOR] clsx, tailwind-merge 사용해서 조건부 스타일링 간소화
waldls Mar 26, 2026
e799d53
[FIX] 상대방이 보낸 메시지 MessageDate 렌더 오류 해결
waldls Mar 26, 2026
b1b54c2
[REFACTOR] memo로 불필요한 리렌더링 방지 및 전송 시에만 스크롤 최하단으로 이동
waldls Mar 26, 2026
c65e237
[CHORE] StatusBar 컴포넌트 구현 및 레이아웃에 연결
waldls Mar 26, 2026
752f233
[FIX] 채팅방 입력창 높이 변화에 따른 스크롤 위치 유지 및 관점 전환 시 스크롤 하단 이동
waldls Mar 26, 2026
20e9f34
[REFACTOR] 프로필 스타일 배리언트 상수 및 타이포 파일 분리
waldls Mar 27, 2026
9267b9d
[FIX] 시간 그룹이 바뀔 때 상대방 프로필 사진 표시
waldls Mar 27, 2026
aa63a0f
[FEAT] 분 단위 말풍선 그룹끼리 간격 12PX, 관점 변경 시 입력 초기화
waldls Mar 27, 2026
329509e
[CHORE] meta description 태그 추가
waldls Mar 27, 2026
08a6418
[CHORE] 한글 IME 조합 중 Enter 입력 시 메시지 전송 방지
waldls Mar 27, 2026
8ec2907
[DOCS] 4주차 과제 리드미로 수정해 충돌 해결
waldls Mar 30, 2026
11df91e
Merge branch 'master' into waldls
waldls Mar 30, 2026
da7e4a3
[FEAT] ChatTime 컴포넌트 구현
waldls Mar 30, 2026
d7d321b
[FEAT] 채팅 생성 버튼, 알람개수 컴포넌트 구현
waldls Mar 31, 2026
02ad2f5
[FEAT] 1,2,3,4명 채팅방 프로필 사진 구현
waldls Mar 31, 2026
83e10b3
[MOVE] 채팅방 프로필 사진 ChatList 폴더 아래로 이동
waldls Mar 31, 2026
6e5b7bf
[FEAT] 채팅방 목록 개별 아이템 컴포넌트 구현
waldls Mar 31, 2026
247dd51
[FEAT] 단체방에서 관점 제어 및 채팅방 목록 렌더링
waldls Mar 31, 2026
aa537ce
[FEAT] 채팅목록 최신순으로 정렬
waldls Mar 31, 2026
3aef850
[REFACTOR] 채팅 읽음 표시 렌더링 방식 수정
waldls Mar 31, 2026
b671609
[FEAT] 네비바에 안 읽은 채팅 개수 Alert 연결
waldls Mar 31, 2026
8d70583
[MOD] Navibar Alert 위치 수정
waldls Mar 31, 2026
12e53c7
[FEAT] 인원 5명 채팅방 구현
waldls Mar 31, 2026
fcb4092
[FEAT] 입력창 컴포넌트 구현 및 채팅방 가장 아래 마진 추가
waldls Mar 31, 2026
67e0e49
[FEAT] 입력창에 이름 검색시 해당하는 채팅방만 렌더링
waldls Mar 31, 2026
16346f7
[CHORE] 메시지 JSON 파일 수정
waldls Mar 31, 2026
b20c268
[FEAT] 로딩스피너 구현 및 설정 페이지에 연결
waldls Mar 31, 2026
dc470e0
[FEAT] 채팅 생성 플로팅 버튼 화면 연결
waldls Mar 31, 2026
8eace11
[REFACTOR] clsx로 조건부 수정 및 memo로 불필요한 리렌더링 방지
waldls Mar 31, 2026
fa87fff
[FEAT] 연락처 개별 아이템 및 이름에서 성 추출하는 함수 구현
waldls Apr 1, 2026
7a12248
[FEAT] 연락처 목록 이름순, 시간순으로 정렬 렌더링
waldls Apr 1, 2026
6429ce3
[FEAT] 이름 입력 시 해당하는 사람만 필터링
waldls Apr 1, 2026
169390b
[REFACTOR] 연락처 목록 간격 수정 및 필터별 문구 조정
waldls Apr 1, 2026
0ee5d2f
[CHORE] 타인 메시지일때 왼쪽 padding값 수정
waldls Apr 1, 2026
b63c768
[CHORE] messageDate 컴포넌트 수정
waldls Apr 1, 2026
c5054d6
[FEAT] 스크롤시 돋보기 아이콘 생성 및 클릭시 스크롤 맨 위로 올리도록 구현
waldls Apr 1, 2026
22db996
[FEAT] 프로필 버튼 구현
waldls Apr 1, 2026
041fa48
[FEAT] 토글탭 컴포넌트 구현
waldls Apr 1, 2026
d2db123
[FEAT] 게시물 추가 버튼 구현
waldls Apr 1, 2026
fe3a3d9
[FEAT] 내 프로필 이미지 컴포넌트 구현
waldls Apr 1, 2026
796e547
[FEAT] 포토카드 컴포넌트 구현 및 예시 이미지 추가
waldls Apr 1, 2026
48fdd71
[FEAT] 내 프로필 페이지 구현
waldls Apr 2, 2026
901e62c
[FEAT] 게시물 추가 버튼 클릭 시 이미지 파일 선택창 연결
waldls Apr 2, 2026
61e6b7a
[CHORE] 구분선 화면 가운데 정렬
waldls Apr 2, 2026
1962740
[REFACTOR] 상태 조회 최적화 및 컴포넌트 가독성 개선
waldls Apr 2, 2026
38dd287
[CHORE] 미사용 파일 업로드 핸들러 및 ref 제거
waldls Apr 2, 2026
65a39c8
[FIX] 로컬 이미지 파일 선택창 안 열리는 문제 해결
waldls Apr 2, 2026
3540e49
[REFACTOR] 3주차 과제 피드백 반영 CSS 정의 수정
waldls Apr 8, 2026
4effefc
[REFACTOR] SVG 아이콘 크기 명시적 지정 및 svgr dimensions 옵션 설정
waldls Apr 8, 2026
70ff10e
[REFACTOR] 아이콘 네이밍 통일 및 미사용 아이콘 파일 제거
waldls Apr 8, 2026
a76b3e9
[FEAT] 스플래시화면 퍼블리싱
waldls Apr 20, 2026
d858b6c
[FEAT] 스플래시 페이지에서 비행기 날아가는 애니메이션 구현
waldls Apr 20, 2026
2cdfe03
[REFACTOR] 코드 품질 개선 및 버그 수정
waldls Apr 20, 2026
94aaa64
[FEAT] 채팅방 내 이미지 전송 기능 구현
waldls Apr 20, 2026
fac79d8
[FEAT] 프로필 게시물 업로드 및 즐겨찾기 토글 기능 구현
waldls Apr 20, 2026
8c68e45
[DOCS] 서비스 소개 리드미 작성
waldls Apr 22, 2026
9c2b54a
[RENAME] 스플래시 관련 상수명 UPPER_SNAKE_CASE로 수정
waldls Apr 22, 2026
ba36e2e
[CHORE] 서비스 소개 gif 크기 수정
waldls Apr 22, 2026
3ccb2fe
[FEAT] 폴백용 404 페이지 구현
waldls Apr 23, 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
26 changes: 26 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 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
!.vscode/settings.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.env
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npx lint-staged
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
dist
build
.env
11 changes: 11 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"arrowParens": "avoid",
"endOfLine": "lf",
"printWidth": 100,
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"useTabs": false,
"plugins": ["prettier-plugin-tailwindcss"]
}
8 changes: 8 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss",
"christian-kohler.path-intellisense"
]
}
8 changes: 8 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"]
}
258 changes: 190 additions & 68 deletions README.md

Large diffs are not rendered by default.

70 changes: 70 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
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";
import prettierPlugin from "eslint-plugin-prettier";
import eslintConfigPrettier from "eslint-config-prettier";
import importPlugin from "eslint-plugin-import";
import reactPlugin from "eslint-plugin-react";

export default defineConfig([
globalIgnores(["dist", "node_modules", "public"]),
{
files: ["**/*.{ts,tsx}"],
extends: [
js.configs.recommended,
...tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactPlugin.configs.flat.recommended,
],
languageOptions: {
ecmaVersion: 2020,
globals: {
...globals.browser,
...globals.node,
},
parser: tseslint.parser,
parserOptions: {
ecmaFeatures: { jsx: true },
},
},
plugins: {
"react-refresh": reactRefresh,
import: importPlugin,
prettier: prettierPlugin,
},
settings: {
"import/resolver": {
typescript: true,
node: true,
},
},
rules: {
"react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
"import/order": [
"error",
{
groups: [
"builtin",
"external",
"internal",
["parent", "sibling", "index"],
"object",
"type",
],
pathGroups: [{ pattern: "@/**", group: "internal" }],
pathGroupsExcludedImportTypes: ["builtin"],
"newlines-between": "always",
alphabetize: { order: "asc", caseInsensitive: true },
},
],
"prettier/prettier": "error",
"react/react-in-jsx-scope": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": ["warn"],
},
},
eslintConfigPrettier,
]);
19 changes: 19 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!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>Telegram Redesign — CEOS 23rd</title>
<meta property="og:title" content="Telegram Redesign — CEOS 23rd" />
<meta name="description" content="CEOS 23rd Frontend × Design" />
<meta property="og:description" content="CEOS 23rd Frontend × Design" />
<meta property="og:image" content="https://react-messenger-23rd.vercel.app/og-image.png" />
<meta property="og:url" content="https://react-messenger-23rd.vercel.app" />
<meta property="og:type" content="website" />
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading