Skip to content

Latest commit

ย 

History

626 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Muffin overview

๐Ÿง Muffin

๋งค์ผ ์•„์นจ ๊ฐ€๋ณ๊ฒŒ ์ฆ๊ธฐ๋Š” ๊ธˆ์œต ํ•€์…‹ ๊ฐ€์ด๋“œ

AI๊ฐ€ ์˜ค๋Š˜์˜ ๊ฒฝ์ œ ๋‰ด์Šค๋ฅผ ์ดˆ๋ณด์ž ๋ˆˆ๋†’์ด๋กœ ํ’€์–ด ์ฃผ๊ณ ,
๊ทธ ๋‰ด์Šค๊ฐ€ ์‹ค์ œ ์‹œ์žฅ์— ๋ฏธ์นœ ์˜ํ–ฅ์„ ๋ชจ์˜ํˆฌ์ž๋กœ ์ง์ ‘ ํ™•์ธํ•˜๋ฉฐ ๋ฐฐ์šฐ๋Š” ๊ฒฝ์ œ ํ•™์Šต ์„œ๋น„์Šค


์„œ๋น„์Šค ๋ฐ”๋กœ๊ฐ€๊ธฐ



API ๋ฌธ์„œ API ์‹œ์—ฐ ์˜์ƒ



Stars Views Closed PRs Commits

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

๐Ÿ“ฐ ์˜ค๋Š˜์˜ ๋‰ด์Šค

  • RSS๋กœ ๋ชจ์€ ๊ฒฝ์ œ ๋‰ด์Šค๋ฅผ AI๊ฐ€ ์ดˆ๋ณด์ž ๋ˆˆ๋†’์ด๋กœ ์žฌ๊ตฌ์„ฑ
  • ์–ด๋ ค์šด ์šฉ์–ด๋Š” ๋ณธ๋ฌธ์—์„œ ํ•˜์ด๋ผ์ดํŠธ โ†’ ํƒญํ•˜๋ฉด ๋œปํ’€์ด
  • ๋‹จ๊ณ„๋ณ„ ํ•ด์„ค ์นด๋“œ๋กœ ๋ฐฐ๊ฒฝ๊นŒ์ง€ ์ดํ•ด
  • ์Šคํฌ๋žฉ ยท ์ตœ๊ทผ ์ฝ์€ ๋‰ด์Šค ยท ์šฉ์–ด ์ €์žฅ

๐Ÿง  ์˜ค๋Š˜์˜ ํ•œ์ž… ํ€ด์ฆˆ

  • ๊ทธ๋‚  ๋‰ด์Šค๋กœ ๋งŒ๋“  ํ•˜๋ฃจ 3๋ฌธํ•ญ ํ€ด์ฆˆ
  • ์ œ์ถœ ์ฆ‰์‹œ ์ •๋‹ต ยท ํ•ด์„ค ยท ์ง„ํ–‰๋ฅ  ํ™•์ธ
  • ์ •๋‹ต ์ˆ˜์— ๋”ฐ๋ผ ๊ฐ€์ƒ ๋จธ๋‹ˆ ๋ณด์ƒ ์ง€๊ธ‰
  • ํ•™์Šต ์ €์žฅ์†Œ์—์„œ ์ง€๋‚œ ํ€ด์ฆˆ ๋ณต์Šต

๐Ÿ“ˆ ์„นํ„ฐ ๋ชจ์˜ํˆฌ์ž

  • ๋‰ด์Šค๊ฐ€ ์–ด๋А ์„นํ„ฐ์— ํ˜ธ์žฌ/์•…์žฌ์ธ์ง€ ๋ณด๊ณ  ํˆฌ์ž ๊ฒฐ์ •
  • ๊ฐ€์ƒ ๋จธ๋‹ˆ๋กœ ์„นํ„ฐ๋ณ„ ์ˆ˜๋Ÿ‰ ๋ฐฐ๋ถ„
  • ์‹ค์ œ ETF ์‹œ๊ฐ€ยท์ข…๊ฐ€๋กœ ๋งค์ผ ์ž๋™ ์ •์‚ฐ
  • ์ž์ • ๋งˆ๊ฐ ์ „๊นŒ์ง€ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜์ •

๐Ÿ“Š ์„ฑ๊ณผ & ๋žญํ‚น

  • ๋ˆ„์  ์ˆ˜์ต๋ฅ  ๊ทธ๋ž˜ํ”„์™€ TOP3 ์„นํ„ฐ
  • ์ผ ยท ์ฃผ ยท ์›” ยท ๋…„ ๊ธฐ๊ฐ„๋ณ„ ์†์ต ๋‚ด์—ญ
  • ์‘๋‹ต ๊ฒฐ๊ณผ์™€ ์ŠคํŠธ๋ฆญ์œผ๋กœ ์ •ํ•ด์ง€๋Š” ํˆฌ์ž ์„ฑํ–ฅ ์บ๋ฆญํ„ฐ
  • ์ฃผ๊ฐ„ ์ˆ˜์ต๋ฅ  TOP 10 ๋žญํ‚น๊ณผ ๋‚ด ์ˆœ์œ„

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

Backend

Java Spring Boot Spring Security JPA QueryDSL JWT Gradle

Database

MySQL Flyway

AI ยท ์™ธ๋ถ€ ์—ฐ๋™

OpenAI RSS Jsoup

Infra ยท CI/CD

AWS EC2 AWS RDS ECR SSM Terraform Docker GitHub Actions

Observability ยท Docs

Grafana Prometheus Loki REST Docs Swagger


๐Ÿ— ์•„ํ‚คํ…์ฒ˜

Muffin ์•„ํ‚คํ…์ฒ˜

๐Ÿงฑ ๊ฐœ๋ฐœ ๋ฐฉ์‹

DDD ๊ธฐ๋ฐ˜: ๋„๋ฉ”์ธ์œผ๋กœ ๋จผ์ € ๋‚˜๋ˆ„๊ณ  ๊ทธ ์•ˆ์—์„œ ๋ ˆ์ด์–ด๋ฅผ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์€ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์—”ํ‹ฐํ‹ฐ ์•ˆ์— ๋‘ก๋‹ˆ๋‹ค.

// ์˜์กด ๋ฐฉํ–ฅ
presentation  โ†’  application  โ†’  domain
   ์ง„์ž…์           ํŠธ๋žœ์žญ์…˜ยท์กฐ๋ฆฝ      ๊ทœ์น™ ๋ณธ์ฒด
                                    โ†‘
                              infrastructure
                                  ์™ธ๋ถ€ ์—ฐ๋™
// ํŒจํ‚ค์ง€ ๋ ˆ์ด์–ด ๊ตฌ์กฐ
com/muffin/investment/            โ† ๋„๋ฉ”์ธ (news ยท quiz ยท sector ยท stats ยท ranking ยท auth ...)
โ”œโ”€โ”€ presentation/                 ์ปจํŠธ๋กค๋Ÿฌ ยท ์Šค์ผ€์ค„๋Ÿฌ ยท DTO ยท Swagger
โ”œโ”€โ”€ application/                  CommandService(์“ฐ๊ธฐ) ยท QueryService(์ฝ๊ธฐ)
โ”œโ”€โ”€ domain/investment/            ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ : Investment + InvestmentSector
โ”‚         userasset/              ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ : UserAsset
โ””โ”€โ”€ infrastructure/               QueryDSL ยท ์™ธ๋ถ€ API ยท AI ํด๋ผ์ด์–ธํŠธ
๊ทœ์น™ ๋‚ด์šฉ
๐Ÿšซ @Setter ๊ธˆ์ง€ ์ƒํƒœ ๋ณ€๊ฒฝ์€ settle() ๊ฐ™์€ ๋™์‚ฌ ๋ฉ”์„œ๋“œ๋กœ๋งŒ
๐Ÿ“ฆ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ๋‹จ์œ„ ๋ฃจํŠธ๋งˆ๋‹ค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ 1๊ฐœ, ์ž์‹ ์ „์šฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์—†์Œ
๐Ÿ”— ID ์ฐธ์กฐ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ๊ฒฝ๊ณ„๋Š” FK ๋Œ€์‹  ID๋กœ ์ฐธ์กฐ
โ†”๏ธ CQRS ์“ฐ๊ธฐ๋Š” ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ ๋ฃจํŠธ๋กœ, ์ฝ๊ธฐ๋Š” DTO๋กœ ์ง์ ‘ projection
โžก๏ธ ๋‹จ๋ฐฉํ–ฅ ์˜์กด domain์€ ์ปจํŠธ๋กค๋ŸฌยทDTO๋ฅผ ๋ชจ๋ฆ„

ํ˜‘์—… ๊ทœ์น™

  • ๐ŸŒฟ ๋ธŒ๋žœ์น˜ : feat/#์ด์Šˆ๋ฒˆํ˜ธ โ†’ dev ๋กœ๋งŒ PR, main ์—๋Š” dev ยท hotfix ๋งŒ
  • ๐Ÿ“ ์ปค๋ฐ‹ : [ํƒ€์ž…/#์ด์Šˆ๋ฒˆํ˜ธ] ์ œ๋ชฉ + ๋ณธ๋ฌธ ๋ถˆ๋ฆฟ (feat fix docs setting refactor test deploy chore)
  • ๐Ÿ” PR : ์ž‘์€ PR ๊ทœ์น™ ๋„์ž…; 1,000์ค„ ์ด๋‚ด๋กœ ์ชผ๊ฐœ๊ธฐ, approve 1์ธ + CI ํ†ต๊ณผํ•ด์•ผ ๋จธ์ง€
  • ๐ŸŽจ ํฌ๋งทํŒ… : palantirJavaFormat + Spotless, ๋นŒ๋“œ ์‹œ ์ž๋™ ์‹คํ–‰ํ•˜๊ณ  CI์—์„œ ๊ฒ€์‚ฌ
  • ๐Ÿ—ƒ๏ธ ์Šคํ‚ค๋งˆ : Flyway ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์œผ๋กœ๋งŒ ๋ณ€๊ฒฝ, ์šด์˜์€ ddl-auto: validate
  • โœ… ํ…Œ์ŠคํŠธ : ํ•จ์ˆ˜๋ช…์€ ์˜์–ด๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ, @DisplayName์€ ํ•œ๊ตญ์–ด๋กœ ์ฝ๊ธฐ ์ข‹๊ฒŒ

๐Ÿ‘ฅ ํŒ€์›


@yeonthusiast

๐Ÿ‘‘ ๋ฆฌ๋“œ
๐Ÿ“ˆ ๋ชจ์˜ํˆฌ์ž ยท ์ •์‚ฐ
๐Ÿ“Š ํ†ต๊ณ„

@skays1212

ํŒ€์›
๐Ÿ“ฐ AI ยท ๋‰ด์Šค
โ˜๏ธ ์ธํ”„๋ผ

@sekong11

ํŒ€์›
๐Ÿง  AI ยท ํ€ด์ฆˆ
๐Ÿ“ฐ ๋‰ด์Šค

@LeeJeongHeon02

ํŒ€์›
๐Ÿท๏ธ ์„นํ„ฐ ยท ETF ์‹œ์„ธ
๐Ÿ† ๋žญํ‚น

@Eugene-Shin

ํŒ€์›
๐Ÿ” ์ธ์ฆ ยท ํšŒ์›
๐Ÿ”” ์•Œ๋ฆผ

๐Ÿ“ ์ €์žฅ์†Œ ๊ตฌ์กฐ

muffin-back/
โ”œโ”€โ”€ backend/        Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ (๋„๋ฉ”์ธ๋ณ„ โ†’ ๋ ˆ์ด์–ด DDD ๊ตฌ์กฐ)
โ”œโ”€โ”€ infra/
โ”‚   โ”œโ”€โ”€ terraform/  AWS ์ธํ”„๋ผ (EC2 ยท RDS ยท ECR ยท IAM ยท ๋„คํŠธ์›Œํฌ)
โ”‚   โ””โ”€โ”€ monitoring/ Grafana Alloy ์ˆ˜์ง‘๊ธฐ ์„ค์ •
โ””โ”€โ”€ .github/        CI ยท CD ์›Œํฌํ”Œ๋กœ

๐Ÿง Muffin ยท Made with care by the money-pin team

2026. 08. 11. ver.

About

Muffin ๐Ÿง ๋งค์ผ ์•„์นจ ๊ฐ€๋ณ๊ฒŒ ์ฆ๊ธฐ๋Š” ๊ธˆ์œต ํ•€์…‹ ๊ฐ€์ด๋“œ | Backend

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages