본문 바로가기
감정일기(가칭)

📁 LemonLog 폴더 구조 정리 — MVVM + Application + Resource 구성

by 밤새는 탐험가89 2025. 10. 15.
728x90
SMALL

🧱 1️⃣ 전체 구조

📁 LemonLog
 ┣ 📂 Application
 ┃ ┣ AppDelegate.swift
 ┃ ┗ SceneDelegate.swift
 ┣ 📂 Model
 ┣ 📂 View
 ┣ 📂 ViewController
 ┣ 📂 ViewModel
 ┣ 📂 CoreData
 ┣ 📂 Firebase
 ┣ 📂 Resource
 ┃ ┣ Assets.xcassets
 ┃ ┗ LaunchScreen.storyboard
 ┗ 📂 Utils

🎯 2️⃣ 폴더별 역할 설명

📂 Application

앱의 “시작점”과 생명주기를 관리하는 핵심 폴더입니다.

 

AppDelegate.swift → 앱 전체의 설정, 초기화, 백그라운드 관리

SceneDelegate.swift → 루트 뷰를 설정하고, 앱의 윈도우 흐름 제어

 

💡 Firebase 초기화, 푸시 알림 등록 등은 나중에 AppDelegate에서 추가 예정.


📂 Model

앱에서 사용하는 데이터 구조를 정의하는 폴더입니다.

 

EmotionDiary.swift, User.swift

CoreData Entity와 대응되는 구조체 포함


📂 View

화면 구성 요소 중 재사용 가능한 UI 컴포넌트를 관리합니다.


예: 커스텀 셀, 버튼, 뷰 등

DiaryCell.swift

EmotionButton.swift


📂 ViewController

UIKit 기반 프로젝트에서는 필수 폴더입니다.
MVVM 구조에서 ViewController는 View와 ViewModel을 연결하는 역할을 합니다.

 

HomeViewController.swift

DiaryViewController.swift


📂 ViewModel

데이터 로직을 처리하고 View와 바인딩하는 계층입니다.

 

HomeViewModel.swift

DiaryViewModel.swift

 

💡 Firebase와 CoreData의 중간 역할을 하는 ViewModel은 이곳에 추가됩니다.


📂 CoreData

로컬 데이터 저장용 파일을 관리하는 폴더입니다.

 

CoreDataManager.swift

EmotionDiaryEntity+CoreDataProperties.swift


📂 Firebase

나중에 서버 동기화, 사용자 인증, 감정일기 공유 기능을 추가할 때 사용할 폴더입니다.
현재는 폴더만 만들어두고, 이후에 .gitkeep 파일을 넣어 관리해도 됩니다.

 

FirebaseManager.swift

FirestoreService.swift


📂 Resource

앱의 모든 정적 리소스를 관리하는 폴더입니다.

 

Assets.xcassets : 이미지, 색상, 앱 아이콘 관리

LaunchScreen.storyboard : 앱 실행 시 표시되는 런치 화면

 

💡 Info.plist는 기본적으로 루트에 두지만, Resource로 옮겨도 무방합니다.


📂 Utils (선택)

공용 유틸리티, 익스텐션, 헬퍼 클래스를 관리합니다.

 

UIColor+Extension.swift

DateFormatter+Helper.swift


🪄 3️⃣ 폴더 구성 이유

폴더 핵심 역할 이유
Application 앱 생명주기 제어 전역 설정 코드 집중 관리
Model / View / ViewModel MVVM 구조 역할 분리로 유지보수성 향상
ViewController UIKit 전용 구조 View-ViewModel 연결 중심
CoreData 로컬 데이터 오프라인 저장 기능
Firebase 서버 동기화 커뮤니티/백업 기능 확장성 확보
Resource 정적 리소스 색상, 이미지, 폰트 일괄 관리
Utils 공용 로직 코드 중복 최소화

✅ 마무리 요약

LemonLog의 폴더 구조는 “확장 가능한 MVVM 기반 iOS 앱의 전형적인 형태”입니다.

Firebase, CoreData, UIKit, 향후 SwiftUI 전환까지 고려해도 이 구조는 유지보수성과 확장성 면에서 효율적입니다.

 

728x90
LIST