JunSoft
MindFlow
헬스 · 웰니스

MindFlow

감정 기록 · CBT · AI 멘탈 코치

App Store에서 보기
개요

MindFlow는 감정 기록, 인지행동치료(CBT) 프로그램, AI 멘탈 코치를 한데 묶은 멘탈 웰니스 앱입니다. SwiftUI iOS 앱과 FastAPI·PostgreSQL 백엔드로 구성되며, AI 코치는 SSE 스트리밍으로 토큰을 실시간 전달하고 대화에서 추출한 장기 기억을 시스템 프롬프트에 주입해 맥락을 이어갑니다. 무드 데이터는 HealthKit의 걸음수·수면·심박수와 상관 분석되고, 홈 위젯 3종·StoreKit 2 구독·캘린더 리마인더·Notion 내보내기까지 갖춘 풀스택 제품입니다.

풀고자 한 문제

감정 기록 앱은 단순 다이어리에 그치고, 전문 CBT 코칭은 비싸고 접근이 어렵습니다. MindFlow는 일상적인 무드 기록을 다주차 CBT 프로그램과 AI 코치로 연결해 누구나 꾸준히 자기 정신건강을 돌볼 수 있게 합니다.

스크린샷

앱 미리보기

  • MindFlow 스크린샷 1
  • MindFlow 스크린샷 2
  • MindFlow 스크린샷 3
  • MindFlow 스크린샷 4
핵심 기능

무엇을 할 수 있나요

01

AI 멘탈 코치 (SSE 스트리밍)

OpenAI 기반 코치와 실시간으로 대화합니다. 백엔드가 text/event-stream으로 토큰을 흘려보내면 iOS는 for-await 비동기 스트림으로 받아 타이핑하듯 출력합니다. 성격(따뜻함·전문적·활기참·차분함)별 시스템 프롬프트를 적용하고, CBT 리프레이밍과 위기 상황(자해·자살) 감지 시 상담 핫라인 안내를 포함합니다.

02

AI 코치 장기 기억

대화가 끝나면 LLM이 기억할 만한 핵심 정보를 추출해 저장하고(사용자당 최대 50개), 다음 대화에서 최근 메모리를 시스템 프롬프트에 '사용자 프로필'로 주입해 개인화된 응답을 이어갑니다. 추출→저장→주입 파이프라인이 세션을 넘어 맥락을 유지합니다.

03

감정 기록 & HealthKit 상관 분석

활동 태그와 함께 무드와 강도(1~5)를 기록하고 추세를 분석합니다. HealthKit에서 걸음수·수면·심박수를 읽어 감정과 건강 지표의 상관관계를 보여주고, 무드 데이터를 LLM이 분석해 활동 상관 인사이트와 추천을 JSON으로 생성합니다.

04

다주차 CBT 프로그램

사고기록·리프레이밍·행동활성화·노출·마음챙김·핵심신념 등 다양한 기법으로 구성된 다주차(예: 8세션) 인지행동치료 프로그램을 제공합니다. 세션별 콘텐츠는 서버에 시드되고, 일부 CBT 콘텐츠는 Google Gemini로 생성됩니다.

05

저널 · 주간 리포트 · Notion 내보내기

감사일기·회고·목표 저널을 작성하고 무드 데이터를 주간/월간으로 집계한 추세 리포트와 인사이트를 받습니다. Notion API(OAuth)로 저널을 노션 페이지로 내보낼 수 있습니다.

06

루틴 · 성취 배지 · 호흡 도구

맞춤 웰니스 루틴을 만들어 습관을 관리하고, 성취 규칙 엔진이 달성 시 배지와 토스트를 띄워 동기를 부여합니다. 4-7-8 호흡 등 그라운딩 도구로 불안한 순간 즉각 진정할 수 있습니다.

07

홈 위젯 3종 & 캘린더 리마인더

빠른 무드 입력(Quick Mood)·오늘의 무드(Today's Mood)·주간 차트(Weekly Chart) 위젯을 App Group 공유 저장소로 갱신합니다. EventKit 기반으로 무드 기록·CBT 리마인더를 캘린더 알림으로 예약할 수 있습니다.

08

구독 · 사용량 제한 · Apple 로그인

StoreKit 2 구독과 Sign in with Apple을 지원하며, 백엔드가 App Store의 JWS 트랜잭션을 검증합니다. 무료 티어는 코치 메시지·저널 사용량을 제한하고 프리미엄에서 무제한으로 해제됩니다.

기술 스택

어떻게 만들었나요

iOS Core

SwiftSwiftUI@ObservableMVVMProtocol-first Clean Architecture

Apple Frameworks

WidgetKitStoreKit 2HealthKitEventKitSign in with AppleApp Groups

Backend

PythonFastAPISQLAlchemy 2.0 (async)asyncpgAlembicPostgreSQL

AI / LLM

OpenAI (gpt-4o)Google Gemini (gemini-2.5-flash)SSE StreamingLong-term Memory Pipeline

Auth & Security

JWT (python-jose)bcrypt (passlib)App Store JWS Verification

Integrations & Infra

Notion APIDockerNginxhttpx
아키텍처

SwiftUI 클라이언트와 FastAPI 백엔드를 분리한 풀스택 구조로, iOS는 Protocol-first Clean Architecture, 서버는 router·service·model 계층으로 구성됩니다. AI 코치는 OpenAI 스트리밍 + 장기 기억 파이프라인, CBT 콘텐츠는 Google Gemini로 생성하는 용도별 LLM 분리를 적용합니다.

  1. 1

    앱·백엔드 분리: SwiftUI iOS 클라이언트(641개 단위 테스트)와 FastAPI 백엔드(526개 테스트)를 독립 배포하고, REST·SSE로 통신합니다.

  2. 2

    Protocol-first Clean Architecture: 모든 외부 의존성(API·Storage·HealthKit)을 프로토콜로 추상화하고 init 주입으로 Mock 교체가 가능해, ViewModel을 독립적으로 단위 테스트합니다.

  3. 3

    SSE 토큰 스트리밍: 백엔드가 StreamingResponse(text/event-stream)로 `data: <chunk>` 청크와 `[DONE]` 종료 신호를 흘려보내면, iOS가 비동기 스트림으로 받아 실시간 타이핑 효과를 구현합니다.

  4. 4

    AI 코치 장기 기억 파이프라인: 대화에서 LLM으로 메모리를 추출→저장(사용자당 최대 50개)하고, 다음 대화의 시스템 프롬프트에 최근 메모리를 주입해 세션을 넘어 맥락을 유지합니다.

  5. 5

    용도별 LLM 분리: 코치 대화·무드 분석·메모리 추출은 OpenAI(gpt-4o)로, CBT 콘텐츠 생성은 Google Gemini(gemini-2.5-flash)로 처리해 각 작업에 맞는 프로바이더를 사용합니다.

  6. 6

    위젯·앱 분리 + App Groups 공유: WidgetKit 익스텐션이 App Group(`group.com.junsoft.mindflow`) 공유 저장소를 통해 메인 앱과 무드 데이터를 주고받아 홈 화면 위젯 3종을 갱신합니다.

  7. 7

    구독 검증 + 사용량 게이팅: StoreKit 2 트랜잭션의 JWS를 백엔드가 검증하고, 사용량 리미터가 무료 티어의 코치 메시지·저널 한도를 적용한 뒤 프리미엄에서 무제한 해제합니다.

지표

641 (@Test)

iOS 단위 테스트

526

백엔드 테스트

52

API 엔드포인트

12

백엔드 라우터

3

홈 위젯

13

지원 로케일