Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 MovieBooking App

μ˜ν™” 정보λ₯Ό ν™•μΈν•˜κ³  μ˜ˆλ§€κΉŒμ§€ μ§„ν–‰ν•  수 μžˆλŠ” iOS μ˜ν™” 예맀 μ•±μž…λ‹ˆλ‹€.
TMDB APIλ₯Ό ν™œμš©ν•΄ μ˜ν™” 데이터λ₯Ό κ°€μ Έμ˜€κ³ , CoreDataλ₯Ό 톡해 예맀 정보λ₯Ό μ €μž₯ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.


πŸ“± ν”„λ‘œμ νŠΈ μ†Œκ°œ

이 ν”„λ‘œμ νŠΈλŠ” iOSμ—μ„œ μ‹€μ œ μ˜ν™” 예맀 μ„œλΉ„μŠ€μ˜ 흐름을 κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

μ‚¬μš©μžλŠ” λ‹€μŒκ³Ό 같은 κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • ν˜„μž¬ μƒμ˜ 쀑 / 인기 / κ°œλ΄‰ μ˜ˆμ • μ˜ν™” 쑰회
  • μ˜ν™” 상세 정보 확인
  • μ˜ν™” 예맀 μ§„ν–‰
  • μ’Œμ„ 선택
  • 예맀 정보 μ €μž₯
둜그인 첫 ν™”λ©΄
Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 24 44 Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 18 22
κ²€μƒ‰νŽ˜μ΄μ§€ μƒμ„ΈνŽ˜μ΄μ§€
Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 18 33 Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 19 05
λ§ˆμ΄νŽ˜μ΄μ§€ ν™˜κ²½μ„€μ •
Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 18 39 Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 21 43
μ˜ˆλ§€νŽ˜μ΄μ§€ μ’Œμ„ 선택
Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 19 48 Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 19 59
λ¦¬λ·°μž‘μ„±νŽ˜μ΄μ§€ μ˜ˆλ§€λ‚΄μ—­&λ¦¬λ·°νŽ˜μ΄μ§€
Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 20 56 Simulator Screenshot - iPhone 17 Pro - 2026-03-06 at 11 20 39

πŸ›  Tech Stack

기술 μ„€λͺ…
UIKit iOS UI ꡬ성
MVVM View와 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 뢄리
SnapKit AutoLayout μ½”λ“œ 기반 μž‘μ„±
CoreData, UserDefaults 데이터 μ €μž₯
Kingfisher 이미지 비동기 λ‹€μš΄λ‘œλ“œ 및 캐싱
TMDB API μ˜ν™” 데이터 제곡
URLSession λ„€νŠΈμ›Œν¬ν†΅μ‹ 

πŸ— Architecture

MVVM (Model - View - ViewModel)

이 ν”„λ‘œμ νŠΈλŠ” MVVM μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ„ 기반으둜 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

πŸ“ Project Structure

β”œβ”€β”€ Config.xcconfig
β”œβ”€β”€ MovieBooking
β”‚Β Β  β”œβ”€β”€ Model
β”‚Β Β  β”œβ”€β”€ Network
β”‚Β Β  β”œβ”€β”€ Util
β”‚Β Β  β”œβ”€β”€ View
β”‚Β Β  β”œβ”€β”€ ViewController
β”‚Β Β  └── ViewModel
└── README.md

πŸ”‘ 핡심 κ΅¬ν˜„ λ‚΄μš©

1. 둜그인 / νšŒμ›κ°€μž… ν™”λ©΄

  • μ•± μ§„μž… μ‹œ 둜그인 화면이 λ¨Όμ € λ‚˜νƒ€λ‚˜λ„λ‘ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.
  • νšŒμ›κ°€μž… ν™”λ©΄μ—μ„œ 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯λ°›μ•„ 계정을 생성할 수 μžˆλ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  • 둜그인 μ™„λ£Œ μ‹œ UserDefaults에 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό μ €μž₯ν•˜μ—¬, 이후 μ•± μ‹€ν–‰ μ‹œ μžλ™μœΌλ‘œ μž…λ ₯λ˜λ„λ‘ μ²˜λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.
  • 아이디와 λΉ„λ°€λ²ˆν˜Έ μž…λ ₯값에 λŒ€ν•΄ μœ νš¨μ„± 검사λ₯Ό μ μš©ν•˜μ—¬ μ˜¬λ°”λ₯Έ ν˜•μ‹μœΌλ‘œλ§Œ νšŒμ›κ°€μž… 및 둜그인이 κ°€λŠ₯ν•˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.
  • 둜그인 성곡 ν›„ TabBar 기반 메인 ν™”λ©΄μœΌλ‘œ μ΄λ™ν•˜λ„λ‘ 흐름을 μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€.

2. μ˜ν™” λͺ©λ‘ νŽ˜μ΄μ§€

  • TabBar의 첫 번째 ν™”λ©΄μœΌλ‘œ, TMDB APIλ₯Ό 톡해 μ˜ν™” λͺ©λ‘ 데이터λ₯Ό κ°€μ Έμ˜€λ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  • UICollectionViewλ₯Ό ν™œμš©ν•΄ μ˜ν™” ν¬μŠ€ν„°λ₯Ό κ°€λ‘œ 슀크둀 ν˜•νƒœλ‘œ ν‘œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
  • ν˜„μž¬ μƒμ˜μž‘, 인기 μ˜ν™”, κ°œλ΄‰ μ˜ˆμ •μž‘ λ“± μ—¬λŸ¬ μ˜ν™” λͺ©λ‘μ„ 화면에 ꡬ성할 수 μžˆλ„λ‘ μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ ν¬μŠ€ν„°λ₯Ό μ„ νƒν•˜λ©΄ μ˜ν™” 상세 ν™”λ©΄μœΌλ‘œ 이동할 수 μžˆλ„λ‘ μ—°κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

3. μ˜ν™” μ„ΈλΆ€ νŽ˜μ΄μ§€

  • μ˜ν™” λͺ©λ‘ λ˜λŠ” 검색 κ²°κ³Όμ—μ„œ νŠΉμ • μ˜ν™”λ₯Ό μ„ νƒν•˜λ©΄ 상세 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ˜ν™” ν¬μŠ€ν„°, 제λͺ©, μž₯λ₯΄, κ°œλ΄‰μΌ, 쀄거리 λ“± μ£Όμš” 정보λ₯Ό 화면에 ν‘œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
  • μ„ νƒν•œ μ˜ν™” 정보λ₯Ό λ‹€μŒ 예맀 ν™”λ©΄μœΌλ‘œ μžμ—°μŠ€λŸ½κ²Œ 전달할 수 μžˆλ„λ‘ 데이터 흐름을 κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

4. μ˜ν™” 예맀 μž…λ ₯ νŽ˜μ΄μ§€

  • μ˜ν™” 상세 νŽ˜μ΄μ§€μ—μ„œ 예맀 λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ 예맀 μž…λ ₯ ν™”λ©΄μœΌλ‘œ μ΄λ™ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ˜ν™”κ΄€, λ‚ μ§œ, μ‹œκ°„, 인원 수, μ’Œμ„ λ“± μ˜ˆλ§€μ— ν•„μš”ν•œ 정보λ₯Ό μž…λ ₯ν•  수 μžˆλ„λ‘ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.
  • κ²°μ œν•˜κΈ° λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ 예맀 내역이 μ €μž₯되고, 이후 λ§ˆμ΄νŽ˜μ΄μ§€μ—μ„œ 확인할 수 μžˆλ„λ‘ μ—°κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
  • 예맀 κ³Όμ •μ—μ„œ μ„ νƒν•œ 데이터λ₯Ό 기반으둜 ν™”λ©΄ μƒνƒœλ₯Ό κ°±μ‹ ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

5. μ˜ν™” 검색 νŽ˜μ΄μ§€

  • TabBar의 두 번째 ν™”λ©΄μœΌλ‘œ, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ ν…μŠ€νŠΈλ₯Ό κΈ°μ€€μœΌλ‘œ μ˜ν™”λ₯Ό 검색할 수 μžˆλ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  • 검색 κ²°κ³ΌλŠ” UICollectionViewλ₯Ό ν™œμš©ν•΄ μ˜ν™” ν¬μŠ€ν„° ν˜•νƒœλ‘œ ν‘œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
  • 검색어λ₯Ό ν¬ν•¨ν•œ μ˜ν™” 데이터λ₯Ό APIμ—μ„œ 받아와 화면에 λ°˜μ˜ν•˜λ„λ‘ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.
  • 검색 κ²°κ³Όμ—μ„œ μ˜ν™”λ₯Ό μ„ νƒν•˜λ©΄ 상세 νŽ˜μ΄μ§€λ‘œ 이동할 수 μžˆλ„λ‘ μ—°κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

6. λ§ˆμ΄νŽ˜μ΄μ§€

  • TabBar의 μ„Έ 번째 ν™”λ©΄μœΌλ‘œ, μ‚¬μš©μž 계정 정보와 예맀 내역을 확인할 수 μžˆλ„λ‘ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.
  • νšŒμ›κ°€μž… μ‹œ μž…λ ₯ν•œ μ‚¬μš©μž 정보λ₯Ό ν‘œμ‹œν•  수 μžˆλ„λ‘ UserDefaults 기반으둜 데이터λ₯Ό κ΄€λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ κ²°μ œν•œ μ˜ν™” 예맀 내역을 확인할 수 μžˆλ„λ‘ μ €μž₯ 및 쑰회 κΈ°λŠ₯을 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš©μž 정보와 예맀 내역을 ν•œ ν™”λ©΄μ—μ„œ 확인할 수 μžˆλ„λ‘ λ§ˆμ΄νŽ˜μ΄μ§€ ꡬ쑰λ₯Ό μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€.

회고

κ²ͺμ–Έλ˜ 문제점

  • μž₯예슬: 이미 μ˜ˆλ§€ν•˜κΈ° μ°½μ—μ„œ 데이터 μ €μž₯κΉŒμ§€ κ΅¬ν˜„μ„ λ§ˆμ³€μ–΄μ„œ μΆ”κ°€κΈ°λŠ₯으둜 μ˜ν™”κ΄€ μ’Œμ„λ·°λ₯Ό κ΅¬ν˜„ν• λ•Œ 데이터 흐름이 μ–΄λ €μ› μŠ΅λ‹ˆλ‹€.
  • μ†μ˜λΉˆ: λ ˆμ΄μ•„μ›ƒ ꡬ성을 μ–΄λ–»κ²Œ ν•˜λŠ” 게 μ’‹μ„κΉŒμ— λŒ€ν•œ 고민이 λ§Žμ•˜λ‹€. λ˜ν•œ, "Entity의 Attribute 섀정을 잘λͺ»ν–ˆμ„ λ•Œ, μ–΄λ–»κ²Œ μˆ˜μ •μ„ ν•΄μ•Όν• κΉŒ?"와 "λ‹€λ₯Έ Entityλ₯Ό JOIN ν•˜λŠ” 방법은 μ—†μ„κΉŒ?"λ₯Ό μƒκ°ν•΄λ³΄μ•˜λ‹€.

λͺ©ν‘œλŒ€λΉ„ 이룬점

  • μž₯예슬: MVVM ꡬ쑰λ₯Ό μ μš©ν•˜κ³  μ’Œμ„ 선택 및 예맀 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ—¬ μ‹€μ œ μ•±κ³Ό μœ μ‚¬ν•œ 흐름을 μ™„μ„±ν–ˆμŠ΅λ‹ˆλ‹€!! ν•„μˆ˜κ΅¬ν˜„κΉŒμ§€κ°€ λͺ©ν‘œμ˜€μ§€λ§Œ μΆ”κ°€ κ΅¬ν˜„κΉŒμ§€ λλ‚΄μ„œ κΈ°μ©λ‹ˆλ‹€
  • μ†μ˜λΉˆ: CoreDataλ₯Ό μ„€κ³„ν•˜κ³  μ‚¬μš©ν•˜λ©΄μ„œ μ΅μˆ™ν•΄μ§„ 것 κ°™λ‹€. λ˜ν•œ, MVVM도 μ§€λ‚œ κ³Όμ œκΉŒμ§€λŠ” μ μš©ν•˜κΈ°κΉŒμ§€ μ‹œκ°„μ΄ κ½€ μ˜€λž˜κ±Έλ ΈλŠ”λ°, 아직 MVC -> MVVM으둜 λ¦¬νŒ©ν† λ§ν•˜λŠ” 과정을 κ±°μΉ˜λŠ” 것이 더 νŽΈν•˜κΈ΄ ν•˜μ§€λ§Œ, μˆ˜μ •ν•˜λŠ” 것에 μžˆμ–΄ μ‹œκ°„μ΄ 많이 λ‹¨μΆ•λ˜μ—ˆλ‹€κ³  λŠκΌˆλ‹€.

μ†Œκ°

  • μž₯예슬: MVVMꡬ쑰와 CollectionView 곡뢀가 많이 된 ν”„λ‘œμ νŠΈμ˜€μŠ΅λ‹ˆλ‹€!!
  • μ†μ˜λΉˆ: λΉ λ₯Έ μ‹œμΌ 내에 μ™„μ„±ν•˜μ—¬ 보닀 λ§Žμ€ 도전 κ΅¬ν˜„μ„ μ§„ν–‰ν•΄λ³΄κ³ μž ν–ˆμ§€λ§Œ, κ·ΈλŸ¬μ§€ λͺ»ν•œ 것 κ°™μ•„ 아쉽닀. κ·Έλž˜λ„ CollectionView, CoreData, MVVM ꡬ쑰 μ΅μˆ™ν•΄μ§€κΈ°μ— μ„±κ³΅ν•œ 것 κ°™λ‹€.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages