Giter VIP home page Giter VIP logo

boostcampwm2023 / ios04-heatpick Goto Github PK

View Code? Open in Web Editor NEW
15.0 3.0 1.0 9.74 MB

๐Ÿ”ฅ ์—ฌ๋Ÿฌ๋ถ„์ด ๋จธ๋ฌธ ์ž๋ฆฌ์— ๋”ฐ๋œปํ•œ ์˜จ๊ธฐ๋ฅผ ๋‚จ๊ฒจ๋ณด์„ธ์š” - ์œ„์น˜๊ธฐ๋ฐ˜ SNS ์„œ๋น„์Šค

Home Page: https://hogumachu.github.io/articles/heatpick/

Swift 88.65% JavaScript 0.05% TypeScript 11.27% Dockerfile 0.03%

ios04-heatpick's Introduction

iOS04 - HeatPick

๐Ÿ”ฅ HeatPick ์†Œ๊ฐœ

์—ฌ๋Ÿฌ๋ถ„์ด ๋จธ๋ฌธ ์ž๋ฆฌ์— ๋”ฐ๋œปํ•œ ์˜จ๊ธฐ๋ฅผ ๋‚จ๊ฒจ๋ณด์„ธ์š”
์œ„์น˜๊ธฐ๋ฐ˜ SNS ์„œ๋น„์Šค

๋„ค์ด๋ฒ„ ๋ถ€์ŠคํŠธ์บ ํ”„ ์›นใƒป๋ชจ๋ฐ”์ผ 8๊ธฐ ๊ทธ๋ฃน ํ”„๋กœ์ ํŠธ
2023.11.06 ~ 2023.12.15

๐Ÿ“” ๋ฌธ์„œ

HeatPick์˜ ์ƒ์„ธํ•œ ๊ฐœ๋ฐœ ์ผ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ??
HeatPick Wiki๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š” !!

๐Ÿ“‘ HeatPick Wiki ๐ŸŽจ ์•ฑ ๋””์ž์ธ ๐Ÿ“ API

๐Ÿง‘๐Ÿปโ€๐Ÿ’ป HeatPick ํŒ€์› ์†Œ๊ฐœ

๐ŸŽ iOS ๐ŸŽ iOS ๐ŸŽ iOS ๐ŸŒ Backend ๐ŸŒ Backend
S029_์ด์ค€๋ณต S031_์ž„์ •๋ฏผ S042_ํ™์„ฑ์ค€ J138_์ •์„ธํ˜ธ J154_์ตœ๊ฒ€๊ธฐ
junbok97 jungmin-lim hogumachu JeongSH1 cgg7777

โญ๏ธ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

MVP

๐Ÿ’ก ์ฃผ์š” ๊ธฐ๋Šฅ ์†Œ๊ฐœ

ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ
์‚ฌ์šฉ์ž์™€ ์Šคํ† ๋ฆฌ๋ฅผ ์ถ”์ฒœํ•ด์ค๋‹ˆ๋‹ค.
์›ํ•˜๋Š” ์œ„์น˜์—์„œ ์Šคํ† ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์— ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋„์—์„œ ์Šคํ† ๋ฆฌ๋“ค์„
ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ•ฉ๋‹ˆ๋‹ค.
๊ด€์‹ฌ ์žˆ๋Š” ์œ ์ €๋ฅผ ํŒ”๋กœ์ž‰ํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ—๏ธ ์•„ํ‚คํ…์ณ

๐ŸŽ iOS

๐ŸŒ Backend

๐Ÿค” ๊ธฐ์ˆ  ์„ ํƒ ๊ณผ์ •

๐ŸŽ iOS

๐ŸŒ Backend

๐Ÿƒ๐Ÿป ๊ธฐ์ˆ ์  ๋„์ „

๋ฐฐํฌ ๋ฐ ์ž๋™ํ™”

๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ iOS-server ๊ฐ„ ๊ฐœ๋ฐœ์†๋„์˜ ์ฐจ์ด๋กœ ์ธํ•œ ๋ถˆํŽธํ•จ์„ ์ฒด๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„์˜ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋Š” ์ฆ‰์‹œ iOS์ธก์—์„œ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์˜€๊ณ  ๋ฐฐํฌ ๋ฐ ์ž๋™ํ™”๋ฅผ ์ตœ์šฐ์„  ์ˆœ์œ„๋กœ ์„ค์ •ํ•˜์—ฌ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ORM

ORM์€ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์–ด์„œ ๋ถ„๋ช… ํŽธ๋ฆฌํ•˜์ง€๋งŒ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋ถ„๋ช…ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ORM ๋‚ด์—์„œ Transaction์„ ์ง์ ‘ ์ œ์–ดํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ๊ณ , Cascade ์†์„ฑ์„ ํ†ตํ•ด ๋ถ€๋ชจ์˜ ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ฅธ ์ž์‹์˜ ์˜ํ–ฅ, lazy-loading์„ ์ด์šฉํ•ด ๋ฐœ์ƒํ•œ N+1๋ฌธ์ œ์™€ ์„ฑ๋Šฅ ๊ฐœ์„ , ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ Query Builder๋„ ์ˆ˜ํ–‰ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ‘ธ์‹œ ์„œ๋น„์Šค

์ €ํฌ ํ”„๋กœ์ ํŠธ์—์„œ ์•Œ๋ฆผ ์„œ๋น„์Šค๋ฅผ ๋„์ž…์„ ์œ„ํ•ด Firebase Cloud Messaging์„ ์‚ฌ์šฉํ–ˆ๊ณ  ํ‘ธ์‹œ ์š”์ฒญ์„ ์ฑ…์ž„์ง€๋Š” ํ‘ธ์‹œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ์„œ๋น„์Šค ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‘ธ์‹œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ํ‘ธ์‹œ ์š”์ฒญ์˜ ํ๋ฆ„์— ๋Œ€ํ•ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋ณ„๋„๋กœ Message Queue ํŒจํ„ด์„ ํ•™์Šตํ•˜๊ณ  ์‹ค์ œ ์ ์šฉํ•ด๋ณด๋ฉฐ, ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ , ์‹œ์Šคํ…œ ์žฅ์• ์— ๋”ฐ๋ฅธ ๋ฉ”์„ธ์ง€ ์†Œ์‹ค์ด ์—†๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿซ  ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

1์ฃผ์ฐจ

2์ฃผ์ฐจ

3์ฃผ์ฐจ

4์ฃผ์ฐจ

5์ฃผ์ฐจ

๊ทธ๋ฃน ํ”„๋กœ์ ํŠธ ๋งˆ๋ฌด๋ฆฌ ์†Œ๊ฐ

์ค€๋ณต

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

์„ฑ์ค€

  • ํŒ€์›๋“ค์—๊ฒŒ ๋นจ๋ฆฌ๋นจ๋ฆฌํ•˜์ž๊ณ  ํ•ด์„œ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋ชป์ฑ™๊ธด๊ฑฐ ๊ฐ™์•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋ฌผ์ด ์ข‹์•„์„œ ํŒ€์›๋“ค ๋ชจ๋‘ ๊ณ ์ƒํ•˜์…จ๊ณ  ๋„ˆ๋ฌด ์ข‹์•˜๋‹ค.
  • 6์ฃผ๋™์•ˆ ์ด๋ ‡๊ฒŒ ๋นก๋นกํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•œ์ ์ด ์ฒ˜์Œ์ธ๊ฑฐ ๊ฐ™์€๋ฐ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ๋„ˆ๋ฌด ์ข‹์•„์„œ ๋†€๋ž๋‹ค.
  • ์ •๋ง ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ๊ณ  ์ด๋ฅผ ๋ฐœํŒ์œผ๋กœ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ ๊ฒƒ ๊ฐ™๋‹ค.

์ •๋ฏผ

  • iOS ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฒ˜์Œ์ด๋ผ ๊ฑฑ์ •์ด ๋งŽ์•˜๋Š”๋ฐ ๋ง‰์ƒ ํ•ด๋ณด๋‹ˆ๊นŒ ํŒ€์›๋ถ„๋“ค์ด ์ž˜ ๋„์™€์ฃผ์…”์„œ ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์ด ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋˜๊ฑฐ ๊ฐ™๋‹ค
  • ์„œ๋ฒ„๋ฅผ ๋งŽ์ด ๊ดด๋กญํ˜”๋˜๊ฑฐ ๊ฐ™์€๋ฐ ์„œ๋ฒ„๋ถ„๋“ค์—๊ฒŒ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ•˜๋‹ค
  • ์•„์‰ฌ์› ๋˜๊ฑด ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„์„ ์‹ ๊ฒฝ์„ ๋ชป์“ด๊ฒŒ ์ข€ ์•„์‰ฝ๋‹ค

์„ธํ˜ธ

  • ์ข‹์€ ํŒ€์›๋“ค ๋งŒ๋‚˜์„œ ์ข‹์€ ๊ฒฝํ—˜์„ ํ•˜๊ฒŒ๋˜์–ด ์ข‹์•˜๋‹ค.
  • ๊ฒ€๊ธฐ๋‹˜์„ ๋งŽ์ด ๊ดด๋กญํžŒ๊ฑฐ ๊ฐ™์€๋ฐ ์ž˜ ๋ณด์‚ดํŽด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•˜๋‹ค.
  • 6์ฃผ๋™์•ˆ ์ •๋ง ๋งŽ์ด ์„ฑ์žฅํ•œ๊ฒƒ ๊ฐ™๋‹ค.

๊ฒ€๊ธฐ

  • iOS ๋ถ„๋“ค ํ™”๋ฉด์„ ๋ณด๋ฉด์„œ ๋นจ๋ฆฌ๋นจ๋ฆฌ ๊ณต๋ถ€
  • ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ์„น์‹œํ•˜๊ฒŒ ์งฏ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ๊ทธ๋Ÿฌ์ง€ ๋ชปํ•ด์„œ ์•„์‰ฝ๋‹ค
  • 6์ฃผ๋™์•ˆ ๋ฐ€๋„์žˆ๊ฒŒ ๋ฐฐ์šด๊ฒƒ ๊ฐ™์•„ ์ข‹์•˜๋‹ค
  • ํ•™์—…๊ณผ ๋ณ‘ํ–‰ํ•˜๊ฒŒ ๋˜์–ด ๋น ์ง€๋Š” ์‹œ๊ฐ„์ด ์žˆ์—ˆ๋Š”๋ฐ ์ž˜ ๋ณดํ•ฉํ•ด์ฃผ์‹  ์„ธํ˜ธ๋‹˜๊ป˜ ๋„ˆ๋ฌด ๊ณ ๋ง™๋‹ค.

6์ฃผ๋™์•ˆ ๊ณ ์ƒ ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค !

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-15 แ„‹แ…ฉแ„’แ…ฎ 4 19 16

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.