Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
40cd08d
chore: 배포 & lint 설정
Aug 11, 2025
1b6cbb9
refactor: prettier & eslint 초기 적용
Aug 11, 2025
6c4cf35
refactor: 페이지 내 위젯 정의 - header footer manager
Aug 11, 2025
9f629c0
chore: 절대 경로 설정
Aug 11, 2025
612421d
chore: tanstack react-query 설치
Aug 11, 2025
11f560b
refactor: components shared로 이동
Aug 11, 2025
5877875
refactor: manager widget 파일 경로 변경
Aug 11, 2025
2b9da9f
feat: tanstack query provider 추가
Aug 11, 2025
413b961
refactor: shared ui 컴포넌트 파일 분리
Aug 12, 2025
c6e78e3
refactor: post api 호출 함수 분리
Aug 12, 2025
9333be3
refactor: post entity api에 query hook 생성
Aug 12, 2025
24aadb0
refactor: user api 호출 함수 분리 & query hook 생성
Aug 12, 2025
d322467
refactor: comment api 호출 함수 분리 & query hook 생성
Aug 12, 2025
e33b85b
refactor: comment interface 정의
Aug 12, 2025
363e914
refactor: post manager에 query hook 구현 내용 적용
Aug 12, 2025
e91d36b
refactor: render post & comment 엔티티 ui로 분리
Aug 12, 2025
06545dc
refactor: post filter feature 분리
Aug 12, 2025
8a02aa9
refactor: pagination feature 분리
Aug 12, 2025
590e8c5
refactor: url update 로직 hook으로 분리
Aug 12, 2025
7800840
refactor: url 동기화 로직 useUrlQuery 적용
Aug 12, 2025
bceebd2
refactor: useUrlQuery params useSearchParams으로 관리
Aug 12, 2025
2fb7729
refactor: post filter - post search featrue 분리
Aug 12, 2025
dd8b14a
refactor: useUrlQuery 변경 사항 반영
Aug 12, 2025
4089d4d
refactor: api 파일에서 query 훅 모델로 분리
Aug 12, 2025
5fa6c4a
fix: new post payload type 추가
Aug 12, 2025
0521591
refactor: create post feature 분리
Aug 12, 2025
8109938
refactor: edit post feature 분리
Aug 13, 2025
394a874
refactor: comment features ui 분리
Aug 13, 2025
e525edb
refactor: user profile dialog ui 분리
esoby Aug 13, 2025
7ea86f4
refactor: post table action button ui 분리
esoby Aug 13, 2025
09b70ee
chore: zustand 설치
esoby Aug 14, 2025
da8b4c1
feat: editPostStore 구현
esoby Aug 14, 2025
91b36ea
refactor: post-edit feature 관련 컴포넌트 editPostStore 반영
esoby Aug 14, 2025
1e66462
refactor: post detail 관련 파일 이름 수정
esoby Aug 14, 2025
f05c17e
refactor: post-view dialog 상태 관리 스토어 생성 및 반영
esoby Aug 14, 2025
2d9cf25
refactor: post-search 상태 관리 스토어 생성 및 반영
esoby Aug 14, 2025
6394a32
fix: url 변경 사항 - search 키워드 동기화 코드에 searchParams 의존성 추가
esoby Aug 14, 2025
cec457e
refactor: post-filter 스토어 생성 및 반영
esoby Aug 14, 2025
f7334df
refactor: comment list props 제거
esoby Aug 14, 2025
ba58623
refactor: comment dialog state 관리 store 생성 및 반영
esoby Aug 14, 2025
d93fc44
refactor: post-create 스토어 생성 및 반영
esoby Aug 14, 2025
32d3b69
refactor: post fetching params에 filter 내용 추가
esoby Aug 14, 2025
377cc63
refactor: user-profile-dialog 상태 스토어 생성
esoby Aug 14, 2025
eb5f72a
refactor: pagination store 생성 & 훅 수정
esoby Aug 14, 2025
a68dcd4
refactor: pagination 컴포넌트 프롭스 대체
esoby Aug 14, 2025
08736f9
refactor: highlighttext query 프롭스 대체
esoby Aug 14, 2025
57eae77
feat: 게시물 목록 조합 로직 usePosts에 정리
esoby Aug 14, 2025
da201cf
refactor: usePosts 반영
esoby Aug 14, 2025
50d4c2a
refactor: tag fetching 컴포넌트 내부로 이동
esoby Aug 14, 2025
8d6c274
fix: error fetching user info
esoby Aug 14, 2025
7910261
refactor: comment 액션 버튼 ui 분리
esoby Aug 14, 2025
85c1550
refactor: PostCommentsWidget 구현
esoby Aug 14, 2025
047485e
refactor: dialogs 위젯 분리
esoby Aug 15, 2025
a7b5dda
refactor: useUrlQuery 파일 이동
esoby Aug 15, 2025
e8cdd1f
refactor: shared ui 컴포넌트 개별 index 삭제
esoby Aug 15, 2025
97351a9
refactor: like button 컴포넌트명 수정
esoby Aug 15, 2025
37305a5
refactor: 컴포넌트 일괄 export index 파일 추가
esoby Aug 15, 2025
a15aedc
refactor: 위젯 ui 컴포넌트 정리
esoby Aug 15, 2025
c46145a
refactor: features index 추가
esoby Aug 15, 2025
b548b34
refactor: post 조합 훅 위젯 모델로 이동
esoby Aug 15, 2025
6eb77a0
feat: api 에러 처리 추가
esoby Aug 15, 2025
d14ecc1
chore: 배포용 환경 변수 설정
esoby Aug 15, 2025
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,5 @@ dist-ssr
*.njsproj
*.sln
*.sw?

.env.*
16 changes: 9 additions & 7 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
{
"semi": false,
"printWidth": 120,
"semi": true,
"singleQuote": true,
"jsxSingleQuote": true,
"tabWidth": 2,
"singleQuote": false,
"quoteProps": "consistent",
"trailingComma": "all",
"singleAttributePerLine": false
}
"bracketSpacing": true,
"bracketSameLine": false,
"arrowParens": "always",
"printWidth": 100,
"endOfLine": "auto"
}
123 changes: 106 additions & 17 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,117 @@
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'

export default tseslint.config(
{ ignores: ['dist'] },
import typescript from '@typescript-eslint/eslint-plugin';
import typescriptParser from '@typescript-eslint/parser';
import { defineConfig } from 'eslint/config';
import prettier from 'eslint-config-prettier';
import compat from 'eslint-plugin-compat';
import importPlugin from 'eslint-plugin-import';
import eslintPluginPrettier from 'eslint-plugin-prettier';
import react from 'eslint-plugin-react';
import reactHooks from 'eslint-plugin-react-hooks';
import reactRefresh from 'eslint-plugin-react-refresh';

export default defineConfig([
{
ignores: ['**/node_modules/**', 'dist/**', '.eslintrc.cjs'],
},
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
files: ['**/*.{js,jsx,ts,tsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
ecmaVersion: 'latest',
sourceType: 'module',
parser: typescriptParser,
parserOptions: {
ecmaFeatures: {
jsx: true,
},
tsconfigRootDir: '.',
},
},
plugins: {
prettier: eslintPluginPrettier,
react,
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
'@typescript-eslint': typescript,
compat,
import: importPlugin,
},
settings: {
react: {
version: 'detect',
},
browsers: '> 0.5%, last 2 versions, not op_mini all, Firefox ESR, not dead',
},
rules: {
...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
'react-refresh/only-export-components': ['warn', { allowConstantExport: true }],

'comma-dangle': [
'error',
{
arrays: 'always-multiline',
objects: 'always-multiline',
imports: 'always-multiline',
exports: 'always-multiline',
functions: 'never',
},
],
'react/prop-types': 'off',
'react/react-in-jsx-scope': 'off',
'react-hooks/rules-of-hooks': 'error',

'@typescript-eslint/no-explicit-any': 'warn',

'no-var': 'error',
'@typescript-eslint/no-unused-vars': 'error',

eqeqeq: ['error', 'always', { null: 'ignore' }],

'consistent-return': 'error',
'no-else-return': ['error', { allowElseIf: false }],

'prefer-template': 'error',

camelcase: [
'error',
{
properties: 'never',
ignoreDestructuring: false,
ignoreImports: false,
ignoreGlobals: false,
allow: ['^[A-Z][A-Z0-9_]*$'],
},
],

'prefer-destructuring': [
'error',
{
array: true,
object: true,
},
{
enforceForRenamedProperties: false,
},
],

'prefer-const': 'error',
'object-shorthand': 'error',
'no-multiple-empty-lines': ['error', { max: 1, maxEOF: 0 }],
'no-console': ['warn', { allow: ['warn', 'error'] }],
'no-debugger': 'warn',
'no-undef': 'off',

'import/order': [
'error',
{
groups: ['builtin', 'external', ['parent', 'sibling'], 'index'],
alphabetize: {
order: 'asc',
caseInsensitive: true,
},
'newlines-between': 'always',
},
],
'import/extensions': 'off',
},
},
)
prettier,
]);
13 changes: 12 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"deploy": "vite build && gh-pages -d dist",
"lint": "eslint .",
"preview": "vite preview",
"test": "vitest",
"coverage": "vitest run --coverage"
},
"dependencies": {
"@tanstack/react-query": "^5.84.2",
"react": "^19.1.1",
"react-dom": "^19.1.1"
"react-dom": "^19.1.1",
"zustand": "^5.0.7"
},
"devDependencies": {
"@eslint/js": "^9.33.0",
Expand All @@ -24,12 +27,20 @@
"@testing-library/user-event": "^14.6.1",
"@types/react": "^19.1.9",
"@types/react-dom": "^19.1.7",
"@typescript-eslint/eslint-plugin": "^8.39.0",
"@typescript-eslint/parser": "^8.39.0",
"@vitejs/plugin-react": "^5.0.0",
"axios": "^1.11.0",
"class-variance-authority": "^0.7.1",
"eslint": "^9.33.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-compat": "^6.0.2",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"gh-pages": "^6.3.0",
"globals": "^16.3.0",
"jsdom": "^26.1.0",
"lucide-react": "^0.539.0",
Expand Down
Loading