Skip to content

smnm1998/FitForYou

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

59 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฝ๏ธ FitForYou (F4Y) - AI ๋งž์ถคํ˜• ๊ฑด๊ฐ• ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

๋‚ด ํ•˜๋ฃจ์™€ ๊ฑด๊ฐ•์„ ๋‚˜๋‹ต๊ฒŒ, ๋ชจ๋“  ๊ฒƒ์„ ๋‹น์‹ ์—๊ฒŒ ํ•ํ•˜๊ฒŒ

AI ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•œ ๊ฐœ์ธ ๋งž์ถคํ˜• ์‹๋‹จ ๋ฐ ์šด๋™ ๊ด€๋ฆฌ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ๊ฐœ์ธ์ •๋ณด๋กœ ์ตœ๋Œ€ํ•œ์˜ ๋งž์ถคํ˜• ๊ฑด๊ฐ• ๊ด€๋ฆฌ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Project Screenshot

๐ŸŒŸ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿค– AI ๊ธฐ๋ฐ˜ ๋งž์ถคํ˜• ์ถ”์ฒœ

  • ๊ฐœ์ธํ™”๋œ ์‹๋‹จ ์ƒ์„ฑ: ์‚ฌ์šฉ์ž์˜ ๊ฑด๊ฐ• ์ƒํƒœ, ์„ ํ˜ธ๋„, ๋ชฉํ‘œ๋ฅผ ๊ณ ๋ คํ•œ ์ผ์ฃผ์ผ ์‹๋‹จ ๊ณ„ํš
  • ๋งž์ถคํ˜• ์šด๋™ ๋ฃจํ‹ด: ์ฒด๋ ฅ ์ˆ˜์ค€๊ณผ ํ™˜๊ฒฝ์— ๋งž๋Š” ๊ฐœ์ธ๋ณ„ ์šด๋™ ํ”„๋กœ๊ทธ๋žจ
  • ์‹ค์‹œ๊ฐ„ AI ์ƒ๋‹ด: OpenAI GPT-4๋ฅผ ํ™œ์šฉํ•œ ๊ฑด๊ฐ• ๊ด€๋ จ ์งˆ์˜์‘๋‹ต

๐Ÿ“Š ํ†ตํ•ฉ ๊ฑด๊ฐ• ๊ด€๋ฆฌ

  • ๋Œ€์‹œ๋ณด๋“œ: ์‹๋‹จ/์šด๋™ ํ†ต๊ณ„ ๋ฐ ์ง„ํ–‰ ์ƒํ™ฉ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ: ์ƒ์„ฑ๋œ ์‹๋‹จ๊ณผ ์šด๋™ ๊ณ„ํš์˜ ์ฒด๊ณ„์  ๊ด€๋ฆฌ
  • ์ง„ํ–‰ ์ถ”์ : ์ฃผ๊ฐ„/์›”๊ฐ„ ํ™œ๋™ ๋‚ด์—ญ ๋ฐ ์นผ๋กœ๋ฆฌ ์†Œ๋ชจ๋Ÿ‰ ๋ถ„์„

๐Ÿ”’ ํ”„๋ผ์ด๋ฒ„์‹œ ์ค‘์‹ฌ ์„ค๊ณ„

  • ์ตœ์†Œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘: ํ•„์ˆ˜ ์ •๋ณด๋งŒ์œผ๋กœ ์„œ๋น„์Šค ์ œ๊ณต
  • ์•ˆ์ „ํ•œ ์ธ์ฆ: NextAuth.js ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ์‹œ์Šคํ…œ
  • ๋ฐ์ดํ„ฐ ์†Œ์œ ๊ถŒ: ์‚ฌ์šฉ์ž ์ค‘์‹ฌ์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

๐Ÿš€ ๊ธฐ์ˆ  ์Šคํƒ

Frontend

  • Framework: Next.js 14 (App Router)
  • Language: TypeScript
  • Styling: Tailwind CSS
  • State Management:
    • React Query (์„œ๋ฒ„ ์ƒํƒœ)
    • Zustand (ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ)
  • UI Components: Headless UI + Custom Components
  • Icons: Heroicons
  • Forms: React Hook Form + Yup

Backend

  • Runtime: Node.js
  • Framework: Next.js API Routes
  • Database: MySQL
  • ORM: Prisma
  • Authentication: NextAuth.js
  • AI Integration: OpenAI API (GPT-4)

DevOps & Tools

  • Package Manager: npm & yarn
  • Build Tool: Vite (Dev), Next.js (Production)
  • Type Checking: TypeScript
  • Linting: ESLint
  • Deployment: Vercel (Frontend), Railway/PlanetScale (Database)

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

src/
โ”œโ”€โ”€ app/                    # Next.js App Router
โ”‚   โ”œโ”€โ”€ (auth)/            # ์ธ์ฆ ๊ด€๋ จ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ (dashboard)/       # ๋ฉ”์ธ ์•ฑ ํŽ˜์ด์ง€
โ”‚   โ”œโ”€โ”€ api/               # API Routes
โ”‚   โ”œโ”€โ”€ components/        # ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ
โ”‚   โ””โ”€โ”€ globals.css        # ์ „์—ญ ์Šคํƒ€์ผ
โ”œโ”€โ”€ lib/                   # ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
โ”‚   โ”œโ”€โ”€ auth.ts           # NextAuth ์„ค์ •
โ”‚   โ”œโ”€โ”€ prisma.ts         # Prisma ํด๋ผ์ด์–ธํŠธ
โ”‚   โ”œโ”€โ”€ openai.ts         # OpenAI API ์„ค์ •
โ”‚   โ””โ”€โ”€ api-client.ts     # API ํด๋ผ์ด์–ธํŠธ
โ”œโ”€โ”€ types/                 # TypeScript ํƒ€์ž… ์ •์˜
โ”œโ”€โ”€ styles/               # SCSS ์Šคํƒ€์ผ ํŒŒ์ผ
โ””โ”€โ”€ prisma/               # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ
    โ””โ”€โ”€ schema.prisma

๐Ÿ› ๏ธ ์„ค์น˜ ๋ฐ ์‹คํ–‰

1. ํ”„๋กœ์ ํŠธ ํด๋ก 

git clone https://github.com/your-username/fitforyou.git
cd fitforyou

2. ์˜์กด์„ฑ ์„ค์น˜

npm install

๋˜๋Š”

yarn install

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

.env.local ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

# Database
DATABASE_URL="mysql://username:password@localhost:3306/fitforyou"

# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-nextauth-secret"

# OpenAI
OPENAI_API_KEY="your-openai-api-key"

# App
NEXT_PUBLIC_APP_URL="http://localhost:3000"

4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •

# Prisma ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹คํ–‰
npx prisma migrate dev

# ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ๋“œ (์„ ํƒ์‚ฌํ•ญ)
npx prisma db seed

5. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

npm run dev

๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:3000์„ ์—ด์–ด ํ™•์ธํ•˜์„ธ์š”.

๐Ÿ“ฑ ์ฃผ์š” ํŽ˜์ด์ง€

๐Ÿ  ๋ฉ”์ธ ๋Œ€์‹œ๋ณด๋“œ (/collection)

  • ์ €์žฅ๋œ ์‹๋‹จ/์šด๋™ ํ†ต๊ณ„
  • ์˜ค๋Š˜์˜ ์ถ”์ฒœ ๊ณ„ํš
  • ๋น ๋ฅธ ์•ก์…˜ ๋ฒ„ํŠผ

๐Ÿฝ๏ธ ์‹๋‹จ ๊ด€๋ฆฌ (/diet)

  • ์ €์žฅ๋œ ์‹๋‹จ ๋ชฉ๋ก ์กฐํšŒ
  • ์ผ์ฃผ์ผ ์‹๋‹จ ์ƒ์„ธ ๋ณด๊ธฐ
  • ์‹๋‹จ ์‚ญ์ œ ๋ฐ ๊ด€๋ฆฌ

๐Ÿ‹๏ธ ์šด๋™ ๊ด€๋ฆฌ (/workout)

  • ์ €์žฅ๋œ ์šด๋™ ๊ณ„ํš ์กฐํšŒ
  • ์šด๋™ ๋ฃจํ‹ด ์ƒ์„ธ ์ •๋ณด
  • ์šด๋™ ์ผ์ • ๊ด€๋ฆฌ

โž• ์ฝ˜ํ…์ธ  ์ƒ์„ฑ (/add, /create)

  • AI ์‹๋‹จ ์ƒ์„ฑ ์š”์ฒญ
  • AI ์šด๋™ ๊ณ„ํš ์ƒ์„ฑ
  • ๋งž์ถคํ˜• ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ

๐Ÿ‘ค ํ”„๋กœํ•„ ๊ด€๋ฆฌ (/profile)

  • ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ •
  • ์‹ ์ฒด ์ •๋ณด ์—…๋ฐ์ดํŠธ
  • ๊ณ„์ • ์„ค์ •

๐Ÿ”ง API ์—”๋“œํฌ์ธํŠธ

์ธ์ฆ

  • POST /api/auth/signup - ํšŒ์›๊ฐ€์ž…
  • POST /api/auth/signin - ๋กœ๊ทธ์ธ
  • POST /api/auth/check-user-id - ์•„์ด๋”” ์ค‘๋ณต ํ™•์ธ

AI ์ƒ์„ฑ

  • POST /api/ai/generate-diet - AI ์‹๋‹จ ์ƒ์„ฑ
  • POST /api/ai/generate-workout - AI ์šด๋™ ์ƒ์„ฑ

๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

  • GET /api/diets - ์‹๋‹จ ๋ชฉ๋ก ์กฐํšŒ
  • DELETE /api/diets - ์‹๋‹จ ๊ทธ๋ฃน ์‚ญ์ œ
  • GET /api/workouts - ์šด๋™ ๋ชฉ๋ก ์กฐํšŒ
  • DELETE /api/workouts - ์šด๋™ ๊ทธ๋ฃน ์‚ญ์ œ

์‚ฌ์šฉ์ž

  • GET /api/user/profile - ํ”„๋กœํ•„ ์กฐํšŒ
  • PUT /api/user/profile - ํ”„๋กœํ•„ ์ˆ˜์ •
  • DELETE /api/user/profile - ํšŒ์› ํƒˆํ‡ด

ํ†ต๊ณ„

  • GET /api/stats/dashboard - ๋Œ€์‹œ๋ณด๋“œ ํ†ต๊ณ„
  • GET /api/stats/reports - ์ƒ์„ธ ๋ฆฌํฌํŠธ

๐ŸŽจ ๋””์ž์ธ ์‹œ์Šคํ…œ

์ƒ‰์ƒ ํŒ”๋ ˆํŠธ

$primary-color: #f0fd82;      // ๋ฉ”์ธ ๋ธŒ๋žœ๋“œ ์ƒ‰์ƒ (์—ฐํ•œ ๋…ธ๋ž‘)
$primary-hover: #e6f066;      // ํ˜ธ๋ฒ„ ์ƒํƒœ
$success-color: #2ed573;      // ์„ฑ๊ณต/์™„๋ฃŒ (์ดˆ๋ก)
$error-color: #ff4757;        // ์˜ค๋ฅ˜/๊ฒฝ๊ณ  (๋นจ๊ฐ•)
$text-color: #333;            // ๊ธฐ๋ณธ ํ…์ŠคํŠธ

๋ฐ˜์‘ํ˜• ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ

$mobile-s: 320px;
$mobile: 375px;
$mobile-l: 480px;
$tablet: 768px;

๐Ÿš€ ๋ฐฐํฌ

Vercel ๋ฐฐํฌ (๊ถŒ์žฅ)

  1. Vercel ๊ณ„์ •์— ํ”„๋กœ์ ํŠธ ์—ฐ๊ฒฐ
  2. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
  3. ์ž๋™ ๋ฐฐํฌ ์„ค์ •

์ˆ˜๋™ ๋นŒ๋“œ

npm run build
npm start

๐Ÿงช ํ…Œ์ŠคํŠธ

# ํƒ€์ž… ์ฒดํฌ
npm run type-check

# ๋ฆฐํŒ…
npm run lint

# ๋นŒ๋“œ ํ…Œ์ŠคํŠธ
npm run build

๐Ÿ“‹ TODO & ๋กœ๋“œ๋งต

v1.1 (์˜ˆ์ •)

  • ์‹๋‹จ ์ด๋ฏธ์ง€ ๋ถ„์„ ๊ธฐ๋Šฅ
  • ์šด๋™ ์˜์ƒ ๊ฐ€์ด๋“œ ์ œ๊ณต
  • ํ‘ธ์‹œ ์•Œ๋ฆผ ์‹œ์Šคํ…œ
  • ์นผ๋กœ๋ฆฌ ์ถ”์  ๊ฐœ์„ 

v1.2 (์˜ˆ์ •)

  • ์†Œ์…œ ๊ธฐ๋Šฅ (์นœ๊ตฌ ์ถ”๊ฐ€, ๊ณต์œ )
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋Šฅ
  • ์ „๋ฌธ๊ฐ€ ์ƒ๋‹ด ์—ฐ๊ฒฐ
  • ์›จ์–ด๋Ÿฌ๋ธ” ๊ธฐ๊ธฐ ์—ฐ๋™

v2.0 (์žฅ๊ธฐ)

  • ๋ชจ๋ฐ”์ผ ์•ฑ (React Native)
  • ์Œ์„ฑ ์ธํ„ฐํŽ˜์ด์Šค
  • AR/VR ์šด๋™ ๊ฐ€์ด๋“œ
  • ๊ฐœ์ธํ™” AI ์–ด์‹œ์Šคํ„ดํŠธ

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ

  • TypeScript ์‚ฌ์šฉ ํ•„์ˆ˜
  • ESLint ๊ทœ์น™ ์ค€์ˆ˜
  • ์ปดํฌ๋„ŒํŠธ๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„
  • API๋Š” RESTful ์„ค๊ณ„ ์›์น™ ๋”ฐ๋ฆ„
  • ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ํ•„์ˆ˜

๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT License - ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ‘ฅ ํŒ€

๊ฐœ๋ฐœํŒ€ ๋ชจ๊ตฌ (AI์œตํ•ฉํ•™๊ณผ)

  • ์ด์„ธ๋ฏผ - Full Stack Developer & Project Lead
  • ์†๋ฏผ์„ญ - Backend Developer
  • ์ •์˜ˆ๋ฆฐ - UI/UX

๊ธฐ์ˆ  ์Šคํƒ ์˜์‚ฌ๊ฒฐ์ •

  • Frontend: ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ React + TypeScript
  • Backend: ๋น ๋ฅธ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ Next.js Full-Stack
  • Database: ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ์œ„ํ•œ MySQL + Prisma
  • AI: ์ตœ์‹  AI ๊ธฐ์ˆ  ํ™œ์šฉ์„ ์œ„ํ•œ OpenAI GPT-4

๐Ÿ“ž ๋ฌธ์˜


Made with โค๏ธ by Team ๋ชจ๊ตฌ

"๊ฑด๊ฐ•ํ•œ ๋ผ์ดํ”„์Šคํƒ€์ผ์˜ ์‹œ์ž‘, FitForYou์™€ ํ•จ๊ป˜ํ•˜์„ธ์š”!"

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published