Thanks to visit codestin.com
Credit goes to kaywalker91.github.io

MindLog

AI 기반 감정 케어 다이어리

당신의 일기를 분석하여 감정 상태를 파악하고,
따뜻한 위로의 메시지와 맞춤형 행동 지침을 제공합니다.

주요 기능

📝

일기 작성 및 저장

로컬 데이터베이스(SQLite)에 안전하게 저장되며, 날짜별로 일기를 관리하고 조회할 수 있습니다.

🤖

AI 감정 분석

Groq API (Llama 3.3)를 활용하여 실시간에 가까운 감정 분석을 제공합니다. 캐릭터 선택에 따라 공감 톤이 달라집니다.

📊

감정 통계 대시보드

감정 추이 차트, 감정 정원(🌱→🌻), 키워드 태그 클라우드로 나의 감정 패턴을 시각화합니다.

💬

맞춤형 추천

AI가 분석한 감정 상태에 기반하여 공감 메시지와 맞춤형 행동 지침을 제안합니다.

🔒

프라이버시 보호

모든 일기 데이터는 로컬 기기에만 저장되어 개인 정보가 안전하게 보호됩니다.

📱

반응형 UI

320dp~600dp+ 다양한 화면 크기에 최적화된 반응형 디자인으로 모든 기기에서 편안하게 사용할 수 있습니다.

🔐

비밀일기

4자리 PIN + SHA-256 암호화로 민감한 일기를 안전하게 보호합니다. 인증된 세션에서만 접근 가능하며 통계에서 완전히 제외됩니다.

최근 개선

v1.4.49까지의 개선 사항을 소개합니다. 디자인 토큰 시스템 확립, 스플래시 애니메이션 리디자인, 접근성 Sprint 완료, FCM 멱등성 Pre-lock 패턴, 비밀일기 보안 기능 등 대규모 업데이트가 이루어졌습니다.

Design System

디자인 토큰 시스템 & 스카이 블루 팔레트 (v1.4.49)

Primary 색상을 스카이 블루(#87CEEB)로 확립하고 AppColors.primary(아이콘/강조) / AppColors.primaryDark(텍스트, WCAG AA 4.5:1) / AppTheme.primaryColor(theme 경유) 삼각형 토큰 체계를 설계했습니다. 텍스트에 primary 직접 사용 시 대비율 1.7:1 미달 문제를 구조적으로 방지합니다. // design-ok 이스케이프 패턴으로 BlendMode 등 불가피한 예외만 명시적으로 허용합니다.

Animation

스플래시 이중 컨트롤러 아키텍처 (v1.4.49)

_entranceController(800ms one-shot, easeOutBack) + _loopController(2500ms repeat/reverse) 이중 컨트롤러로 일회성 진입과 반복 루프를 분리했습니다. Listenable.merge([c1, c2]) 기반 AnimatedBuilder로 두 컨트롤러를 단일 리빌드 트리로 통합하여 addStatusListener cascade 패턴을 구현했습니다.

Accessibility

접근성 Sprint 1+2 완료 — 14개 화면 (v1.4.49)

전체 14개 화면에 AccessibilityWrapper(screenTitle:)를 적용하고 theme-aware 색상 매핑을 완성했습니다(Colors.black87→scrim.withValues(), Colors.white→onSurface, Colors.grey[900]→surfaceContainerLowest). diary_item_cardAppAccessibility.diaryItemLabel()을 도입해 date/sentimentScore/contentPreview/keywords를 시맨틱으로 노출합니다.

Reliability

FCM 멱등성 Pre-lock 패턴 (v1.4.48)

Firebase Functions retry + Firestore 부분 실패로 인한 3회 중복 발송 문제를 Firestore create() 원자적 잠금으로 해결했습니다. 기존 check-send-mark 패턴의 race condition을 분석하고 acquireSendLock / completeSendLock / releaseSendLockOnFailure 3-함수 패턴으로 교체했습니다. fail-open → fail-safe 전환으로 장애 시 안전성을 우선했습니다.

Security

비밀일기 기능 (v1.4.44)

4자리 PIN + SHA-256 암호화로 민감한 일기를 보호합니다. flutter_secure_storage에 해시 저장, in-memory 세션 인증 방식으로 앱 재시작 시 자동 잠금됩니다. 인증 실패 3회 시 초기화 옵션을 제공하며, 비밀 일기는 감정 통계에서 완전히 제외됩니다.

스크린샷

MindLog 온보딩 화면

온보딩

MindLog 일기 목록 화면

일기 목록

MindLog 일기 작성 화면

일기 작성

MindLog 마음 달력 화면

마음 달력

MindLog 감정 추이 차트

감정 추이

MindLog 키워드 분석 화면

키워드 분석

MindLog AI 캐릭터 선택 화면

AI 캐릭터

MindLog 설정 화면

설정

기술 스택

Framework Flutter
Language Dart
State Management Riverpod
Local DB SQLite
AI API Groq (Llama 3.3 + Vision)
Charts fl_chart
Architecture Clean Architecture

지금 시작해보세요

MindLog와 함께 나의 감정을 기록하고 이해해보세요.