Skip to content
Open
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
83ba800
feat: add prettier & eslint settings
geonhwiii Aug 4, 2025
32fc071
feat: admin dashboard 분리
geonhwiii Aug 4, 2025
0ed8f3a
feat: product list 분리
geonhwiii Aug 4, 2025
72687c8
feat: header, cart, payments, coupons 분리
geonhwiii Aug 4, 2025
9ad7d0e
feat: icon 분리
geonhwiii Aug 4, 2025
93ea579
feat: cart, coupons, products 별 entities 분리
geonhwiii Aug 4, 2025
f8f2c79
feat: set basicUrl & path
geonhwiii Aug 5, 2025
5d1ec45
feat: utils 함수 분리
geonhwiii Aug 6, 2025
bd7aa8c
feat: add useLocalStorage
geonhwiii Aug 6, 2025
0a72bd1
feat: add useNotifications
geonhwiii Aug 6, 2025
53e8c18
feat: add useCart
geonhwiii Aug 6, 2025
afab628
feat: add useDebounceValue & useTotalItemCount
geonhwiii Aug 6, 2025
6608d5b
fix: calculateCartTotal 의 이상한 로직 수정
geonhwiii Aug 6, 2025
56687b3
fix: 상수 정리
geonhwiii Aug 6, 2025
1de2362
feat: user-dashboard 분리
geonhwiii Aug 6, 2025
797596d
feat: product, coupon 훅 통합
geonhwiii Aug 7, 2025
3414373
feat: 핸들러 추가 분리
geonhwiii Aug 7, 2025
7231425
fix: 불필요한 format 추상화 제거
geonhwiii Aug 7, 2025
a657465
fix: calculateItemTotal 전달 제거
geonhwiii Aug 7, 2025
a4f2126
feat: model 클래스화
geonhwiii Aug 7, 2025
ace3a25
fix: pages 폴더 생성 및 이동
geonhwiii Aug 7, 2025
8dece11
fix: model export 개선
geonhwiii Aug 7, 2025
473a2e7
feat: advanced 추가 및 context 반영
geonhwiii Aug 7, 2025
a82b67a
feat: props 정리 및 변수 제거
geonhwiii Aug 7, 2025
0aeb511
feat: add deploy settings
geonhwiii Aug 8, 2025
9bbdd89
feat: add 404 html
geonhwiii Aug 8, 2025
542e104
fix: add homepage link
geonhwiii Aug 8, 2025
606f285
fix: production link
geonhwiii Aug 8, 2025
f01d936
fix: file name convention
geonhwiii Aug 9, 2025
6781597
feat: notification 분리 및 함수명 개선
geonhwiii Aug 9, 2025
89f03fe
fix: 공통 유틸함수들 shared로 이동
geonhwiii Aug 9, 2025
6d6a31f
fix: basic 폴더 정리
geonhwiii Aug 9, 2025
515615b
fix: app content 분리
geonhwiii Aug 9, 2025
e1c11c4
fix: remove unused files
geonhwiii Aug 9, 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
146 changes: 129 additions & 17 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,18 +1,130 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react-hooks/recommended',
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parser: '@typescript-eslint/parser',
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
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'],
},
}
{
files: ['**/*.{js,jsx,ts,tsx}'],
languageOptions: {
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: {
// 기존 규칙 유지
'react-refresh/only-export-components': ['warn', { allowConstantExport: true }],

// Prettier 통합 규칙
'comma-dangle': [
'error',
{
arrays: 'always-multiline',
objects: 'always-multiline',
imports: 'always-multiline',
exports: 'always-multiline',
functions: 'never',
},
],

// React 관련 규칙
'react/prop-types': 'off',
'react/react-in-jsx-scope': 'off',
'react-hooks/rules-of-hooks': 'error',

// TypeScript 관련 규칙
'@typescript-eslint/no-explicit-any': 'warn',

// 팀 컨벤션 - var 사용 금지
'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 순서 규칙
'import/order': [
'error',
{
groups: ['builtin', 'external', ['parent', 'sibling'], 'index'],
alphabetize: {
order: 'asc',
caseInsensitive: true,
},
'newlines-between': 'always',
},
],
'import/extensions': 'off',
},
},
prettier,
]);
11 changes: 11 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"semi": true,
"singleQuote": true,
"jsxSingleQuote": true,
"tabWidth": 2,
"bracketSpacing": true,
"bracketSameLine": false,
"arrowParens": "always",
"printWidth": 100,
"endOfLine": "auto"
}
6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,19 @@
"@testing-library/jest-dom": "^6.6.4",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^24.2.0",
"@types/react": "^19.1.9",
"@types/react-dom": "^19.1.7",
"@typescript-eslint/eslint-plugin": "^8.38.0",
"@typescript-eslint/parser": "^8.38.0",
"@vitejs/plugin-react-swc": "^3.11.0",
"@vitest/ui": "^3.2.4",
"eslint": "^9.32.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-compat": "^6.0.2",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-prettier": "^5.5.3",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"jsdom": "^26.1.0",
Expand Down
Loading