Skip to content

Readmeย #240

@YuleGlycerine

Description

@YuleGlycerine

App Store Kabinett Xcode Protopie Figma

introduce0

๐Ÿ Kabinett App Store ๋งํฌ

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

์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์— ํฉ์–ด์ ธ ์žˆ๋Š” ํŽธ์ง€๋“ค์„ ํ•œ ๊ณณ์— ๋ชจ์•„ ๋ณด๊ด€ํ•˜๊ณ , ํŽธ์ง€ ํ˜•ํƒœ๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ์œ ๋กญ๊ฒŒ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํŽธ์ง€ ๋ฉ”์‹ ์ € ์•ฑ

Kabinett์€ ๋น ๋ฅธ ์‘๋‹ต๊ณผ ์žฆ์€ ์•Œ๋ฆผ์— ์ง€์นœ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์—ฌ์œ ๋กœ์šด ํŽ˜์ด์Šค์˜ ๋ฉ”์‹ ์ € ์•ฑ์ž…๋‹ˆ๋‹ค. ํ‘ธ์‹œ ์•Œ๋ฆผ, ์ฝ์Œ ํ‘œ์‹œ, ํƒ€์ดํ•‘ ์ธ๋””์ผ€์ดํ„ฐ ์—†์ด ์œ„์ ฏ์„ ํ†ตํ•ด ์กฐ์šฉํ•œ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ณ  ๋Œ€ํ™”์ฐฝ ์—†์ด ํŽธ์ง€ ํ˜•์‹์œผ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Kabinett์€ ํŽธ์ง€์˜ ๋ฌผ๋ฆฌ์  ๊ฐ์„ฑ์„ ๋‹ด์•„๋‚ธ ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋””์ง€ํ„ธ ํ™˜๊ฒฝ์—์„œ๋„ ์ง„์‹ฌ ์–ด๋ฆฐ ํŽธ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์„ค๋ ˜์„ ์„ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋‘๋ฅด์ง€ ์•Š๊ณ  ๊ธด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ถ์„ ๋•Œ๋‚˜ ์˜ค๋žซ๋™์•ˆ ์—ฐ๋ฝํ•˜์ง€ ๋ชปํ•œ ์นœ๊ตฌ์—๊ฒŒ ์•ˆ๋ถ€๋ฅผ ์ „ํ•  ๋•Œ, ํŽธ์•ˆํ•œ ์†Œํ†ต์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ—บ๏ธ ์ฃผ์š” ๊ธฐ๋Šฅ

ํŽธ์ง€ ์•„์นด์ด๋น™ํ•˜๊ธฐ

  • ํ™ˆ ํ™”๋ฉด: ์ „์ฒด ํŽธ์ง€ ๋ฆฌ์ŠคํŠธ์™€ ๋ฏธ์—ด๋žŒ ํŽธ์ง€ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ, ์•ฑ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ ์›ฐ์ปด ํŽธ์ง€ ํ† ์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ํŽธ์ง€ ๋ฆฌ์ŠคํŠธ: ํŽธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ํ‚ค์›Œ๋“œ ๋ฐ ๋‚ ์งœ๋กœ ํŽธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŽธ์ง€ ๋ณด๊ด€ ๊ธฐ๋Šฅ: Kabinett์—์„œ ์ฃผ๊ณ ๋ฐ›์€ ํŽธ์ง€๋“ค๊ณผ ์™ธ๋ถ€ ํ”Œ๋žซํผ ๋ฉ”์‹œ์ง€ ์บก์ฒ˜๋ณธ์„ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ & ํŽธ์ง€ ์“ฐ๊ธฐ

  • ํŽธ์ง€ ์ž‘์„ฑ ๋ฐฉ์‹: "ํŽธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ"์™€ "ํŽธ์ง€ ์“ฐ๊ธฐ" ์ค‘ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŽธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ: ์นด๋ฉ”๋ผ ๋˜๋Š” ์•จ๋ฒ”์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•˜๊ณ , ๋ฐœ์†ก ๋Œ€์ƒ ๋ฐ ๋‚ ์งœ๋ฅผ ์„ค์ •ํ•œ ํ›„, ๋ด‰ํˆฌ์™€ ์šฐํ‘œ๋ฅผ ์„ ํƒํ•ด ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŽธ์ง€ ์“ฐ๊ธฐ: ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํŽธ์ง€์ง€, ๋ด‰ํˆฌ, ํฐํŠธ, ์šฐํ‘œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ ์ž‘์„ฑ๊ณผ ์‚ฌ์ง„ ๋™๋ด‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ฆฌ๋ทฐ ํ™”๋ฉด์—์„œ ์ตœ์ข… ํŽธ์ง€๋ฅผ ๋ฐœ์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง€ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•˜๊ธฐ

  • ์‚ฌ์šฉ์ž๋Š” ์›ํ•˜๋Š” ํŽธ์ง€์ง€, ๋ด‰ํˆฌ, ์šฐํ‘œ, ํฐํŠธ๋ฅผ ์„ ํƒํ•˜์—ฌ ํŽธ์ง€๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ํŽธ์ง€ ์“ฐ๊ธฐ

  • ๋‚˜์—๊ฒŒ ์“ฐ๊ธฐ ๊ธฐ๋Šฅ: ๋น„๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋„ ์ž์‹ ์—๊ฒŒ ํŽธ์ง€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kabinett ์—ฐ๋ฝ์ฒ˜

  • Kabinett ๋ฒˆํ˜ธ: 6์ž๋ฆฌ์˜ ๊ณ ์œ ํ•œ ์ˆซ์ž๋กœ, ์‚ฌ์šฉ์ž๋Š” Kabinett ๋ฒˆํ˜ธ ๋˜๋Š” ์‚ฌ์šฉ์ž ๋‹‰๋„ค์ž„์„ ํ†ตํ•ด ์ˆ˜์‹ ์ž๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ ์งœ๋‚˜ ํ‚ค์›Œ๋“œ ํ•„ํ„ฐ๋กœ ํŽธ์ง€ ๊ฒ€์ƒ‰ํ•˜๊ธฐ

  • ํŽธ์ง€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ: ๋‚ ์งœ์™€ ํ‚ค์›Œ๋“œ๋กœ ํ•„ํ„ฐ๋งํ•˜์—ฌ ํŠน์ • ํŽธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํ•„ ๊ด€๋ฆฌ

  • ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ: Apple ๋กœ๊ทธ์ธ๊ณผ Kabinett ๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋น„๋กœ๊ทธ์ธ ์ƒํƒœ๋กœ๋„ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœํ•„ ์„ค์ •: ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ ํฌ๋กญํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋กœ๊ทธ์•„์›ƒ ๋ฐ ํšŒ์› ํƒˆํ‡ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ฎ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

2024.08.05-09.13: MVP ๋ฒ„์ „ ๋ฐฐํฌ
2024.11.04: 1.0.1 ์—…๋ฐ์ดํŠธ

๐ŸŽž๏ธ ์‹คํ–‰ ํ™”๋ฉด

ํŽธ์ง€ ์—ด๋žŒํ•˜๊ธฐ ํŽธ์ง€ ๋ณด๋‚ด๊ธฐ ํŽธ์ง€ ๊ฒ€์ƒ‰ํ•˜๊ธฐ(์‚ฌ์šฉ์ž) ํŽธ์ง€ ๊ฒ€์ƒ‰ํ•˜๊ธฐ(๊ธฐ๊ฐ„) ๋กœ๊ทธ์ธ๊ณผ ํ”„๋กœํ•„
LetterView-ezgif com-speed WriteLetter-ezgif com-speed SearchName-ezgif com-speed ezgif com-speed LoginProfile-ezgif com-speed

๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ ํŒ€ Kabinett

๊ถŒ๋„์œจ ๊น€์†ก ๊น€์ •์šฐ ๊น€์ง„์›… ์„์ง€ํ˜œ ์ฑ„์œค์›

๐Ÿ”ฌ ๋‹ด๋‹น

๊ถŒ๋„์œจ @YuleGlycerine

  • ๋‹ด๋‹น
    • ํ”„๋กœ๋•ํŠธ ๋””์ž์ธ, ์œ ์ € ๋ฆฌ์„œ์น˜, ์ธํ„ฐ๋ž™์…˜ ๋””์ž์ธ
    • ํ”„๋กœํ•„ ํƒญ ๊ตฌํ˜„
  • ๊ตฌํ˜„ ๊ธฐ๋Šฅ
    • ํ”„๋กœํ•„ ํƒญ: ํ”„๋กœํ•„ ํ™”๋ฉด, ํ”„๋กœํ•„ ์„ค์ •, ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ํฌ๋กญ, ์‚ฌ์šฉ์ž ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ, ๋กœ๊ทธ์•„์›ƒ๊ณผ ํšŒ์›ํƒˆํ‡ด
    • ๋กœ๊ทธ์ธ ํ”Œ๋กœ์šฐ: ์• ํ”Œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„, ๋‹‰๋„ค์ž„๊ณผ ์นด๋น„๋„ท ๋„˜๋ฒ„(๊ณ ์œ ๋ฒˆํ˜ธ)์œผ๋กœ ํšŒ์› ๋“ฑ๋ก / ๋กœ๊ทธ์ธ / ๋น„๋กœ๊ทธ์ธ ์œ ์ € ๊ตฌ๋ถ„ ๋กœ์ง

๊น€์†ก @ksiomng

  • ๋‹ด๋‹น
    • ํŽธ์ง€ ์“ฐ๊ธฐ ๋ทฐ ๊ตฌํ˜„
  • ๊ตฌํ˜„ ๊ธฐ๋Šฅ
    • ํŽธ์ง€ ์ž‘์„ฑ: ํŽธ์ง€์ง€, ํฐํŠธ, ํŽธ์ง€ ๋ด‰ํˆฌ, ์šฐํ‘œ์˜ ์›ํ•˜๋Š” ์˜ต์…˜์„ ์„ ํƒ / ์„ ํƒํ•œ ์˜ต์…˜๋“ค๋กœ ํŽธ์ง€๋ฅผ ์ž‘์„ฑ

๊น€์ •์šฐ @JeongWo

  • ๋‹ด๋‹น
    • ๋ฉ”์ธ ํƒญ, ํŽธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๊ตฌํ˜„
  • ๊ตฌํ˜„ ๊ธฐ๋Šฅ
    • ํŽธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ: ํŽธ์ง€๋ด‰ํˆฌ์— ์‚ฌ์ง„์„ ์ฒจ๋ถ€ํ•˜์—ฌ ํŽธ์ง€ ์ž‘์„ฑ

๊น€์ง„์›… @jinwoong16

  • ๋‹ด๋‹น
    • ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
  • ๊ตฌํ˜„ ๊ธฐ๋Šฅ
    • ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ธ์ฆ ์„œ๋น„์Šค ๊ฐœ๋ฐœ

์„์ง€ํ˜œ @๏ฟฝthe-hye

  • ๋‹ด๋‹น
    • ํŽธ์ง€ ์ž‘์„ฑ, ํŽธ์ง€ํ•จ(๋ฉ”์ธํŽ˜์ด์ง€) ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด ๊ตฌํ˜„
  • ๊ตฌํ˜„ ๊ธฐ๋Šฅ
    • ํŽธ์ง€์ž‘์„ฑ, ํŽธ์ง€ํ•จ ํƒญ ๋ฐ์ดํ„ฐ ์ €์žฅ, ์‚ญ์ œ, ๋กœ๋”ฉ ๊ตฌํ˜„
    • Firebase Firestore, Storage ์—ฐ๋™

์ฑ„์œค์› @uunwon

  • ๋‹ด๋‹น
    • ์„œ๋น„์Šค ๊ธฐํš, ํŽ˜๋ฅด์†Œ๋‚˜ ์„ค์ •, ์™€์ด์–ดํ”„๋ ˆ์ž„, QA
    • ๋ฉ”์ธ ํŽ˜์ด์ง€ ๋ทฐ ๊ตฌํ˜„
  • ๊ตฌํ˜„ ๊ธฐ๋Šฅ
    • ํŽธ์ง€ํ•จ ํƒญ: ๋ฉ”์ธ ํ™”๋ฉด, ํŽธ์ง€ ๊ฒ€์ƒ‰(์ด๋ฆ„, ๊ธฐ๊ฐ„)

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

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Swift: 5.10
  • Xcode: 15.4
  • iOS: 17.4
  • Firebase SDK: 11.1.0

๊ธฐ์ˆ  ์Šคํƒ

  • iOS: SwiftUI, UIKit
  • Backend
    • Firebase Storage
    • Firebase FireStore
    • Firebase Authentication
  • Software Architecture: ํ™•์žฅ๋œ MVVM
  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ: Combine
  • Git ์ „๋žต: Git Flow ์ „๋žต

Dependencies

  • iOS
    • Kingfisher: 7.12.0
    • Firebase: 11.1.0

ํ˜‘์—… ๋„๊ตฌ

  • Figma
  • Github
  • Discord
  • Fork

๐Ÿš ์•„ํ‚คํ…์ณ ํŒจํ„ด

ํ™•์žฅํ•œ MVVM: MVVM์„ ํ† ๋Œ€๋กœ Clean Architecture๋ฅผ ์ฐจ์šฉํ•œ ๊ตฌ์กฐ

์Šคํฌ๋ฆฐ์ƒท 2024-11-02 ์˜คํ›„ 5 36 12

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions