์ผ์ฑ์ ์ ๋ธ๋๋ ์์์ ํ์ฉํ ๊น๋ํ๊ณ ๋ชจ๋ํ ์นด๋ ๋น๊ต ๋ฐ AI ์ถ์ฒ ์น์ฌ์ดํธ์ ๋๋ค.
- ํ์ด๋ก ์น์ ๊ณผ ์๋น์ค ์๊ฐ
- ์ธ๊ธฐ ์นด๋ TOP 3 ํ์ (API์์ ๋์ ๋ก๋ฉ)
- AI ์ถ์ฒ ์๋น์ค ์๋ด
- ๋ค์ํ ์นด๋ ์ ๋ณด ์ ๊ณต (API์์ ๋์ ๋ก๋ฉ)
- ์นดํ ๊ณ ๋ฆฌ, ์ฐํ๋น, ์ ๋ ฌ ํํฐ๋ง
- ์นด๋ ์์ธ ์ ๋ณด ๋ชจ๋ฌ
- ๋น๊ตํ๊ธฐ ๊ธฐ๋ฅ
- ํ์ฌ ์ํ: ์์ ํ ๊ตฌํ๋์ด ์ ์ ์๋
- ์ต๋ 3๊ฐ ์นด๋ ๋์ ๋น๊ต ๊ธฐ๋ฅ
- ์นด๋ ๋ชฉ๋ก์์ ๋น๊ต ๋ชฉ๋ก ์ถ๊ฐ/์ ๊ฑฐ
- ๊ธฐ๋ณธ ์ ๋ณด, ํํ ๋น๊ต ํ ์ด๋ธ
- AI ์ถ์ฒ ๊ฒฐ๊ณผ ํ์
- ์ง๊ด์ ์ธ ๋น๊ต ์ธํฐํ์ด์ค
- ์ค์๊ฐ ๋ํํ ์นด๋ ์ถ์ฒ (API ๊ธฐ๋ฐ ์๋ต)
- ํ์ดํ ์ ๋๋ฉ์ด์ ํจ๊ณผ
- ๋น ๋ฅธ ์๋ต ๋ฒํผ
- ์ถ์ฒ ๊ฒฐ๊ณผ ์ค์๊ฐ ํ์
- ์ผ์ฑ์ ์ ๋ธ๋๋ ์์: ํ๋์ ๊ณ์ด์ ์ ๋ฌธ์ ์ด๊ณ ์ ๋ขฐ๊ฐ ์๋ ๋์์ธ
- ๋ชจ๋ํ UI: ๊น๋ํ๊ณ ํ๋ คํ์ง ์์ ์ธ๋ จ๋ ์ธํฐํ์ด์ค
- ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํฑ ๋ชจ๋ ๊ธฐ๊ธฐ ์ง์
- ์ฌ์ฉ์ ์นํ์ : ์ง๊ด์ ์ธ ๋ค๋น๊ฒ์ด์ ๊ณผ ์ธํฐ๋์
- Frontend: Vue.js 3 + TypeScript
- Styling: CSS3 (CSS Variables, Grid, Flexbox)
- State Management: Pinia
- Routing: Vue Router
- Build Tool: Vite
- API: Fetch API (๋๋ฏธ JSON ๋ฐ์ดํฐ)
- Environment: Vite ํ๊ฒฝ ๋ณ์
git clone https://github.com/your-username/ssafit.git
cd ssafitnpm installnpm run dev๊ฐ๋ฐ ์๋ฒ๊ฐ ์คํ๋๋ฉด ๋ธ๋ผ์ฐ์ ์์ http://localhost:3000์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค.
npm run buildnpm run previewํ๋ก์ ํธ ๋ฃจํธ์ .github/workflows/deploy.yml ํ์ผ์ ์์ฑํ์ธ์:
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/main'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist- GitHub ์ ์ฅ์์์ Settings ํญ์ผ๋ก ์ด๋
- ์ผ์ชฝ ๋ฉ๋ด์์ Pages ํด๋ฆญ
- Source ์น์ ์์ Deploy from a branch ์ ํ
- Branch๋ฅผ
gh-pages๋ก ์ค์ ํ๊ณ Save ํด๋ฆญ
# ํ๋ก์ ํธ ๋น๋
npm run build
# gh-pages ๋ธ๋์น ์์ฑ ๋ฐ ๋ฐฐํฌ (package.json์ deploy ์คํฌ๋ฆฝํธ ํฌํจ)
npm run deploy๋๋ gh-pages ํจํค์ง๋ฅผ ์ง์ ์ฌ์ฉ:
npm install -g gh-pages
gh-pages -d dist- GitHub ์ ์ฅ์์์ Settings โ Pages ์ด๋
- Source๋ฅผ Deploy from a branch๋ก ์ค์
- Branch๋ฅผ
gh-pages๋ก ์ค์
๋ฐฐํฌ๊ฐ ์๋ฃ๋๋ฉด https://your-username.github.io/ssafit์์ ์ ์ํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ๋ฃจํธ์ .env ํ์ผ์ ์์ฑํ์ธ์:
# API ์ค์
VITE_API_BASE_URL=/api
# ์ฑ ์ค์
VITE_APP_TITLE=์นด๋ ๋น๊ต ๋ฐ ์ถ์ฒ ์๋น์ค
VITE_APP_DESCRIPTION=์ผ์ฑ์ ์ ๋ธ๋๋ ์์์ ํ์ฉํ ์นด๋ ๋น๊ต ๋ฐ AI ์ถ์ฒ ์น์ฌ์ดํธGitHub Pages์์๋ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ฏ๋ก VITE_API_BASE_URL์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ์ธ์:
# GitHub Pages ๋ฐฐํฌ์ฉ
VITE_API_BASE_URL=/ssafit/apivite.config.ts์์ GitHub Pages ๋ฐฐํฌ๋ฅผ ์ํ base ๊ฒฝ๋ก๊ฐ ์ค์ ๋์ด ์์ต๋๋ค:
export default defineConfig({
plugins: [vue()],
// GitHub Pages ๋ฐฐํฌ๋ฅผ ์ํ base ๊ฒฝ๋ก
base: '/ssafit/',
server: {
port: 3000
}
})src/
โโโ views/ # ํ์ด์ง ์ปดํฌ๋ํธ
โ โโโ HomeView.vue # ํํ์ด์ง
โ โโโ CardsView.vue # ์นด๋ ๋ชฉ๋ก
โ โโโ CompareView.vue # ์นด๋ ๋น๊ต
โ โโโ ChatbotView.vue # AI ์ฑ๋ด
โโโ services/ # API ์๋น์ค
โ โโโ api.ts # API ํธ์ถ ๋ฐ ํ์
์ ์
โโโ stores/ # ์ํ ๊ด๋ฆฌ
โ โโโ compare.ts # ์นด๋ ๋น๊ต ์คํ ์ด
โโโ router/ # ๋ผ์ฐํ
์ค์
โโโ App.vue # ๋ฉ์ธ ์ฑ ์ปดํฌ๋ํธ
โโโ main.ts # ์ฑ ์ง์
์
โโโ style.css # ๊ธ๋ก๋ฒ ์คํ์ผ
public/
โโโ api/ # ๋๋ฏธ API ๋ฐ์ดํฐ
โโโ cards.json # ์นด๋ ๋ชฉ๋ก ๋ฐ์ดํฐ
โโโ popular-cards.json # ์ธ๊ธฐ ์นด๋ ๋ฐ์ดํฐ
โโโ chatbot-responses.json # ์ฑ๋ด ์๋ต ๋ฐ์ดํฐ
ํ๋ก์ ํธ๋ ์ค์ ๋ฐฑ์๋ API๋ฅผ ์๋ฎฌ๋ ์ด์
ํ๊ธฐ ์ํด public/api/ ํด๋์ JSON ํ์ผ๋ค์ ์ ๊ณตํฉ๋๋ค:
{
"success": true,
"data": {
"cards": [...],
"categories": [...],
"total": 6
}
}{
"success": true,
"data": {
"popularCards": [...]
}
}{
"success": true,
"data": {
"responses": {
"greeting": {...},
"daily_life": {...},
"transportation": {...},
...
}
}
}- ์ค์ API ํธ์ถ ์๋ฎฌ๋ ์ด์ : fetch API๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฏธ JSON ํ์ผ ํธ์ถ
- ๋ก๋ฉ ์ํ ๊ด๋ฆฌ: ๊ฐ API ํธ์ถ์ ๋ํ ๋ก๋ฉ ์คํผ๋ ์ ๊ณต
- ์๋ฌ ์ฒ๋ฆฌ: ๋คํธ์ํฌ ์ค๋ฅ ๋ฐ ๋ฐ์ดํฐ ๋ก๋ฉ ์คํจ ์ฒ๋ฆฌ
getCards(): ์ ์ฒด ์นด๋ ๋ชฉ๋ก ์กฐํgetPopularCards(): ์ธ๊ธฐ ์นด๋ TOP 3 ์กฐํgetCardById(id): ํน์ ์นด๋ ์์ธ ์ ๋ณด ์กฐํgetChatbotResponse(type): ์ฑ๋ด ์๋ต ์กฐํsearchCards(params): ์นด๋ ๊ฒ์ ๋ฐ ํํฐ๋ง
- ์๋น์ค ์๊ฐ ๋ฐ ์ฃผ์ ๊ธฐ๋ฅ ์๋ด
- ์ธ๊ธฐ ์นด๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ (API์์ ๋์ ๋ก๋ฉ)
- AI ์ถ์ฒ ์๋น์ค CTA
- ์ ์ฒด ์นด๋ ๋ชฉ๋ก ํ์ (API์์ ๋์ ๋ก๋ฉ)
- ํํฐ๋ง ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ
- ์นด๋ ์์ธ ์ ๋ณด ๋ชจ๋ฌ
- ๋ก๋ฉ ์ํ ๋ฐ ์๋ฌ ์ฒ๋ฆฌ
- ํ์ฌ ์ํ: ์์ ํ ๊ตฌํ๋์ด ์ ์ ์๋
- ์ ํํ ์นด๋๋ค์ ์์ธ ๋น๊ต ๊ธฐ๋ฅ
- ๋น๊ต ํ ์ด๋ธ ํํ๋ก ์ ๋ณด ์ ๊ณต
- AI ์ถ์ฒ ๊ฒฐ๊ณผ ํ์
- ์นด๋ ์ ํ ๋ชจ๋ฌ
- ๋ํํ ์นด๋ ์ถ์ฒ ์์คํ (API ๊ธฐ๋ฐ ์๋ต)
- ์ค์๊ฐ ์ฑํ ์ธํฐํ์ด์ค
- ์ถ์ฒ ๊ฒฐ๊ณผ ์ค์๊ฐ ์ ๋ฐ์ดํธ
- ๋น ๋ฅธ ์๋ต ๋ฒํผ
- Primary Blue: #1428a0 (์ผ์ฑ์ ์ ๋ฉ์ธ ๋ธ๋ฃจ)
- Light Blue: #1e3a8a
- Dark Blue: #0f172a
- Gray: #64748b
- Light Gray: #f1f5f9
- White: #ffffff
- Black: #0f172a
- Desktop: 1200px ์ด์
- Tablet: 768px - 1199px
- Mobile: 767px ์ดํ
src/style.css ํ์ผ์ CSS ๋ณ์๋ฅผ ์์ ํ์ฌ ์์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค:
:root {
--samsung-blue: #1428a0;
--samsung-light-blue: #1e3a8a;
/* ... */
}public/api/cards.json ํ์ผ์ ์๋ก์ด ์นด๋ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
public/api/chatbot-responses.json ํ์ผ์์ ์ฑ๋ด์ ์๋ต์ ์์ ํ ์ ์์ต๋๋ค.
- ์นด๋ ๋น๊ต ๊ธฐ๋ฅ ์ค์ ๊ตฌํ
- ์ค์ ๋ฐฑ์๋ API ์ฐ๋
- ์ฌ์ฉ์ ์ธ์ฆ ์์คํ
- ์นด๋ ์ ์ฒญ ๊ธฐ๋ฅ
- ์ค์๊ฐ ์๋ฆผ ์์คํ
- ์ฑ๋ฅ ์ต์ ํ
- PWA ์ง์
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์์ฌํญ์ด ์์ผ์๋ฉด ์ด์๋ฅผ ์์ฑํด์ฃผ์ธ์.