# πŸ’° Zellyy Finance - 개인 가계뢀 관리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ [![배포 μƒνƒœ](https://img.shields.io/badge/배포-Vercel-000000?style=flat&logo=vercel)](https://vercel.com) [![λΉŒλ“œ μƒνƒœ](https://github.com/hansoo./zellyy-finance/workflows/Vercel%20Deployment%20Workflow/badge.svg)](https://github.com/hansoo./zellyy-finance/actions) [![React](https://img.shields.io/badge/React-18-61DAFB?style=flat&logo=react)](https://reactjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?style=flat&logo=typescript)](https://www.typescriptlang.org/) [![Vite](https://img.shields.io/badge/Vite-5-646CFF?style=flat&logo=vite)](https://vitejs.dev/) React와 TypeScript둜 κ΅¬μΆ•λœ ν˜„λŒ€μ μΈ 개인 가계뢀 관리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. ## πŸš€ 라이브 데λͺ¨ - **ν”„λ‘œλ•μ…˜**: [zellyy-finance.vercel.app](https://zellyy-finance.vercel.app) - **μŠ€ν…Œμ΄μ§•**: Preview λ°°ν¬λŠ” PR 생성 μ‹œ μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€. ## πŸš€ μ‹œμž‘ν•˜κΈ° 이 ν”„λ‘œμ νŠΈλ₯Ό 둜컬 ν™˜κ²½μ—μ„œ μ„€μ •ν•˜κ³  μ‹€ν–‰ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. **사전 μš”κ΅¬ 사항** - Node.js (v18 이상) - npm (v9 이상) **λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•˜κΈ°** The only requirement is having Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating) Follow these steps: ```sh # Step 1: Clone the repository using the project's Git URL. git clone # Step 2: Navigate to the project directory. cd # Step 3: Install the necessary dependencies. npm i # Step 4: Start the development server with auto-reloading and an instant preview. npm run dev ``` **Edit a file directly in GitHub** - Navigate to the desired file(s). - Click the "Edit" button (pencil icon) at the top right of the file view. - Make your changes and commit the changes. **Use GitHub Codespaces** - Navigate to the main page of your repository. - Click on the "Code" button (green button) near the top right. - Select the "Codespaces" tab. - Click on "New codespace" to launch a new Codespace environment. - Edit files directly within the Codespace and commit and push your changes once you're done. ## πŸ› οΈ μ£Όμš” 기술 μŠ€νƒ - **Backend**: Supabase (Cloud) - **Frontend**: React, Vite, TypeScript - **UI**: shadcn-ui, Tailwind CSS - **State Management**: Zustand, Tanstack Query - **Deployment**: Vercel ## πŸ”§ TypeScript νƒ€μž… μ‹œμŠ€ν…œ 이 ν”„λ‘œμ νŠΈλŠ” κ°•λ ₯ν•œ νƒ€μž… μ•ˆμ „μ„±μ„ μœ„ν•΄ μ€‘μ•™ν™”λœ νƒ€μž… μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€. ### μ£Όμš” νŠΉμ§• - **Strict Mode**: λͺ¨λ“  TypeScript strict μ˜΅μ…˜ ν™œμ„±ν™” - **μ€‘μ•™ν™”λœ νƒ€μž…**: `src/types/`μ—μ„œ λͺ¨λ“  νƒ€μž… 관리 - **νƒ€μž… κ°€λ“œ**: λŸ°νƒ€μž„ νƒ€μž… 검증 지원 - **μ„±λŠ₯ μ΅œμ ν™”**: μ‘°κΈ° λ°˜ν™˜ 및 Set 기반 검증 ### λ¬Έμ„œ - πŸ“š [νƒ€μž… μ‹œμŠ€ν…œ κ°€μ΄λ“œ](./docs/TYPE_SYSTEM_GUIDE.md) - μƒμ„Έν•œ μ‚¬μš©λ²•κ³Ό ꡬ쑰 μ„€λͺ… - ⚑ [λΉ λ₯Έ μ°Έμ‘°](./docs/TYPE_SYSTEM_QUICK_REFERENCE.md) - 자주 μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄λ“€ ### νƒ€μž… 검증 ```bash # νƒ€μž… 였λ₯˜ 검사 npm run type-check # λ˜λŠ” 직접 npx tsc --noEmit ``` ## πŸš€ 배포 κ°€μ΄λ“œ 이 ν”„λ‘œμ νŠΈλŠ” Vercel을 톡해 μžλ™ λ°°ν¬λ©λ‹ˆλ‹€. ### μžλ™ 배포 - **ν”„λ‘œλ•μ…˜**: `main` λΈŒλžœμΉ˜μ— ν‘Έμ‹œν•˜λ©΄ μžλ™μœΌλ‘œ ν”„λ‘œλ•μ…˜ 배포 - **프리뷰**: PR 생성 μ‹œ μžλ™μœΌλ‘œ 미리보기 배포 생성 - **μŠ€ν…Œμ΄μ§•**: `develop` λΈŒλžœμΉ˜λŠ” μŠ€ν…Œμ΄μ§• ν™˜κ²½μœΌλ‘œ 배포 ### 배포 μ„€μ • μžμ„Έν•œ 배포 μ„€μ • 방법은 [DEPLOYMENT.md](./DEPLOYMENT.md)λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”. ### ν•„μˆ˜ ν™˜κ²½ λ³€μˆ˜ ν”„λ‘œμ νŠΈλ₯Ό λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•˜λ €λ©΄ 루트 디렉토리에 `.env` νŒŒμΌμ„ μƒμ„±ν•˜κ³  Supabase ν”„λ‘œμ νŠΈμ˜ ν™˜κ²½ λ³€μˆ˜λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€. ```env # Supabase VITE_SUPABASE_URL="YOUR_SUPABASE_URL" VITE_SUPABASE_ANON_KEY="YOUR_SUPABASE_ANON_KEY" ``` ## πŸ”— μ»€μŠ€ν…€ 도메인 Vercel을 톡해 μ»€μŠ€ν…€ 도메인을 μ‰½κ²Œ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€: 1. Vercel ν”„λ‘œμ νŠΈ Settings > Domains 2. μ›ν•˜λŠ” 도메인 μž…λ ₯ 3. DNS μ„€μ • μ—…λ°μ΄νŠΈ 4. SSL μΈμ¦μ„œ μžλ™ μ„€μ •