feat: T-023 프로젝트 환경설정 및 초기 세팅 완료 - Vite+TypeScript+React 환경구성, TailwindCSS+ShadCN UI 설정, ESLint+Prettier 설정, Zustand 스토어 구현, 기본 UI 레이아웃 완성, 환경설정 오류 수정

This commit is contained in:
sheetEasy AI Team
2025-06-19 17:16:00 +09:00
parent a2b09539c6
commit f288103e55
8 changed files with 1699 additions and 117 deletions

View File

@@ -2,27 +2,36 @@ import js from '@eslint/js'
import globals from 'globals' import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks' import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh' import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint' import tseslint from '@typescript-eslint/eslint-plugin'
import parser from '@typescript-eslint/parser'
export default tseslint.config( export default [
{ ignores: ['dist'] }, { ignores: ['dist'] },
{ {
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'], files: ['**/*.{ts,tsx}'],
languageOptions: { languageOptions: {
ecmaVersion: 2020, ecmaVersion: 2020,
globals: globals.browser, globals: globals.browser,
parser: parser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
}, },
plugins: { plugins: {
'@typescript-eslint': tseslint,
'react-hooks': reactHooks, 'react-hooks': reactHooks,
'react-refresh': reactRefresh, 'react-refresh': reactRefresh,
}, },
rules: { rules: {
...js.configs.recommended.rules,
...tseslint.configs.recommended.rules,
...reactHooks.configs.recommended.rules, ...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': [ 'react-refresh/only-export-components': [
'warn', 'warn',
{ allowConstantExport: true }, { allowConstantExport: true },
], ],
'@typescript-eslint/no-unused-vars': 'warn',
}, },
}, },
) ]

1782
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -15,6 +15,7 @@
"type-check": "tsc --noEmit" "type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@tailwindcss/postcss": "^4.1.10",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",

View File

@@ -1,6 +1,6 @@
export default { export default {
plugins: { plugins: {
tailwindcss: {}, '@tailwindcss/postcss': {},
autoprefixer: {}, autoprefixer: {},
}, },
} }

View File

@@ -1,11 +1,9 @@
import React from "react";
import { useAppStore } from "./stores/useAppStore"; import { useAppStore } from "./stores/useAppStore";
import { Card, CardContent } from "./components/ui/card"; import { Card, CardContent } from "./components/ui/card";
import { Button } from "./components/ui/button"; import { Button } from "./components/ui/button";
function App() { function App() {
const { isLoading, loadingMessage, currentFile, isAuthenticated } = const { isLoading, loadingMessage, currentFile } = useAppStore();
useAppStore();
return ( return (
<div className="min-h-screen bg-background"> <div className="min-h-screen bg-background">

View File

@@ -37,7 +37,7 @@ interface AppState {
setAuthenticated: (authenticated: boolean) => void; setAuthenticated: (authenticated: boolean) => void;
setCurrentFile: ( setCurrentFile: (
file: { name: string; size: number; uploadedAt: Date } | null file: { name: string; size: number; uploadedAt: Date } | null,
) => void; ) => void;
setSheets: (sheets: SheetData[]) => void; setSheets: (sheets: SheetData[]) => void;
setActiveSheetId: (sheetId: string | null) => void; setActiveSheetId: (sheetId: string | null) => void;
@@ -70,7 +70,7 @@ const initialState = {
export const useAppStore = create<AppState>()( export const useAppStore = create<AppState>()(
devtools( devtools(
(set, get) => ({ (set) => ({
...initialState, ...initialState,
// 사용자 액션 // 사용자 액션
@@ -118,6 +118,6 @@ export const useAppStore = create<AppState>()(
}), }),
{ {
name: "app-store", name: "app-store",
} },
) ),
); );

View File

@@ -19,7 +19,6 @@
"strict": true, "strict": true,
"noUnusedLocals": true, "noUnusedLocals": true,
"noUnusedParameters": true, "noUnusedParameters": true,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true, "noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true "noUncheckedSideEffectImports": true
}, },

View File

@@ -17,7 +17,6 @@
"strict": true, "strict": true,
"noUnusedLocals": true, "noUnusedLocals": true,
"noUnusedParameters": true, "noUnusedParameters": true,
"erasableSyntaxOnly": true,
"noFallthroughCasesInSwitch": true, "noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true "noUncheckedSideEffectImports": true
}, },