🎯 목표
이 프로젝트의 목표는 단순한 “일기 앱”을 넘어서,
감정을 기록하고, 공유하며, 위로받을 수 있는 공간을 만드는 것입니다.
이를 위해 다음과 같은 두 단계의 발전 로드맵을 구상했습니다.
1단계: 개인 감정 기록 (Core Data 기반)
2단계: 커뮤니티 + AI 확장 (Firebase + OpenAI 연동)
1️⃣ 1단계 — 개인 감정 기록 (Core Data)
앱의 출발점은 “나만의 감정일기”입니다.
오프라인 환경에서도 안정적으로 데이터를 저장하고 수정할 수 있도록
Apple의 로컬 데이터베이스인 Core Data를 기반으로 구현합니다.
💡 구조 설계
EmotionDiaryEntity {
id: UUID
emotion: EmotionType // ex. happy, sad, anxious...
content: String
createdAt: Date
image: Data?
}
🧠 특징
1. 인터넷 연결이 없어도 완전한 CRUD 가능
2. 빠른 검색 및 필터링 (감정별 보기 등)
3. Core Data 기반의 로컬 스토리지로 반응성 향상
즉, 이 단계에서는 앱이 오롯이 “사용자의 감정에 집중”하도록 설계합니다.
2️⃣ 2단계 — 커뮤니티 + AI 확장 (Firebase & OpenAI)
개인 기록이 쌓이다 보면,
“나와 비슷한 감정을 느낀 사람들과 연결되고 싶다”는 욕구가 생깁니다.
이 단계에서는 Firebase Firestore를 활용해 감정 공유 커뮤니티를 구축합니다.
💬 커뮤니티 확장 구조
🔹 Core Data → Firebase 업로드
모든 일기는 기본적으로 Core Data에 저장
사용자가 ‘공유하기’ 버튼을 눌렀을 때만 Firebase에 업로드
Core Data는 개인 저장소, Firestore는 공개용 저장소로 역할 분리
🔹 Firestore 데이터 구조 예시
users/{userId}
├── profile: { name, intro, profileImageURL }
└── diaries/{diaryId}
├── emotion: "happy"
├── content: "오늘은 조금 나아졌어요."
├── createdAt: timestamp
├── imageURL: "..."
├── isPublic: true
이 구조를 기반으로
공개된 일기(isPublic = true)만을 불러와
홈 화면의 “공감 피드” 섹션에 표시할 수 있습니다.
“😊 오늘은 기분이 한결 가벼워졌어요.”
“😔 조금 지쳤지만 괜찮아요.”
이처럼 감정 중심의 커뮤니티는 SNS의 경쟁적 분위기보다
공감과 회복의 공간으로 자리 잡을 수 있습니다.
💡 활용 아이디어
① 감정 분석 (Emotion Insight)
사용자가 작성한 일기를 OpenAI에 전달해 감정 톤을 자동 분류합니다.
let prompt = "다음 문장에서 감정을 happy, sad, angry, neutral 중 하나로 분류해줘: \(content)"
→ 결과를 Firestore에 저장
→ emotionAI: "sad", confidence: 0.92
이를 기반으로 “AI 감정 변화 그래프”를 시각화할 수도 있습니다.
② AI 리플렉션 메시지
일기 저장 후, AI가 감정에 맞는 한 줄 메시지를 제안합니다.
“오늘은 지친 하루였군요. 내일은 조금 더 가벼워질 거예요.”
“당신의 감정은 소중해요. 그대로 괜찮아요.”
이 메시지는 단순한 텍스트가 아니라,
사용자에게 ‘감정적 피드백 루프’를 제공합니다.
③ 감정 기반 추천 커뮤니티
Firebase에서 유사 감정 데이터를 쿼리해,
비슷한 감정을 느낀 사람들의 일기를 추천할 수 있습니다.
db.collection("diaries")
.whereField("emotion", isEqualTo: "anxious")
→ “나만 이런 기분이 아니구나”라는 공감 경험을 제공합니다.
⚙️ 전체 아키텍처 개요
[App]
├── Core Data (로컬 CRUD)
├── Firebase Firestore (커뮤니티 데이터)
├── Firebase Auth (로그인 관리)
└── OpenAI API (감정 분석 & 리플렉션 메시지)
↓
Firestore에 분석 결과 저장
🚀 향후 확장 로드맵
| 단계 | 주요 기능 | 핵심 기술 | 특징 |
| 1단계 | 개인 감정일기 | Core Data | 오프라인 중심 |
| 2단계 | 클라우드 백업 & 공유 | Firebase Firestore | 실시간 동기화 |
| 3단계 | 커뮤니티 확장 | Firebase | 공감 피드 |
| 4단계 | AI 감정 분석 | OpenAI API | 감정 인사이트 |
| 5단계 | 감정 기반 추천 | Firebase Query + AI | 맞춤형 피드 제공 |
🌱 마무리
Core Data로 감정을 기록하고,
Firebase로 감정을 나누고,
OpenAI로 감정을 돌본다.
이 구조는 단순한 기술 스택의 조합을 넘어
“기술 + 감정 + 사람”이 유기적으로 연결되는
인간적인 앱의 방향성을 제시합니다.
'감정일기(가칭)' 카테고리의 다른 글
| 🍋 MIT License 적용 후 앱스토어 출시 시 주의사항 및 변경 가이드 (0) | 2025.10.13 |
|---|---|
| 🧩 Xcode 새 프로젝트 생성 시 “Testing System”은 무엇을 선택해야 할까? (0) | 2025.10.12 |
| ☁️ Core Data, iCloud, Firebase — 감정일기 앱에서 어떤 걸 써야 할까? (0) | 2025.10.12 |
| 🔄 Core Data + Firebase(Firestore) 동기화 구조 설계 (0) | 2025.10.12 |
| 🧠 감정일기 앱 데이터 모델 설계 (with Firebase + MVVM) (0) | 2025.10.12 |