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 reactHooks from 'eslint-plugin-react-hooks'
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'] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
parser: parser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
},
plugins: {
'@typescript-eslint': tseslint,
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
},
rules: {
...js.configs.recommended.rules,
...tseslint.configs.recommended.rules,
...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': [
'warn',
{ 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"
},
"dependencies": {
"@tailwindcss/postcss": "^4.1.10",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"file-saver": "^2.0.5",

View File

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

View File

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

View File

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

View File

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

View File

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