ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
A Powerful Node.JS CLI Time Tracker โฑ๏ธ๐Ÿš€
Dev.toDev.to
Backend

TypeScript ๊ธฐ๋ฐ˜ JSON ์Šคํ† ๋ฆฌ์ง€ ์„ค๊ณ„๋ฅผ ํ†ตํ•œ CLI ํƒ€์ž„ ํŠธ๋ž˜์ปค ๊ณ ๋„ํ™”

A Powerful Node.JS CLI Time Tracker โฑ๏ธ๐Ÿš€

Cris Mihalache2026๋…„ 4์›” 23์ผ5๋ถ„beginner

Context

๊ธฐ์กด track-time-cli์˜ ์ œํ•œ์ ์ธ ๋ช…๋ น์–ด ์ฒด๊ณ„์™€ ๋‚ฎ์€ ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ•œ๊ณ„ ๋ฐœ์ƒ. ํ”„๋กœ์ ํŠธ ๋ฐ ํด๋ผ์ด์–ธํŠธ ๋‹จ์œ„์˜ ๊ทธ๋ฃนํ™” ๊ด€๋ฆฌ์™€ ์ •๋ฐ€ํ•œ ์‹œ๊ฐ„ ๊ธฐ๋ก ์ œ์–ด ๊ธฐ๋Šฅ์˜ ํ•„์š”์„ฑ ์ฆ๋Œ€.

Technical Solution

  • TypeScript ๋„์ž…์„ ํ†ตํ•œ ์ •์  ํƒ€์ดํ•‘ ๊ธฐ๋ฐ˜์˜ ์•ˆ์ •์ ์ธ CLI ๋ช…๋ น์–ด ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
  • ~/.super-time-tracker/db.json ๊ฒฝ๋กœ์˜ ๋‹จ์ผ JSON ํŒŒ์ผ ๊ธฐ๋ฐ˜ Persistence Layer ์„ค๊ณ„๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ด์‹์„ฑ ๋ฐ Git ๋ฒ„์ „ ๊ด€๋ฆฌ ์ง€์›
  • Natural Language Processing ๊ธฐ๋ฐ˜์˜ ์‹œ๊ฐ„ ์ž…๋ ฅ ํŒŒ์‹ฑ ๋กœ์ง์„ ์ ์šฉํ•˜์—ฌ ์œ ์—ฐํ•œ Start/End Time ์„ค์ • ๊ฐ€๋Šฅ ๊ตฌ์กฐ ์„ค๊ณ„
  • Timesheet-Entry ๊ฐ„์˜ 1:N ๊ด€๊ณ„ ๋ชจ๋ธ๋ง์„ ํ†ตํ•œ ํ”„๋กœ์ ํŠธ๋ณ„ ํƒœ์Šคํฌ ๊ทธ๋ฃนํ™” ๋ฐ ํ•„ํ„ฐ๋ง ์ตœ์ ํ™”
  • Entry ID ๊ธฐ๋ฐ˜์˜ ์ง์ ‘ ์ฐธ์กฐ ๋ฐฉ์‹์„ ์ ์šฉํ•œ ํŠน์ • ๊ธฐ๋ก์˜ ์ˆ˜์ •(Edit) ๋ฐ ๋ณต์ œ(Resume) ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • Human-readable ๋ฐ Relative Time ๋ Œ๋”๋ง ์˜ต์…˜์„ ๋ถ„๋ฆฌํ•œ ์ถœ๋ ฅ ๋ ˆ์ด์–ด ์„ค๊ณ„

- ์†Œ๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ €์žฅ ์‹œ DB ๋„์ž… ๋Œ€์‹  JSON ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ฑ„ํƒํ•˜์—ฌ ๋ฐฑ์—… ๋ฐ ์ด์‹์„ฑ ํ™•๋ณด ๊ฒ€ํ†  - CLI ๋„๊ตฌ ์„ค๊ณ„ ์‹œ Natural Language Input์„ ์ง€์›ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ—ˆ๋“ค์„ ๋‚ฎ์ถ”๋Š” UX ์ „๋žต ์ ์šฉ - ๋ฐ์ดํ„ฐ ์—”ํŠธ๋ฆฌ ๋ณต์ œ(Resume) ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ๋ฐ˜๋ณต ์ž‘์—… ๊ธฐ๋ก์˜ ์ž…๋ ฅ ํšจ์œจ์„ฑ ๊ฐœ์„ 

์›๋ฌธ ์ฝ๊ธฐ