์ฃผ์ ํฌ์ ์ปค๋ฎค๋ํฐ ํ๋ซํผ - ํฌ์์๋ค์ด ๋ชจ์ฌ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ณ ์ํตํ ์ ์๋ ์ค๋งํธํ ๊ณต๊ฐ
Moneed๋ ์ฃผ์ ํฌ์์๋ค์ ์ํ ์ข ํฉ์ ์ธ ์ปค๋ฎค๋ํฐ ํ๋ซํผ์ ๋๋ค. ์ฌ์ฉ์๋ค์ด ์ฃผ์ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ณ , ํฌ์ ์๊ฒฌ์ ๋๋๋ฉฐ, ์ค์๊ฐ์ผ๋ก ์์ฅ ๋ํฅ์ ํ์ ํ ์ ์๋๋ก ๋์ต๋๋ค.
- Top 5: ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ข ๋ชฉ ์ค์๊ฐ ๋ญํน
- ์ง๊ธ ๋จ๋ ์ข ๋ชฉ: ๊ธ์์น ์ฃผ์ ์ถ์ฒ
- ํซํ ํฌํ: ์ปค๋ฎค๋ํฐ ํฌํ๋ฅผ ํตํ ์์ฅ ์ฌ๋ฆฌ ํ์ (์์ )
- ์ธ๊ธฐ ๊ธ์์น ๊ฒ์๊ธ: ๊ฐ์ฅ ํ๋ฐํ ํ ๋ก ๊ฒ์๋ฌผ
- ๊ธฐ์ ๋ฐ์ดํฐ: ๊ธฐ์ ์๊ฐ ๋ฐ ์ค์๊ฐ ์ฃผ๊ฐ ๋ฐ ๋ณ๋๋ฅ ํ์
- ๊ฒ์๊ธ ์์ฑ/์์ /์ญ์ : ๊ฒ์๊ธ CRUD
- ๋๊ธ ์์คํ : ์ค์๊ฐ ๋๊ธ ๊ธฐ๋ฅ
- ์ข์์: ๊ฒ์๊ธ ์ข์์ ๊ธฐ๋ฅ
- ์ด๋ฏธ์ง ์ ๋ก๋: AWS S3 ์ฐ๋ ํ์ผ ์ ์ฅ
- ๋ญํน ์์คํ : ๋ญํน ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฐ ์ธ๊ธฐ ๊ธ์์น ๊ฒ์๊ธ ํ์
- ์นด์นด์ค OAuth ๋ก๊ทธ์ธ: ๊ฐํธํ ์์ ๋ก๊ทธ์ธ
- ํ๋กํ ๊ด๋ฆฌ: ๋๋ค์, ํ๋กํ ์ด๋ฏธ์ง ์ค์
- ๋ด ํ๋: ๋ด๊ฐ ์์ฑํ ๊ฒ์๊ธ/๋๊ธ ๊ด๋ฆฌ
- ํ์ ํํด: ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ์ํ ์์ ํ ํํด
- ๋์์ ์ฝํ ์ธ : YouTube API ์ฐ๋์ ํตํ ํฌ์ ๊ด๋ จ ์์ ์ ๊ณต
- Cron Job์ ์ด์ฉํ ์ผ์ผ ์ ๋ฐ์ดํธ(์์ )
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS 4
- State Management: Zustand
- Data Fetching: TanStack Query (React Query)
- Form Handling: React Hook Form
- Web App: Next.js API Routes
- Proxy Server: Express.js (์นด์นด์ค OAuth ์ฒ๋ฆฌ)
- Language: TypeScript
- Authentication: JWT
- Database: PostgreSQL (Supabase)
- ORM: Prisma ORM
- ์ฃผ์ ๋ฐ์ดํฐ: ํ๊ตญํฌ์์ฆ๊ถ API
- ๋์์ ์ฝํ ์ธ : YouTube Data API v3
- OAuth: ์นด์นด์ค ๋ก๊ทธ์ธ API
- ํ์ผ ์ ์ฅ: AWS S3
- Frontend: Vercel
- Backend: AWS EC2
- CI/CD: GitHub Actions
- Package Manager: Yarn (Workspaces)
- Code Quality: ESLint, Prettier
- Git Hooks: Husky, lint-staged
- Type Checking: TypeScript
Moneed/
โโโ apps/ # ์ ํ๋ฆฌ์ผ์ด์
๋ค
โ โโโ web/ # Next.js ์น ์ ํ๋ฆฌ์ผ์ด์
โ โ โโโ app/ # App Router ํ์ด์ง
โ โ โ โโโ api/ # API ๋ผ์ฐํธ
โ โ โ โโโ community/ # ์ปค๋ฎค๋ํฐ ํ์ด์ง
โ โ โ โโโ posts/ # ๊ฒ์๊ธ ํ์ด์ง
โ โ โ โโโ auth/ # ์ธ์ฆ ํ์ด์ง
โ โ โ โโโ ...
โ โ โโโ src/ # ์์ค ์ฝ๋
โ โ โโโ entities/ # ๋๋ฉ์ธ ์ํฐํฐ
โ โ โโโ features/ # ๊ธฐ๋ฅ๋ณ ๋ชจ๋
โ โ โโโ screens/ # ํ์ด์ง ์ปดํฌ๋ํธ
โ โ โโโ shared/ # ๊ณต์ ์ปดํฌ๋ํธ/์ ํธ
โ โ โโโ app/ # ์ฑ ์ค์
โ โโโ kakao-proxy-server/ # ์นด์นด์ค OAuth ํ๋ก์ ์๋ฒ
โ โโโ src/
โ โโโ api/ # ์ธ๋ถ API ํธ์ถ
โ โโโ middleware/ # Express ๋ฏธ๋ค์จ์ด
โ โโโ routes/ # API ๋ผ์ฐํธ
โ โโโ service/ # ๋น์ฆ๋์ค ๋ก์ง
โ โโโ repository/ # ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต
โ โโโ utils/ # ์ ํธ๋ฆฌํฐ ํจ์
โโโ packages/ # ๊ณต์ ํจํค์ง๋ค
โ โโโ shared/
โ โโโ auth/ # ์ธ์ฆ ๊ด๋ จ ์ ํธ
โ โโโ utils/ # ๊ณตํต ์ ํธ๋ฆฌํฐ
โ โโโ utility-types/ # ํ์
์ ์
โโโ docs/ # ๋ฌธ์
โ โโโ CHANGELOG.md # ๋ฐฐํฌ ๋ณ๊ฒฝ ๋ด์ญ
โโโ vercel.json # Vercel ์ค์
flowchart TD
Client[Client]
subgraph Vercel["Vercel"]
Next[Next.js ์๋ฒ]
end
subgraph EC2["AWS EC2"]
Express[Express ์๋ฒ]
end
Client --> Next
Client --> Express
Next --> |API ํธ์ถ| ํ๊ตญํฌ์์ฆ๊ถ[ํ๊ตญํฌ์์ฆ๊ถ API ์๋ฒ]
Next --> |API ํธ์ถ| Youtube[Youtube API ์๋ฒ]
Next --> |ํ์ผ ์
๋ก๋| S3[AWS S3]
Next --> |DB ์ฐ๋| Supabase[Supabase]
Next --> Express
Express --> |API ํธ์ถ| Kakao[Kakao API ์๋ฒ]
- Conventional Commits ๊ท์น์ ๋ฐ๋ฆ ๋๋ค
- ์ฝ๋ ์์ฑ ์ ESLint ๋ฐ Prettier ์ค์ ์ ํ์ธํ์ธ์
- ์ปค๋ฐ ๋ฉ์์ง๋ ํ๊ตญ์ด๋ก ์์ฑํฉ๋๋ค
ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์์ฌํญ์ด๋ ๋ฒ๊ทธ ๋ฆฌํฌํธ๋ Issues๋ฅผ ํตํด ์ ์ถํด ์ฃผ์ธ์.
Moneed์ ํจ๊ป ์ค๋งํธํ ํฌ์๋ฅผ ์์ํ์ธ์! ๐