Skip to main content

A terminal-based emotion logging tool for developers

Project description

Emolog ๐Ÿ“

A terminal-based emotion logging tool for developers

ํ„ฐ๋ฏธ๋„์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ • ๊ธฐ๋ก ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์ด ์—…๋ฌด ์ค‘ ๋А๋ผ๋Š” ๋‹ค์–‘ํ•œ ๊ฐ์ •์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ“ ๊ฐ์ • ๋กœ๊น…

  • ๋Œ€ํ™”ํ˜• ์ž…๋ ฅ: ์ƒํ™ฉ โ†’ ๊ฐ์ • โ†’ ๊ฐ•๋„ โ†’ ๋ชธ๋ฐ˜์‘ โ†’ ์ƒ๊ฐ โ†’ ์ปจํ…์ŠคํŠธ โ†’ ํƒœ๊ทธ ์ˆœ์„œ
  • ์ž๋™์™„์„ฑ: ๊ฐ์ •, ์ปจํ…์ŠคํŠธ, ๋ชธ๋ฐ˜์‘ ๋“ฑ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์˜ต์…˜ ์ œ๊ณต
  • ๋น ๋ฅธ ์ ‘๊ทผ: ํ„ฐ๋ฏธ๋„์—์„œ emo ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ์ฆ‰์‹œ ๊ธฐ๋ก

๐Ÿ“Š ๋ถ„์„ ๊ธฐ๋Šฅ

  • ํ†ต๊ณ„: ๊ฐ์ • ๋ถ„ํฌ, ํ‰๊ท  ๊ฐ•๋„, ์ปจํ…์ŠคํŠธ๋ณ„ ๋ถ„์„
  • ํŒจํ„ด ๋ถ„์„: ์š”์ผ๋ณ„, ์‹œ๊ฐ„๋Œ€๋ณ„ ๊ฐ์ • ํŒจํ„ด ๋ฐœ๊ฒฌ
  • ํŠธ๋ฆฌ๊ฑฐ ๋ถ„์„: ์ŠคํŠธ๋ ˆ์Šค ์œ ๋ฐœ ์š”์ธ ๋ฐ ๋ถ€์ •์  ๊ฐ์ • ๋ถ„์„
  • ํƒ€์ž„๋ผ์ธ: ํ•˜๋ฃจ/์ฃผ๊ฐ„ ๊ฐ์ • ๋ณ€ํ™” ์‹œ๊ฐํ™”

๐Ÿ› ๏ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

  • ์„ ํƒ์  ์ˆ˜์ •: ๊ฐœ๋ณ„ ์—”ํŠธ๋ฆฌ์˜ ํ•„๋“œ๋ณ„ ์ˆ˜์ •
  • ์„ ํƒ์  ์‚ญ์ œ: ์›ํ•˜๋Š” ์—”ํŠธ๋ฆฌ๋งŒ ๊ณจ๋ผ์„œ ์‚ญ์ œ
  • ์ผ๊ด„ ์ดˆ๊ธฐํ™”: ๊ธฐ๊ฐ„๋ณ„ ๋˜๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ ๋ฆฌ์…‹
  • ๋ฐฑ์—…/๋‚ด๋ณด๋‚ด๊ธฐ: CSV, JSON ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ถ”์ถœ

๐Ÿš€ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ•

์„ค์น˜

# ์ €์žฅ์†Œ ํด๋ก 
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

๐Ÿ’พ ๋ฐ์ดํ„ฐ ์ €์žฅ

  • ์œ„์น˜: ~/.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"
}

๐ŸŽฏ ์‚ฌ์šฉ ์‚ฌ๋ก€

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฐ์ • ์ถ”์ 

  • ์ฝ”๋“œ๋ฆฌ๋ทฐ, ๋ฐฐํฌ, ๋ฒ„๊ทธ ์ˆ˜์ • ์‹œ ๊ฐ์ • ๋ณ€ํ™” ์ถ”์ 
  • ์ŠคํŠธ๋ ˆ์Šค ์š”์ธ ์‹๋ณ„ ๋ฐ ๊ฐœ์„  ๋ฐฉ์•ˆ ๋ชจ์ƒ‰
  • ์—…๋ฌด ํŒจํ„ด๊ณผ ๊ฐ์ • ์ƒํƒœ์˜ ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„

์ •์‹  ๊ฑด๊ฐ• ๊ด€๋ฆฌ

  • ์ผ์ƒ์˜ ๊ฐ์ • ๋ณ€ํ™” ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋ถ€์ •์  ๊ฐ์ •์˜ ํŠธ๋ฆฌ๊ฑฐ ํŒŒ์•…
  • ๊ธ์ •์  ๊ฒฝํ—˜๊ณผ ์ƒํ™ฉ ์‹๋ณ„

๐Ÿ›ก๏ธ ํ”„๋ผ์ด๋ฒ„์‹œ

  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์šฉ์ž ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค
  • ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ฐฑ์—…๊ณผ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๐Ÿš€ ๋ฐฐํฌ (๊ฐœ๋ฐœ์ž์šฉ)

PyPI ๋ฐฐํฌ ์ž๋™ํ™”

์ด ํ”„๋กœ์ ํŠธ๋Š” GitHub Actions์™€ OIDC๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ ์ž๋™ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  1. ํƒœ๊ทธ ์ƒ์„ฑ์œผ๋กœ ๋ฐฐํฌ:

    # ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ
    git tag v1.0.0
    git push origin v1.0.0
    
  2. OIDC ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ์„ค์ • (์ €์žฅ์†Œ ๊ด€๋ฆฌ์ž):

    • PyPI์—์„œ Trusted Publisher ์„ค์ •
    • Test PyPI์—์„œ Trusted Publisher ์„ค์ •
    • ํ† ํฐ ๊ด€๋ฆฌ ๋ถˆํ•„์š”! ๐ŸŽ‰
  3. 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)
  4. ์ˆ˜๋™ ๋ฐฐํฌ:

    # ๋นŒ๋“œ
    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

๐Ÿšซ Git ํ›… ๊ฐ•์ œ ์‹คํ–‰

  • pre-commit: ์ปค๋ฐ‹ ์‹œ staged ํŒŒ์ผ ํ’ˆ์งˆ ๊ฒ€์‚ฌ
  • pre-push: ํ‘ธ์‹œ ์‹œ ์ „์ฒด ์ฝ”๋“œ๋ฒ ์ด์Šค ํ’ˆ์งˆ ๊ฒ€์‚ฌ
  • ์ž๋™ ์ฐจ๋‹จ: black/isort ๋ฏธ์ ์šฉ ์‹œ ์ปค๋ฐ‹/ํ‘ธ์‹œ ์™„์ „ ์ฐจ๋‹จ
  • ์ž๋™ ์„ค์น˜: ๋„๊ตฌ๊ฐ€ ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ์„ค์น˜

๊ธฐ์—ฌ ํ”„๋กœ์„ธ์Šค

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run quality tools (make push-ready)
  5. Commit your changes (git commit -m 'Add amazing feature')
    • ๐Ÿ›ก๏ธ pre-commit ํ›…์ด ์ž๋™์œผ๋กœ ํ’ˆ์งˆ ๊ฒ€์‚ฌ
  6. Push to the branch (git push origin feature/amazing-feature)
    • ๐Ÿ›ก๏ธ pre-push ํ›…์ด ์ „์ฒด ์ฝ”๋“œ๋ฒ ์ด์Šค ๊ฒ€์‚ฌ
  7. 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 ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐ŸŽ‰ ๊ฐ์‚ฌ์˜ ๋ง

๊ฐœ๋ฐœ์ž๋“ค์˜ ์ •์‹  ๊ฑด๊ฐ•๊ณผ ๊ฐ์ • ์ธ์‹์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์—์„œ ์ถœ๋ฐœํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ์ผ์ƒ์— ์ž‘์€ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๐Ÿ˜Š

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emolog-0.1.0.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emolog-0.1.0-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file emolog-0.1.0.tar.gz.

File metadata

  • Download URL: emolog-0.1.0.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for emolog-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cafdde9e72e41f87b5a7be834eb428ec5d8ab3c730be8b9295a4aa95bbbaad45
MD5 2d00e5c8cb782acc0f37ac351c705cf2
BLAKE2b-256 2ff9db6e1c7c1a5b2f6736b35dc39b331c7e6540b760908c527a9cbc172a40ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for emolog-0.1.0.tar.gz:

Publisher: publish.yml on GyuminJack/emolog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file emolog-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: emolog-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for emolog-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b69d1c9b0b91ce5ce0f962edaf9fd1c289250f92ea2828847cde6d8e53275fec
MD5 ca7e60e9a1474f941b6a475c7d375259
BLAKE2b-256 22edd604d6b55a2647fe4b232c5f6ca0b009a79b84eca3e177eca343274953ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for emolog-0.1.0-py3-none-any.whl:

Publisher: publish.yml on GyuminJack/emolog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page