Skip to content

๐Ÿ’ซ Zaply | AI ๊ธฐ๋ฐ˜ Multi-SNS ์ฝ˜ํ…์ธ  ๋ฐฐํฌ&๊ด€๋ฆฌ ์„œ๋น„์Šค

Notifications You must be signed in to change notification settings

kusitms-com/31th_Meetup_Team1_Zaply_Back

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

Zaply Server

๋Œ€ํ•™์ƒ IT๊ฒฝ์˜ํ•™ํšŒ ํ์‹œ์ฆ˜ 31๊ธฐ ๋ฐ‹์—… ํ”„๋กœ์ ํŠธ 1์กฐ Zaply ๋ฐฑ์—”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ 1



๐Ÿ‘ฌ Member

์ •์„ฑํ˜ธ ์—ผ์ง€์€
์ •์„ฑํ˜ธ ์—ผ์ง€์€
@SeongHo5356 @yumzen



๐Ÿ“ Technology Stack

Category Technology
Language Java 21
Framework Spring Boot 3.3.10
Databases Postgresql, Redis
Authentication JWT, Spring Security, OAuth2.0
Development Tools Lombok
API Documentation Swagger UI (SpringDoc)
Storage AWS S3, Naver Object Storage
Infrastructure Terraform, NCP Server, HashiCorp Vault
Build Tools Gradle
Monitoring Prometheus, Grafana, Loki, Promtail



๐Ÿ“… ERD

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-05-29 แ„‹แ…ฉแ„’แ…ฎ 11 37 30



API ๋ช…์„ธ์„œ

https://api.zapply.site/swagger-ui/index.html



๐Ÿ”จ Project Architecture

image



โญ๏ธ ๊ธฐ์ˆ ์Šคํƒ/์„ ์ •์ด์œ 

1๏ธโƒฃย Java 21

  • Java 21์€ ์ตœ์‹  ์–ธ์–ด ๊ธฐ๋Šฅ(์˜ˆ: ํŒจํ„ด ๋งค์นญ, ๋ ˆ์ฝ”๋“œ, ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ ๋“ฑ)์„ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋ฉฐ, ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ์ตœ์‹  ๋ฒ„์ „์˜ ์ž๋ฐ”๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ๊ฐœ์„ ๋˜์–ด, ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์•ˆ์ •์ ์ด๊ณ  ๋น ๋ฅธ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ๊ธฐ ์ง€์› ๋ฒ„์ „์ด๋ฏ€๋กœ, ์•ž์œผ๋กœ์˜ ์œ ์ง€๋ณด์ˆ˜์™€ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃย SpringBoot 3.3.10

  • ์ตœ์‹  ๋ฒ„์ „์˜ Spring Boot๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ํ˜ธํ™˜์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, ๋ณด์•ˆ ํŒจ์น˜์™€ ์ตœ์‹  ๊ธฐ๋Šฅ๋“ค์ด ๋ฐ˜์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž๋™ ์„ค์ • ๊ธฐ๋Šฅ๊ณผ ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๊ธฐ๋Šฅ ๋•๋ถ„์— ๋ณต์žกํ•œ ์„ค์ • ์—†์ด๋„ ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • RESTful API, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค, ๋ณด์•ˆ ๋“ฑ์˜ ๊ธฐ๋Šฅ์ด ํ†ตํ•ฉ๋˜์–ด ์žˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃย SpringData JPA

  • Spring Data JPA๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ธํ„ฐ๋ž™์…˜์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค.

5๏ธโƒฃย PostgreSQL

  • PostgreSQL๋Š” ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ์™€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹ ๊ด€๋ฆฌ์— ๊ฐ•์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

6๏ธโƒฃย Docker compose

  • Docker Compose๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์†์‰ฝ๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์–ด, ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ๊ณผ์ •์—์„œ ํ™˜๊ฒฝ ์„ค์ •์„ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

7๏ธโƒฃย NCP(CLOVA studio, Server, Object Storage)

  • NCP(๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ)๋Š” CLOVA Studio ๋ฐ ์„œ๋ฒ„ ์ธํ”„๋ผ ํ˜ธ์ŠคํŒ…์— ํ™œ์šฉ๋˜์–ด, ์•ˆ์ •์ ์ด๊ณ  ์•ˆ์ „ํ•œ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ”„๋กœ์ ํŠธ์˜ ์šด์˜ ํšจ์œจ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

8๏ธโƒฃย Hashicorp Vault

  • ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ(ํ”Œ๋žซํผ ๋ณ„ ์‚ฌ์šฉ์ž accessToken ๋“ฑ)๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ , ๋ณด์•ˆ์„ฑ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

9๏ธโƒฃย Terraform

  • ์ธํ”„๋ผ๋ฅผ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ์–ด, ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜๊ณ  ์ผ๊ด€๋œ ์ธํ”„๋ผ ๊ตฌ์ถ• ๋ฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

9๏ธโƒฃย Promtail, Loki, Prometheus, Grafana

  • Promtail โ†’ Loki: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ยท์‹œ์Šคํ…œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ยท๋ผ๋ฒจ๋งํ•ด Loki์— ์ „์†ก โ†’ ๋Œ€๋Ÿ‰ ๋กœ๊ทธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ธ๋ฑ์‹ฑยท๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • Prometheus: Pull ๋ฐฉ์‹์œผ๋กœ API ์‘๋‹ต ์‹œ๊ฐ„ยทCPUยท๋ฉ”๋ชจ๋ฆฌ ๊ฐ™์€ ์‹œ๊ณ„์—ด ๋ฉ”ํŠธ๋ฆญ์„ ์Šคํฌ๋žฉยท์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • Grafana: LokiยทPrometheus ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์‹œ๋ณด๋“œ๋กœ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”Ÿย K6

  • JavaScript๋กœ ์‹ค์ œ ์‚ฌ์šฉ์ž ํ๋ฆ„(๋กœ๊ทธ์ธโ†’API ํ˜ธ์ถœโ†’์Šค์ผ€์ค„๋ง)์„ ์Šคํฌ๋ฆฝํŠธํ™”ํ•ด REST ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.
  • vus, stages, thresholds ๋“ฑ ์˜ต์…˜์œผ๋กœ ๋™์‹œ ์‚ฌ์šฉ์ž ์ˆ˜ยท์ŠคํŒŒ์ดํฌยท์ง€์† ํ…Œ์ŠคํŠธ๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ˜์†”ยทJSON ์ถœ๋ ฅ์œผ๋กœ ์‘๋‹ต ์‹œ๊ฐ„ยท์ฒ˜๋ฆฌ๋Ÿ‰ยท์—๋Ÿฌ์œจ ๋ฉ”ํŠธ๋ฆญ์„ ์ˆ˜์ง‘ํ•˜๊ณ  Grafana์— ์—ฐ๋™ํ•ด ๊ฒฐ๊ณผ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค.



๐Ÿ’ฌ Convention

commit convention
#์ด์Šˆ๋ฒˆํ˜ธ conventionType: ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ

convention Type

convention type description
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ตฌํ˜„
chore ๋ถ€์ˆ˜์ ์ธ ์ฝ”๋“œ ์ˆ˜์ • ๋ฐ ๊ธฐํƒ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ
docs ๋ฌธ์„œ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •, ์‚ญ์ œ
fix ๋ฒ„๊ทธ ์ˆ˜์ •
test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •, ์‚ญ์ œ
refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง



๐Ÿชต Branch

  • ์ปจ๋ฒค์…˜๋ช…/#์ด์Šˆ๋ฒˆํ˜ธ-์ž‘์—…๋‚ด์šฉ
  • pull request๋ฅผ ํ†ตํ•ด develop branch์— merge ํ›„, branch delete
  • ๋ถ€๋“์ดํ•˜๊ฒŒ develop branch์— ์ง์ ‘ commit ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, !hotfix: ์‚ฌ์šฉ



๐Ÿ“ Directory

src/
โ”œโ”€โ”€ main/
โ”‚   โ”œโ”€โ”€ domain/
โ”‚   โ”‚   โ”œโ”€โ”€ entity/
โ”‚   โ”‚   โ”œโ”€โ”€ controller/
โ”‚   โ”‚   โ”œโ”€โ”€ service/
โ”‚   โ”‚   โ”œโ”€โ”€ repository/
โ”‚   โ”‚   โ””โ”€โ”€ dto/
            โ”œโ”€โ”€ request/
            โ””โ”€โ”€ response/
โ”‚   โ”œโ”€โ”€ global/
โ”‚   โ”‚   โ”œโ”€โ”€ apiPayload/
โ”‚   โ”‚   โ”œโ”€โ”€ config/
โ”‚   โ”‚   โ”œโ”€โ”€ security/
		 



๐Ÿ“ˆ ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ

๊ฐ ํ”Œ๋žซํผ(Instagram, Facebook, Threads) API์—๋Š” ๊ณ„์ •/์‹œ๊ฐ„ ๋‹น ๋ฐœํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์— ์ œํ•œ์ด ์žˆ์–ด, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์—๋Š” ์ œ์•ฝ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ์ €ํฌ๋Š” ์ฆ‰์‹œ ๋ฐœํ–‰์ด ์•„๋‹Œ "์˜ˆ์•ฝ ๋ฐœํ–‰" API๋ฅผ ํ™œ์šฉํ•œ ๋ถ€ํ•˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐฉ์‹์„ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์‹œ๋‚˜๋ฆฌ์˜ค โ‘  10๋ช…์ด 1์ดˆ ๋™์•ˆ ์ตœ๋Œ€ํ•œ์˜ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค โ‘ก 2000๋ช…์ด 1์ดˆ ๋™์•ˆ ์ตœ๋Œ€ํ•œ์˜ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
image image
โœ… ์ด 120๊ฐœ์˜ ์š”์ฒญ์ด ๋ฌธ์ œ์—†์ด ์ฒ˜๋ฆฌ๋จ
- ํ‰๊ท  ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 82.09 ms
- ์ตœ์†Œ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 22.52ms
- ์ตœ๋Œ€ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 164.64ms
โœ… ์ด 4002๊ฐœ์˜ ์š”์ฒญ์ด ๋ฌธ์ œ์—†์ด ์ฒ˜๋ฆฌ๋จ
- ํ‰๊ท  ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 7.74s
- ์ตœ์†Œ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 21.9s
- ์ตœ๋Œ€ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 18.28s
- 95th ํผ์„ผํƒ€์ผ : 14.95s

์‹œ๋‚˜๋ฆฌ์˜ค โ‘ข ์‚ฌ์šฉ์ž ์ˆ˜ ๋ณ€๋™ ์‹œ๋‚˜๋ฆฌ์˜ค ์‹œ๋‚˜๋ฆฌ์˜ค โ‘ฃ ์‘๋‹ต ์‹œ๊ฐ„์ด 5์ดˆ ์ด๋‚ด์ธ ์ตœ๋Œ€ ์š”์ฒญ ์ˆ˜ ํŒŒ์•…
image image
0์ดˆ ~ 2์ดˆ : 50๋ช…, 2์ดˆ ~ 12์ดˆ : 300๋ช…, 12์ดˆ ~ 17์ดˆ : 1000๋ช…, 17์ดˆ ~ 18์ดˆ : 500๋ช… 5์ดˆ๊ฐ€ ์ง€๋‚  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ดํƒˆ์ด ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์—ฌ 1์ดˆ ๋™์•ˆ 1000๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด 5์ดˆ ์ด๋‚ด์ธ ์š”์ฒญ ๊ฐœ์ˆ˜๋ฅผ ํŒŒ์•…
โœ… ์ด 3789๊ฐœ์˜ ์š”์ฒญ์ด ๋ฌธ์ œ์—†์ด ์ฒ˜๋ฆฌ๋จ
- ํ‰๊ท  ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 1.94s
- ์ตœ์†Œ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 20.53ms
- ์ตœ๋Œ€ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ : 7.88s
โœ… ์ด 2002๊ฐœ์˜ ์š”์ฒญ์ด ์‹œ๊ฐ„ ๋‚ด ์ฒ˜๋ฆฌ๋จ

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ถ„์„

  • ํ˜„์žฌ ์‹œ์Šคํ…œ์€ ๋™์‹œ ์•ฝ 1,000๊ฑด ์ˆ˜์ค€๊นŒ์ง€๋Š” ์•ˆ์ •์ ์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค โ‘ข์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ์ ์ฐจ ์ฆ๊ฐ€ํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋„ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์€ 1.94์ดˆ, ์ตœ๋Œ€ ์‘๋‹ต ์‹œ๊ฐ„์€ 7.88์ดˆ๋กœ, ๋Œ€๋ถ€๋ถ„์˜ ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์‹œ๋‚˜๋ฆฌ์˜ค โ‘ก์ฒ˜๋Ÿผ 2,000๋ช…์˜ ๋™์‹œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์ด 7.74์ดˆ, ์ตœ๋Œ€ 18.28์ดˆ๊นŒ์ง€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์‘๋‹ต ์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฐ๊ณผ๋Š” ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๋ฉฐ, ์ถ”ํ›„ ์ด๋ฅผ ๊ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ๋‚˜๋ฆฌ์˜ค โ‘ฃ์—์„œ๋Š” 1000๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฒฝ์šฐ, ์ด 2,002๊ฑด์˜ ์š”์ฒญ์ด 5์ดˆ ์ด๋‚ด์— ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„์žฌ ์‹œ์Šคํ…œ์ด ์‹ค์‹œ๊ฐ„ ๋Œ€์‘๋ณด๋‹ค๋Š” ์˜ˆ์•ฝ ์ฒ˜๋ฆฌ์— ๋” ์ ํ•ฉํ•œ ๊ตฌ์กฐ์ž„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ดํƒˆ์ด ๋Š˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” 5์ดˆ ์ด๋‚ด ์‘๋‹ต์„ ๊ธฐ์ค€์œผ๋กœ ์˜ˆ์ƒ ์ ‘์†์ž ์ˆ˜ ์•ฝ 1,000๋ช… ์ •๋„์— ๋Œ€ํ•ด์„œ๋Š” ์ถฉ๋ถ„ํžˆ ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค.

About

๐Ÿ’ซ Zaply | AI ๊ธฐ๋ฐ˜ Multi-SNS ์ฝ˜ํ…์ธ  ๋ฐฐํฌ&๊ด€๋ฆฌ ์„œ๋น„์Šค

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •