A terminal-based emotion logging tool for developers
터미널에서 바로 사용할 수 있는 감정 기록 도구입니다. 개발자들이 업무 중 느끼는 다양한 감정을 체계적으로 기록하고 분석할 수 있습니다.
- 대화형 입력: 상황 → 감정 → 강도 → 몸반응 → 생각 → 컨텍스트 → 태그 순서
- 자동완성: 감정, 컨텍스트, 몸반응 등 미리 정의된 옵션 제공
- 빠른 접근: 터미널에서
emo명령어 하나로 즉시 기록
- 통계: 감정 분포, 평균 강도, 컨텍스트별 분석
- 패턴 분석: 요일별, 시간대별 감정 패턴 발견
- 트리거 분석: 스트레스 유발 요인 및 부정적 감정 분석
- 타임라인: 하루/주간 감정 변화 시각화
- 선택적 수정: 개별 엔트리의 필드별 수정
- 선택적 삭제: 원하는 엔트리만 골라서 삭제
- 일괄 초기화: 기간별 또는 전체 데이터 리셋
- 백업/내보내기: CSV, JSON 형태로 데이터 추출
- 감정의 다락방: 아름다운 3D 다락방 인터페이스
- 천창 뷰: 현재 감정에 따라 변하는 창밖 풍경
- 실시간 모니터링: 오늘의 감정과 최근 기록 시각화
- 자연스러운 애니메이션: 구름, 비, 햇살 등 날씨 효과
# 저장소 클론
git clone <repository-url>
cd emolog
# 의존성 설치 (uv 사용 권장)
uv pip install -e .
# 또는 pip 사용
pip install -e .# 감정 기록하기
emo
# 명시적 로깅
emo log
# 통계 보기
emo stats
# 패턴 분석
emo patterns
# 스트레스 요인 분석
emo triggers
# 감정 타임라인
emo timeline
# 엔트리 수정
emo edit
# 선택적 삭제
emo delete
# 데이터 리셋
emo reset
# 데이터 내보내기
emo export --format csv --period week
# 백업 생성
emo backup
# 웹 대시보드 시작
emo web
# 특정 포트로 웹 대시보드
emo web --port 3000
# 자동으로 브라우저 열기
emo web --open
# 개발 모드 (실시간 리로드)
emo web --debug- 위치:
~/.emolog/디렉토리 - 형식: JSONL (JSON Lines) 파일
- 구조: 날짜별로 자동 분류 (
YYYY/MM/YYYYMMDD.jsonl) - 시간대: KST (한국 표준시) 기준
- 프라이버시: 모든 데이터는 로컬에만 저장
{
"timestamp": "2024-08-12T11:30:00+09:00",
"situation": "코드리뷰 받음",
"emotion": "긴장",
"intensity": 6,
"body_reaction": "손에 땀",
"thought": "실수가 많이 발견될까 걱정",
"context": "work",
"tags": ["코드리뷰", "개발"],
"id": "uuid-string"
}- 코드리뷰, 배포, 버그 수정 시 감정 변화 추적
- 스트레스 요인 식별 및 개선 방안 모색
- 업무 패턴과 감정 상태의 상관관계 분석
- 일상의 감정 변화 모니터링
- 부정적 감정의 트리거 파악
- 긍정적 경험과 상황 식별
- 다락방 대시보드: 차분한 공간에서 감정 데이터 확인
- 창문 뷰: 감정 상태에 따라 변하는 창밖 풍경으로 직관적 이해
- 실시간 피드백: 오늘의 감정 변화를 즉시 시각적으로 확인
- 패턴 인식: 웹 인터페이스를 통한 더 쉬운 데이터 해석
- 모든 데이터는 사용자 로컬 컴퓨터에만 저장됩니다
- 외부 서버로 데이터가 전송되지 않습니다
- 사용자가 직접 백업과 데이터 관리를 제어할 수 있습니다
이 프로젝트는 GitHub Actions와 OIDC를 통한 안전한 자동 배포를 지원합니다.
-
태그 생성으로 배포:
# 버전 업데이트 git tag v1.0.0 git push origin v1.0.0 -
OIDC 기반 배포 설정 (저장소 관리자):
- PyPI에서 Trusted Publisher 설정
- Test PyPI에서 Trusted Publisher 설정
- 토큰 관리 불필요! 🎉
-
Trusted Publisher 설정 방법:
- PyPI → Account settings → Publishing → Add a new pending publisher
- Owner:
{your-github-username} - Repository name:
emolog - Workflow name:
publish.yml - Environment name:
pypi(또는test-pypi)
-
수동 배포:
# 빌드 python -m build # Test PyPI 업로드 twine upload --repository testpypi dist/* # PyPI 업로드 twine upload dist/*
이 프로젝트는 개인 프로젝트로 시작되었지만, 기여를 환영합니다!
# 저장소 클론
git clone https://github.com/gmlee/emolog.git
cd emolog
# 개발 의존성 설치
make install
# 또는 직접: uv pip install -e ".[dev]"이 프로젝트는 ZERO TOLERANCE 코드 품질 정책을 사용합니다:
# 코드 자동 포맷팅
make format
# 품질 검사 (커밋/푸시 전 필수)
make check
# 푸시 준비 완료 (포맷팅 + 검사)
make push-ready- pre-commit: 커밋 시 staged 파일 품질 검사
- pre-push: 푸시 시 전체 코드베이스 품질 검사
- 자동 차단: black/isort 미적용 시 커밋/푸시 완전 차단
- 자동 설치: 도구가 없으면 자동으로 설치
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run quality tools (
make push-ready) - Commit your changes (
git commit -m 'Add amazing feature')- 🛡️ pre-commit 훅이 자동으로 품질 검사
- Push to the branch (
git push origin feature/amazing-feature)- 🛡️ pre-push 훅이 전체 코드베이스 검사
- Open a Pull Request
| 명령어 | 설명 | 언제 사용? |
|---|---|---|
make install |
개발 환경 설정 | 프로젝트 시작 시 |
make format |
코드 자동 포맷팅 | 개발 중 수시로 |
make lint |
품질 검사만 | CI에서 또는 확인용 |
make check |
품질+기능 검사 | 커밋 전 |
make push-ready |
완전한 준비 | 푸시 전 필수 |
make clean |
빌드 파일 정리 | 필요시 |
- 자동 포맷팅: Black (88자 라인 길이)
- Import 정렬: isort (Black 프로필)
- Git 훅: 커밋/푸시 시 자동 품질 검사
- CI/CD: GitHub Actions에서 다중 Python 버전 테스트
MIT License - 자세한 내용은 LICENSE 파일을 참조하세요.
개발자들의 정신 건강과 감정 인식의 중요성에 대한 관심에서 출발한 프로젝트입니다. 여러분의 일상에 작은 도움이 되기를 바랍니다. 😊