Skip to content

Latest commit

ย 

History

History
174 lines (122 loc) ยท 11.3 KB

README.md

File metadata and controls

174 lines (122 loc) ยท 11.3 KB

Team25_Android

image

๋ชฉ์ฐจ


ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๊ฐœ๋ฐœ ๋™๊ธฐ ๋ฐ ๋ชฉ์ 

์ €ํฌ ์น ์ „ํŒ”๊ธฐ ํŒ€์€ โ€œ๋ณ‘์› ๋™ํ–‰ ์„œ๋น„์Šค ๋งค์นญ ํ”Œ๋žซํผโ€ ์„ ์ฃผ์ œ๋กœ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋ นํ™” ์‚ฌํšŒ๋กœ ์ ‘์–ด๋“ค๋ฉด์„œ ์˜๋ฃŒ ์ด์šฉ์— ์–ด๋ ค์›€์„ ๊ฒช๋Š” ๊ณ ๋ น์ธต์ด ๋Š˜์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฌด์ธ ์ ‘์ˆ˜๊ธฐ ๋“ฑ ๋””์ง€ํ„ธ ๋„๊ตฌ์˜ ๋„์ž…์œผ๋กœ ์ธํ•ด ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์–ด๋ฅด์‹ ๋“ค์€ ๋ณ‘์› ์ด์šฉ์— ๋ถˆํŽธํ•จ์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ €ํฌ๋Š” ๋„์›€์ด ํ•„์š”ํ•œ ํ™˜์ž์™€ ์ „๋ฌธ ๋งค๋‹ˆ์ €๋ฅผ ๋งค์นญํ•˜์—ฌ ํ™˜์ž๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์˜๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘์› ๋™ํ–‰ ์„œ๋น„์Šค์˜ ์ˆ˜์š”๋Š” ๊ณ ๋ นํ™”์™€ 1์ธ ๊ฐ€๊ตฌ ์ฆ๊ฐ€๋กœ ์ธํ•ด ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ณ‘์› ๋™ํ–‰ ๋งค๋‹ˆ์ € ์—…๋ฌด๋Š” ๋น„๊ต์  ๋‚ฎ์€ ๋…ธ๋™ ๊ฐ•๋„๋กœ ์ค‘์žฅ๋…„์ธต์˜ ์ƒˆ๋กœ์šด ์ง์—…์œผ๋กœ ์ฃผ๋ชฉ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €ํฌ ํ”Œ๋žซํผ์€ ํ™˜์ž์™€ ์ „๋ฌธ ๋งค๋‹ˆ์ € ๊ฐ„์˜ ๋งค์นญ์„ ํ†ตํ•ด ๋ณ‘์› ์ด์šฉ์„ ์ง€์›ํ•˜๋ฉฐ, ์‹ค์‹œ๊ฐ„ ์กฐํšŒ ๋ฐ ๋ฆฌํฌํŠธ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ž๋…€๋“ค๋„ ์•ˆ์‹ฌํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ฒ ์Šต๋‹ˆ๋‹ค.


์„œ๋น„์Šค ์†Œ๊ฐœ

ํˆฌ๋ช…ํ•œ ์„œ๋น„์Šค๋กœ ํ™˜์ž์™€ ๋ณ‘์› ๋™ํ–‰ ๋งค๋‹ˆ์ €๋ฅผ ๋งค์นญํ•˜๋‹ค, '๋ฉ”๋””ํˆฌ๊ฒŒ๋”'

  1. โœ๏ธ ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž…

    • SNS ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ (์นด์นด์˜ค)์œผ๋กœ ํšŒ์›๊ฐ€์ž…์ด ๊ฐ€๋Šฅํ•ด์š”.
    • ๋กœ๊ทธ์•„์›ƒ ๋ฐ ํƒˆํ‡ด ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด์š”.
  2. ๐Ÿ—‚๏ธ ํ™˜์ž์˜ ํ”„๋กœํ•„ ๊ด€๋ฆฌ

    • ํ™˜์ž ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์˜๋ฃŒ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š” (์ด๋ฆ„, ๋‚˜์ด, ์„ฑ๋ณ„, ๋ณ‘๋ ฅ ๋“ฑ).
    • ์ฃผ์น˜์˜ ์ •๋ณด๋„ ๋“ฑ๋กํ•ด๋‘๋ฉด ์„œ๋น„์Šค ์ด์šฉ์— ๋„์›€์ด ๋ผ์š”.
  3. ๐Ÿ“… ์„œ๋น„์Šค ์˜ˆ์•ฝ์œผ๋กœ ๋ณ‘์› ๋™ํ–‰์„ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด์š”

    • ๋™ํ–‰ ์„œ๋น„์Šค ์˜ˆ์•ฝ์„ ํ†ตํ•ด ๋ณ‘์› ์ •๋ณด์™€ ์˜ˆ์•ฝ ์‹œ๊ฐ„์„ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.
    • ์˜ˆ์•ฝ ํ›„์—๋„ ์ˆ˜์ •์ด๋‚˜ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์š”.
  4. ๐Ÿ“ ์‹ค์‹œ๊ฐ„ ๋™ํ–‰ ํ˜„ํ™ฉ ์•Œ๋ฆผ

    • ๋™ํ–‰ ์„œ๋น„์Šค ์ด์šฉ ์ค‘ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™˜์ž์™€ ๋™ํ–‰์ž์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
    • ๋ณดํ˜ธ์ž๋‚˜ ํ™˜์ž ๋ณธ์ธ์ด ์–ดํ”Œ์—์„œ ์ด๋™ ๊ฒฝ๋กœ์™€ ์œ„์น˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
  5. ๐Ÿ“ ์ง„๋ฃŒ ๋ฆฌํฌํŠธ ์ œ๊ณต์œผ๋กœ ์ง„๋ฃŒ ์ •๋ณด๋ฅผ ํ•œ๋ˆˆ์—

    • ์ง„๋ฃŒ๊ฐ€ ๋๋‚˜๋ฉด ๋ฆฌํฌํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค˜์š” (์ง„๋ฃŒ ์ •๋ณด, ์ฒ˜๋ฐฉ ๋‚ด์—ญ ๋“ฑ ํฌํ•จ).

๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

2024.09 ~ 2024.11 (์นด์นด์˜ค ํ…Œํฌ ์บ ํผ์Šค 2๊ธฐ - STEP3)

ํŒ€์› ์†Œ๊ฐœ

๋…ธ์‹  ๋ฐ•์ •ํ›ˆ ์ด์ฐฝ์šฑ
E-Mail [email protected] [email protected] [email protected]
GitHub Normenghub Pjhn ichanguk

์ฃผ์š” ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ ์„ค๋ช…
๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ์นด์นด์˜ค OAuth ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ›„ ๋ฐœ๊ธ‰๋œ access token๊ณผ refresh token์„ ํ†ตํ•ด JWT ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
refresh token์˜ ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์ด 7์ผ ์ด์ƒ ๋‚จ์•„ ์žˆ์„ ๊ฒฝ์šฐ ์ž๋™ ๋กœ๊ทธ์ธ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์•ฝ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ž…๋ ฅ(์ด๋ฆ„, ์ƒ๋…„์›”์ผ, ์„ฑ๋ณ„, ์—ฐ๋ฝ์ฒ˜, ์ถœ๋ฐœ์ง€, ๋„์ฐฉ์ง€ ๋“ฑ) ๋ฐ›์•„ ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ง‘ ๋™์˜ ํ›„ ์˜ˆ์•ฝ์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
์‹ค์‹œ๊ฐ„ ๋™ํ–‰ ํ˜„ํ™ฉ ๋งค๋‹ˆ์ € ์•ฑ์—์„œ ๋งค๋‹ˆ์ €๊ฐ€ ์ž…๋ ฅํ•œ ๋™ํ–‰ ์ƒํ™ฉ ์ •๋ณด(์˜ˆ: 24.11.20 21:04 ๋ถ€์‚ฐ๋Œ€ ๋ณ‘์› ๋„์ฐฉ)๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์•ฝ ํ˜„ํ™ฉ ํ˜„์žฌ ์˜ˆ์•ฝ ์ƒํƒœ์™€ ์ง€๋‚œ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง„ํ–‰ ์ค‘์ธ ์˜ˆ์•ฝ์— ๋Œ€ํ•ด์„œ๋Š” ์ทจ์†Œ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ, ์ง€๋‚œ ์˜ˆ์•ฝ์— ๋Œ€ํ•œ ๋ฆฌํฌํŠธ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งค๋‹ˆ์ € ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์˜ˆ์•ฝ ์‹œ ์ถœ๋ฐœ์ง€๋ฅผ ๋„๋กœ๋ช… ์ฃผ์†Œ ๊ฒ€์ƒ‰ API๋ฅผ ํ†ตํ•ด ์„ ํƒํ•˜๋ฉด, ํ•ด๋‹น ์ถœ๋ฐœ์ง€์˜ ์‹œ/๋„ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ ํ•ด๋‹น ์ง€์—ญ์— ๋งž๋Š” ๋งค๋‹ˆ์ € ๋ฆฌ์ŠคํŠธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งค๋‹ˆ์ € ํ”„๋กœํ•„ ์กฐํšŒ ๋งค๋‹ˆ์ € ๋ฆฌ์ŠคํŠธ์—์„œ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋ฉด ๋งค๋‹ˆ์ € ์•ฑ์— ๋“ฑ๋ก๋œ ๋งค๋‹ˆ์ €๋“ค์˜ ํ”„๋กœํ•„์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ, ๋งค๋‹ˆ์ € ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋Š” Amazon S3 ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Android ๊ฐœ๋ฐœ ์ฃผ์•ˆ์ 

๐Ÿ“Œ MVVM ํŒจํ„ด ์ ์šฉ

๊ฐ ๊ตฌ์„ฑ ์š”์†Œ(data, domain, ui)์˜ ์—ญํ• ์ด ๋ถ„๋ฆฌ๋˜์–ด ์ฝ”๋“œ ์ˆ˜์ •๊ณผ ํ™•์žฅ์ด ์šฉ์ด

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด UI์™€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ„ํŽธ

๐Ÿ“Œ DataStore ์‚ฌ์šฉ

JWT ํ† ํฐ ์ €์žฅ์‹œ SharedPreferences์— ๋น„ํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ๋ณด์•ˆ์„ฑ์ด ๋†’์Œ

์ฝ”๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ 

๐Ÿ“Œ Authenticator์™€ Interceptor ์‚ฌ์šฉ

ํ† ํฐ์ด ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ refresh ํ† ํฐ์„ ์‚ฌ์šฉํ•ด ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋œ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐ›์•„ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•˜์ง€ ์•Š๊ณ ๋„ ์•ฑ ๋‚ด์—์„œ ๊ณ„์†ํ•ด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.

๋ชจ๋“  API ์š”์ฒญ ํ—ค๋”์— JWT๋ฅผ ์ž๋™์œผ๋กœ ํฌํ•จํ•˜์—ฌ ๊ฐ ์š”์ฒญ๋งˆ๋‹ค ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์ฒ˜๋ฆฌ

๐Ÿ“Œ DI ์‚ฌ์šฉ

๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ๋ฅผ Hilt๊ฐ€ ๋‹ด๋‹นํ•ด ์›ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ฃผ์ž…๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ

ํด๋ž˜์Šค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง€๊ณ  ์˜์กด ๊ด€๊ณ„๋ฅผ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ

๐Ÿ“Œ Fragment์™€ ViewModel ๊ฒฐํ•ฉ ์‚ฌ์šฉ

ViewModel์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  Fragment์—์„œ๋Š” UI์— ์ง‘์ค‘

StateFlow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ UI๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋„๋ก ๊ตฌ์„ฑ


๋งํฌ ๋ชจ์Œ

๊ธฐํš ๋””์ž์ธ ๊ฐœ๋ฐœ ๋ฐฐํฌ
๋…ธ์…˜ ์™€์ด์–ดํ”„๋ ˆ์ž„ ๋ฐฑ์—”๋“œ ๊นƒํ—ˆ๋ธŒ ๋ฐฑ์—”๋“œ ๋ฐฐํฌ ์ฃผ์†Œ
์ตœ์ข… ๊ธฐํš์•ˆ ์•ˆ๋“œ๋กœ์ด๋“œ(์ด์šฉ์ž ์•ฑ) ๊นƒํ—ˆ๋ธŒ ๋ฉ”๋””ํˆฌ๊ฒŒ๋” ์›์Šคํ† ์–ด
์•ˆ๋“œ๋กœ์ด๋“œ(๋งค๋‹ˆ์ € ์•ฑ) ๊นƒํ—ˆ๋ธŒ ๋ฉ”๋””ํˆฌ๊ฒŒ๋” ๋งค๋‹ˆ์ €์•ฑ ์›์Šคํ† ์–ด
API ๋ฌธ์„œ Vault ์„œ๋ฒ„ ๋ฐฐํฌ ์ฃผ์†Œ
ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฉ”๋””ํˆฌ๊ฒŒ๋” ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€
ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ณด๊ณ ์„œ

ERD

ERD


API ๋ชจ์•„๋ณด๊ธฐ

๐Ÿ“ API ๋ฌธ์„œ API-๋ฌธ์„œ


๊ธฐ์ˆ  ์Šคํƒ

image


๊ตฌํ˜„ ํ™”๋ฉด

์ด์šฉ์ž์•ฑ2x