Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 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
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,43 @@
# 리액트 투두 앱 만들기 미션 레포

# React-Vite Todo App

간단한 React + Vite 기반 Todo 리스트 애플리케이션입니다.
로컬스토리지에 할 일 데이터를 저장하여 페이지 새로고침 후에도 유지됩니다.

---

## 개발 기간

📅 2025.07.08 – 2025.07.09

---

## 주요 기능

- ✅ 할 일 추가
- 인풋에 텍스트 입력 후 Enter 또는 “등록” 버튼 클릭
- ☑️ 완료 체크
- 체크박스를 클릭하면 완료 상태로 토글
- 완료된 항목은 ~~취소선~~ 스타일 적용
- 🗑️ 삭제
- “삭제” 버튼 클릭으로 해당 할 일 즉시 제거
- 💾 localStorage 연동
- 상태 변경 시 자동 저장 → 새로고침해도 데이터 유지 \
- 📆 날짜 표시
- 페이지 상단에 실시간으로 현재 날짜를 보여줍니다.

---

## 기술 스택

- **프레임워크**: React (v18) + Vite
- **스타일**: Tailwind CSS
- **상태 관리**: React Hooks (`useState`, `useEffect`, `useRef`)
- **데이터 지속성**: `localStorage` (커스텀 유틸 `getStorage`/`setStorage`)

---

## 실행 이미지

![image](https://github.com/user-attachments/assets/632039ba-0101-4b75-8dce-22ad174beaa5)
29 changes: 29 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{js,jsx}'],
extends: [
js.configs.recommended,
reactHooks.configs['recommended-latest'],
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
parserOptions: {
ecmaVersion: 'latest',
ecmaFeatures: { jsx: true },
sourceType: 'module',
},
},
rules: {
'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
},
},
])
14 changes: 14 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React</title>
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
Loading