Files
habit-tracker/pyproject.toml
T
shinalokandClaude Sonnet 5 bdf9d0bae7 journal: real markdown editor (EasyMDE) with live preview toggle, fix default template
- Replace the plain textarea with EasyMDE (vendored locally, no CDN) for
  markdown authoring: syntax highlighting, smart list continuation, and a
  custom text-based toolbar (built-in EasyMDE toolbar icons require Font
  Awesome from a CDN, which this app doesn't use). unorderedListStyle is set
  to "-" to match the app's own template convention.
- Add a preview/edit toggle button that swaps the editor for the exact same
  server-rendered markdown (via /journal/preview) shown after saving, instead
  of always showing both.
- Fix create/edit entry routes to verify the submitted category_id actually
  belongs to the current user before inserting -- every other write path in
  this app already checked ownership; this one didn't (found while manually
  testing the new editor with a typo'd category id that happened to belong to
  someone else's category, which surfaced as an IntegrityError 500 instead of
  a clean 404-equivalent).
- Fix the default "일상" category template: bare "-" bullet lines don't parse
  as list items in the markdown renderer (they need a trailing space), and
  the content_template validator was silently stripping that trailing space
  off on every save. Backfill migration updates any category still holding
  the old, broken template text.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 12:24:18 +09:00

35 lines
992 B
TOML

[project]
name = "habit-tracker"
version = "0.1.0"
description = "개인용 습관 관리 PWA"
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.115",
"uvicorn[standard]>=0.32",
"sqlalchemy>=2.0",
"alembic>=1.13",
"pymysql>=1.1",
"pydantic-settings>=2.5",
"jinja2>=3.1",
"python-multipart>=0.0.9",
"itsdangerous>=2.2",
"bcrypt>=4.0",
"apscheduler>=3.10",
"pywebpush>=2.0",
"py-vapid>=1.9",
"authlib>=1.3",
"httpx>=0.27",
"pillow>=10.0", # scripts/generate_icons.py 아이콘 재생성 + 저널 첨부 이미지 썸네일 생성(런타임)
"markdown>=3.7", # 저널 기록 내용을 마크다운으로 렌더링
"bleach>=6.0", # 렌더링된 마크다운 HTML을 허용 태그만 남기고 sanitize (XSS 방지)
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"paramiko>=3.4", # scripts/deploy_sftp.py SFTP 배포용 (런타임 미사용)
]
[tool.setuptools.packages.find]
include = ["app*"]