Skip to content

team-moneed/Moneed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ฐ Moneed

์ฃผ์‹ ํˆฌ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ - ํˆฌ์ž์ž๋“ค์ด ๋ชจ์—ฌ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ์Šค๋งˆํŠธํ•œ ๊ณต๊ฐ„

Vercel Next.js TypeScript Prisma PostgreSQL

๐Ÿ“‹ ๋ชฉ์ฐจ

๐Ÿš€ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

Moneed๋Š” ์ฃผ์‹ ํˆฌ์ž์ž๋“ค์„ ์œ„ํ•œ ์ข…ํ•ฉ์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์ด ์ฃผ์‹ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ณ , ํˆฌ์ž ์˜๊ฒฌ์„ ๋‚˜๋ˆ„๋ฉฐ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‹œ์žฅ ๋™ํ–ฅ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ  ์ปค๋ฎค๋‹ˆํ‹ฐ

์ปค๋ฎค๋‹ˆํ‹ฐ ํŽ˜์ด์ง€
  • Top 5: ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์ข…๋ชฉ ์‹ค์‹œ๊ฐ„ ๋žญํ‚น
  • ์ง€๊ธˆ ๋œจ๋Š” ์ข…๋ชฉ: ๊ธ‰์ƒ์Šน ์ฃผ์‹ ์ถ”์ฒœ
  • ํ•ซํ•œ ํˆฌํ‘œ: ์ปค๋ฎค๋‹ˆํ‹ฐ ํˆฌํ‘œ๋ฅผ ํ†ตํ•œ ์‹œ์žฅ ์‹ฌ๋ฆฌ ํŒŒ์•… (์˜ˆ์ •)
  • ์ธ๊ธฐ ๊ธ‰์ƒ์Šน ๊ฒŒ์‹œ๊ธ€: ๊ฐ€์žฅ ํ™œ๋ฐœํ•œ ํ† ๋ก  ๊ฒŒ์‹œ๋ฌผ
  • ๊ธฐ์—… ๋ฐ์ดํ„ฐ: ๊ธฐ์—… ์†Œ๊ฐœ ๋ฐ ์‹ค์‹œ๊ฐ„ ์ฃผ๊ฐ€ ๋ฐ ๋ณ€๋™๋ฅ  ํ‘œ์‹œ

๐Ÿ’ฌ ๊ฒŒ์‹œํŒ

๊ฒŒ์‹œ๊ธ€ ํŽ˜์ด์ง€
  • ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ/์ˆ˜์ •/์‚ญ์ œ: ๊ฒŒ์‹œ๊ธ€ CRUD
  • ๋Œ“๊ธ€ ์‹œ์Šคํ…œ: ์‹ค์‹œ๊ฐ„ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ
  • ์ข‹์•„์š”: ๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š” ๊ธฐ๋Šฅ
  • ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ: AWS S3 ์—ฐ๋™ ํŒŒ์ผ ์ €์žฅ
  • ๋žญํ‚น ์‹œ์Šคํ…œ: ๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฐ˜ ์ธ๊ธฐ ๊ธ‰์ƒ์Šน ๊ฒŒ์‹œ๊ธ€ ํ‘œ์‹œ

๐Ÿ‘ค ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

๋งˆ์ด ํŽ˜์ด์ง€
  • ์นด์นด์˜ค OAuth ๋กœ๊ทธ์ธ: ๊ฐ„ํŽธํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ
  • ํ”„๋กœํ•„ ๊ด€๋ฆฌ: ๋‹‰๋„ค์ž„, ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์„ค์ •
  • ๋‚ด ํ™œ๋™: ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€/๋Œ“๊ธ€ ๊ด€๋ฆฌ
  • ํšŒ์› ํƒˆํ‡ด: ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ์•ˆ์ „ํ•œ ํƒˆํ‡ด

๐ŸŽฌ ์‡ผ์ธ  (Shorts)

์ˆํผ ํŽ˜์ด์ง€
  • ๋™์˜์ƒ ์ฝ˜ํ…์ธ : YouTube API ์—ฐ๋™์„ ํ†ตํ•œ ํˆฌ์ž ๊ด€๋ จ ์˜์ƒ ์ œ๊ณต
  • Cron Job์„ ์ด์šฉํ•œ ์ผ์ผ ์—…๋ฐ์ดํŠธ(์˜ˆ์ •)

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

Frontend

  • 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

Backend

  • Web App: Next.js API Routes
  • Proxy Server: Express.js (์นด์นด์˜ค OAuth ์ฒ˜๋ฆฌ)
  • Language: TypeScript
  • Authentication: JWT

Database & ORM

  • Database: PostgreSQL (Supabase)
  • ORM: Prisma ORM

External APIs

  • ์ฃผ์‹ ๋ฐ์ดํ„ฐ: ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ API
  • ๋™์˜์ƒ ์ฝ˜ํ…์ธ : YouTube Data API v3
  • OAuth: ์นด์นด์˜ค ๋กœ๊ทธ์ธ API
  • ํŒŒ์ผ ์ €์žฅ: AWS S3

DevOps & Deployment

  • Frontend: Vercel
  • Backend: AWS EC2
  • CI/CD: GitHub Actions

Development Tools

  • 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 ์„œ๋ฒ„]

Loading

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

  • Conventional Commits ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค
  • ์ฝ”๋“œ ์ž‘์„ฑ ์ „ ESLint ๋ฐ Prettier ์„ค์ •์„ ํ™•์ธํ•˜์„ธ์š”
  • ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค

๐Ÿ“ž ๋ฌธ์˜

ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ฌธ์˜์‚ฌํ•ญ์ด๋‚˜ ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋Š” Issues๋ฅผ ํ†ตํ•ด ์ œ์ถœํ•ด ์ฃผ์„ธ์š”.


Moneed์™€ ํ•จ๊ป˜ ์Šค๋งˆํŠธํ•œ ํˆฌ์ž๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”! ๐Ÿš€

About

Front-End

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages