์ฐ๋จน(JJICK-MEOK)์ ์ฌ์ฉ์์ ๊ด์ฌ ์ฃผ์ , ์ทจํฅ ํ๊ทธ, ํ๋ ์ง์ญ์ ๋ฐํ์ผ๋ก ๋ฌธํยท์ฌ๊ฐ ํ๋์ ํ์ํ๊ณ ์ถ์ฒํ๋ ์๋น์ค์ ๋๋ค.
- ๊ด์ฌ ์ง์ญยท์ฃผ์ ยท์ทจํฅ์ ์จ๋ณด๋ฉ์์ ์ ํํ๊ณ ๊ฐ์ธํ ์ถ์ฒ์ ํ์ฉํฉ๋๋ค.
- ํ, ์นดํ ๊ณ ๋ฆฌ, ๋ง์ถค ์ถ์ฒ, ์ฐ, ์์ธ ํ์ด์ง์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด ๋จ์ API๋ก ์ ๊ณตํฉ๋๋ค.
- ํ๋ ์ ํยท์นดํ ๊ณ ๋ฆฌยท์ง์ญยทํค์๋ยทํ๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋์ ๊ฒ์ํ๊ณ ํํฐ๋งํ ์ ์์ต๋๋ค.
- ๊ณต๊ณต API์ ์น ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์์งยท์ ๊ทํํ๊ณ , ๊ฒ์๋ ํ๋์ ์๋์ผ๋ก ๋ฐํํฉ๋๋ค.
- ์ฐ, ํ๊ธฐ, ํ๋ ์ด๋ฏธ์ง์ ๊ด๊ณ ๋ฅผ ํจ๊ป ๊ด๋ฆฌํด ํ์ ๊ฒฝํ์ ๊ตฌ์ฑํฉ๋๋ค.
| ๋ถ๋ฅ | ๊ธฐ์ |
|---|---|
| Language | |
| Framework | |
| Database | |
| Migration | |
| Auth | |
| AI & External | |
| Storage | |
| Docs | |
| Test | |
| Build & Deploy | |
| Infra | |
| Monitoring |
- React Native ํด๋ผ์ด์ธํธ ์์ฒญ์ Caddy๊ฐ HTTPS๋ก ์์ ํ๊ณ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ๋ฌํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์บ์๋ OCI Compute์ Docker Compose ํ๊ฒฝ์์ ์คํํฉ๋๋ค.
- ์์ ๋ฐ์ดํฐ๋ Oracle MySQL Database Service, ํ์ผ์ OCI Object Storage์ ์ ์ฅํฉ๋๋ค.
- GitHub Actions๊ฐ ์ด๋ฏธ์ง๋ฅผ GHCR์ ๋ฐํํ๊ณ OCI Compute์ ๋ฐฐํฌํฉ๋๋ค.
- Prometheus์ Grafana๋ก ๋ฉํธ๋ฆญ์ ์๊ฐํํ๊ณ Discord Webhook์ผ๋ก ์ฅ์ ์๋ฆผ์ ์ ๋ฌํฉ๋๋ค.
์์ธ ์ปฌ๋ผ, ์ ์ฝ์กฐ๊ฑด๊ณผ ๊ด๊ณ ์ ์๋ docs/current-entity-erd.dbml์์ ํ์ธํ ์ ์์ต๋๋ค.
src/main/java/com/jjikmeok/app/
โโโ AppApplication.java
โโโ domain/
โ โโโ activity/ # ํ๋ CRUDยท๊ฒ์ยท์ถ์ฒ, ๊ณต๊ณต/๋ฏผ๊ฐ ๋ฐ์ดํฐ ์์ง ๋ฐ ๋ฐํ
โ โโโ advertisement/ # ๊ด๊ณ ๋
ธ์ถ ๋ฐ ๊ด๋ฆฌ์ CRUD
โ โโโ ai/ # ์์ง ํ๋ณด์ OpenAI ๊ธฐ๋ฐ ๋ถ์
โ โโโ auth/ # ๋ก์ปฌ/OAuth ์ธ์ฆ, JWT, ์ด๋ฉ์ผ ์ธ์ฆ, ๋น๋ฐ๋ฒํธ ์ฌ์ค์
โ โโโ favorite/ # ์ฌ์ฉ์ ํ๋ ์ฐ
โ โโโ image/ # ํ๋ ์ด๋ฏธ์ง์ ๋
ธ์ถ ์์ ๊ด๋ฆฌ
โ โโโ onboarding/ # ๊ด์ฌ ์ง์ญยท์ฃผ์ ยท์ทจํฅ ์ ํ ๋ฐ ์กฐํ
โ โโโ page/ # ํยท์นดํ
๊ณ ๋ฆฌยท๋ง์ถคยท์ฐยท์์ธ ํ๋ฉด ์กฐํฉ API
โ โโโ personalization/ # ์ทจํฅ ์ ํ ๋ฐ ์ฝ์ฌ์ธ ์ ์ฌ๋ ๊ธฐ๋ฐ ๊ฐ์ธํ ์ถ์ฒ
โ โโโ region/ # ์/๋ยท์/๊ตฐ/๊ตฌ ๊ณ์ธตํ ์ง์ญ ๊ด๋ฆฌ
โ โโโ review/ # ํ๋ ํ๊ธฐ CRUD
โ โโโ tag/ # ํ๋ยท์ฃผ์ ยท์ทจํฅ ํ๊ทธ ์ฌ์ ๊ด๋ฆฌ
โ โโโ user/ # ์ฌ์ฉ์ ๊ณ์ ๊ณผ ํ๋กํ
โโโ global/
โโโ common/ # ๊ณตํต ์๋ต, ์์ธ, JPA ๊ฐ์ฌ ์ํฐํฐ
โโโ config/ # Security, CORS, Redis, Swagger, Async ์ค์
โโโ infra/ # ๋ฉ์ผ ๋ฐ Local/OCI Object Storage ์ฐ๋
โโโ security/ # JWT ํํฐยทํ ํฐยท์ธ์ฆ/์ธ๊ฐ ์์ธ ์ฒ๋ฆฌ
- ์ด๋ฉ์ผ ํ์๊ฐ์ ยท๋ก๊ทธ์ธ๊ณผ BCrypt ๋น๋ฐ๋ฒํธ ์ํธํ
- Google, Kakao, Naver OAuth 2.0 ๋ก๊ทธ์ธ
- ์น ๋ฆฌ๋ค์ด๋ ํธ์ ๋ชจ๋ฐ์ผ ๋ฅ๋งํฌ๋ฅผ ์ง์ํ๋ ์ผํ์ฉ Handoff Token ๊ตํ
- JWT Access/Refresh Token ๋ฐ๊ธยทํ์ ยท๋ก๊ทธ์์, Redis ๊ธฐ๋ฐ Refresh Token ๊ฒ์ฆ
- ์ด๋ฉ์ผ ์ธ์ฆ ์ฝ๋ ๋ฐ์ก๊ณผ ๋น๋ฐ๋ฒํธ ์ฌ์ค์
- ๋๋ค์, ์๋ ์์ผ, ์ฑ๋ณ, ์ํ, ์ฝ๊ด ๋์๋ฅผ ํฌํจํ ํ๋กํ ์์ฑยท์กฐํ
- ๊ด์ฌ ์ฃผ์ , ์ทจํฅ ํ๊ทธ, ํ๋ ์ง์ญ ์ ํ ๋ฐ ์ ์ฒด ๊ต์ฒด ๋ฐฉ์ ์์
- ๊ฐ์ ์ํ๋ฅผ ํ๋กํ ์๋ฃ์ ์จ๋ณด๋ฉ ์๋ฃ ๋จ๊ณ๋ก ๊ด๋ฆฌ
- ์ฌ์ฉ์ ์จ๋ณด๋ฉ ํ๊ทธ๋ฅผ ๋ฐํ์ผ๋ก ์ทจํฅ ์ ํ ๋ถ๋ฅ
- ์ทจํฅ ํ๊ทธ ID ์์๋ก ์ฌ์ฉ์ยทํ๋ ์ด์ง ๋ฒกํฐ๋ฅผ ์์ฑํ๊ณ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ก ์ถ์ฒ ์ ์ ๊ณ์ฐ
- ๊ฐ์ธํ ์ ์, ๋ชจ์ง ๋ง๊ฐ์ผ, ์ฐ ์ฌ๋ถ, ํ๊ทธ๋ฅผ ํฌํจํ ๋ง์ถค ํ๋ ์ถ์ฒ
- ํ๋ ์ ํ, ์นดํ ๊ณ ๋ฆฌ, ์ง์ญ, ํค์๋, ํ๊ทธ ๊ธฐ๋ฐ ๊ฒ์ยทํํฐ๋ง
- ๋ชจ์ง ์ค์ด๊ณ ์น์ธ๋ ํ๋์ ๋์์ผ๋ก ์ต์ ์ยท์ธ๊ธฐ์ยท๋ง๊ฐ์ ์ ๋ ฌ
- ์์ธ ์กฐํ ์ ์กฐํ์ ์ฆ๊ฐ์ ์ง์ญยทํ๊ทธยท์ด๋ฏธ์งยท์ฐ ์ํ ์กฐํฉ
- ํ์ ์ต์ /์ธ๊ธฐ ํ๋ ๋ฐ ์ทจํฅ ํ๋ ์ด์ , ์นดํ ๊ณ ๋ฆฌยท๋ง์ถคยท์ฐยท์์ธ ํ๋ฉด API
- ํ๋ ๊ธฐ๊ฐ, ๋ชจ์ง ๊ธฐ๊ฐ, URL, ์น์ธ ์ํ ๊ฒ์ฆ๊ณผ ๊ด๋ฆฌ์ CRUD
- KOPIS, ์ ์, ์์ธ ๋ฌธํํ์ฌ, ์์ธ ๊ณต๊ณต์์ฝ API ๋๊ธฐํ
- ์ธ๋ถ ์๋ต์
raw_activities์ ์๋ณธ ๋ณด๊ดํ ๋ค ๊ณตํต ํ๋ ๋ชจ๋ธ๋ก ์ ๊ทํ - Serper ๊ฒ์, robots ์ ์ฑ ํ์ธ, URL ํ์ง ํ๊ฐ, ๋ฉํ๋ฐ์ดํฐ ์ถ์ถ, ์ค๋ณต ์ ๊ฑฐ
- Spring AI/OpenAI๋ฅผ ์ด์ฉํ Discovery ํ๋ณด ๋ถ์๊ณผ ํ๋ ์ ๋ณด ๊ตฌ์กฐํ
- Google Sheets์ ์์ง ํ๋ณด๋ฅผ ์ ์ฌํ๊ณ ๊ฒ์ ์๋ฃ ๋ฐ์ดํฐ๋ฅผ ์๋น์ค DB๋ก ๋ฐํ
- ๊ณต๊ณต ๋ฐ์ดํฐ ์์ง ๋ฐ Discovery ์์งยท๋ฐํ ์ค์ผ์ค๋ฌ ์ ๊ณต
- ์ฌ์ฉ์๋ณ ํ๋ ์ฐ ๋ฑ๋กยท์กฐํยท์ญ์ ๋ฐ ์ ์ฅ์ยท๋ง๊ฐ์ ์ ๋ ฌ
- ์ฌ์ฉ์๋น ํ๋๋ณ ํ๋์ ํ๊ธฐ ์์ฑ, ์์ , ์ญ์ ๋ฐ ํ์ด์ง ์กฐํ
- ํ๋๋ณ ๋ค์ค ์ด๋ฏธ์ง, ์ธ๋ค์ผ ์ฌ๋ถ, ๋ ธ์ถ ์์ ๊ด๋ฆฌ
- ์ฐยทํ๊ธฐ ์ ์ง๊ณ์ ์ค๋ณต ๋ฑ๋ก ๋ฐฉ์ง
- ๋ ธ์ถ ์์น์ ๊ธฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ฑ ๊ด๊ณ ์กฐํ, ๊ด๋ฆฌ์ CRUD
- Local File Storage์ OCI Object Storage๋ฅผ ํ๊ฒฝ๋ณ๋ก ์ ํ
- Caddy ๊ธฐ๋ฐ HTTPS ์ข ๋ฃ์ Docker Compose ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ยท์บ์ ์ด์
- GitHub Actions๋ฅผ ํตํ Docker ์ด๋ฏธ์ง ๋น๋, GHCR ํธ์, OCI Compute ์๋ ๋ฐฐํฌ
- PrometheusยทGrafana ๋ชจ๋ํฐ๋ง๊ณผ Discord Webhook ์ฅ์ ์๋ฆผ ๊ตฌ์ฑ
Controller, Service, Repository, Security, Storage, ๊ฐ์ธํ ๊ณ์ฐ ๋ฐ ์์ง ํ์ดํ๋ผ์ธ์ ์ค์ฌ์ผ๋ก ๋จ์ยทํตํฉ ํ ์คํธ๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
# ์ ์ฒด ํ
์คํธ
./gradlew test
# ์ปดํ์ผ ๊ฒ์ฆ
./gradlew compileJavaSwagger UI๋ ์ ํ๋ฆฌ์ผ์ด์
์คํ ํ /swagger-ui/index.html์์ ํ์ธํ ์ ์์ต๋๋ค.


