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

🌿 감정일기 앱의 진화: Core Data에서 Firebase, 그리고 AI

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

🎯 목표

이 프로젝트의 목표는 단순한 “일기 앱”을 넘어서,
감정을 기록하고, 공유하며, 위로받을 수 있는 공간을 만드는 것입니다.

이를 위해 다음과 같은 두 단계의 발전 로드맵을 구상했습니다.

 

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로 감정을 돌본다.

 

이 구조는 단순한 기술 스택의 조합을 넘어
“기술 + 감정 + 사람”이 유기적으로 연결되는
인간적인 앱의 방향성을 제시합니다.

728x90
LIST