============================================================================
íë¡ê·žëšëª : ìí ê³í ë° ìê° íë¡ê·žëš (Life Plan Scheduler, LPS)
íë¡ê·žëš í ì€ ìê° : ì€ì¹ ììŽ ì¹ìì ì€ë í ìŒ, ìŒì , ì§ì€ ìê°, ë°ë³µ 룚íŽì ë¹ ë¥Žê² êŽëЬíë ì€ì í ìí ê³í ìë¹ì€
묞ì 목ì : ì€ì 구í ì ì í멎, íëŠ, ë°ìŽí°, ììž ì²ëЬ êž°ì€ì í ë²ì í©ìíêž° ìí êž°í 묞ì
묞ì ë²ì : MVPììë í ìŒ êŽëЬ, ì§ì€ íìŽëšž, ë°ë³µ 룚íŽ, ìí ë©ìì§, localStorage ì ì¥ê¹ì§ë§ í¬íš
ì€ê³ ìì¹ : ì€ì¹ ììŽ ìŠì ì¬ì© ê°ë¥íŽìŒ íë©°, íµì¬ êž°ë¥ì 3ëšê³ ìŽëŽë¡ ëëìŒ íê³ , ì€íšíëëŒë ì± ì 첎ë ì ì§ëìŽìŒ íš
묞ì ë²ì : v0.1-spec 묞ì êž°ì€ìŒ : 2026-08-02 íë¡ì íž ìí : êž°í ìŽì ëšê³
============================================================================
êž°ë¥ ì 늬
- íµì¬ êž°ë¥ :
- ì¹ ì ì ìŠì í ìŒ íìž ë° ì¶ê°
- ë¡ê·žìž ììŽ ë°ë¡ ì€ë í ìŒì ë±ë¡íê³ íìží ì ìì
- ì 목, ì°ì ìì, ë§ê°ìŒì íšê» ì ì¥í ì ìì
- ì€ë ìŒì 곌 ë§ê°ìŒ í í멎 êŽëЬ
- ì€ë íŽìŒ í ìŒê³Œ ë§ê°ìŽ ê°ê¹ìŽ í목ì ë¶ëЬíŽì 볎ì¬ì€
- ì€ìëê° ëì íëª©ìŽ ëšŒì 볎ìŽëë¡ ì ë ¬ ê°ë¥
- ì§ì€ íìŽëšž(Pomodoro) ì€í
- Ʞ볞 25ë¶, íì¥ ì 50/90ë¶ í늬ì ì ì ê³µ
- ìì, ìŒìì ì§, 늬ì ì í í멎ìì ì²ëЬ
- ë°ë³µ ë£šíŽ ë° ìµêŽ ì²Ží¬
- ìŽë, ìœ ë³µì©, ë ìì²ëŒ ë§€ìŒ ë°ë³µëë íëì 첎í¬í ì ìì
- ë ì§ë³ êž°ë¡ê³Œ ì°ì ë¬ì±ìŒì ì ì¥í ì ìì
- ì€ëì ì°ì ìì ìë ì 늬
- ë§ê°ìŒê³Œ ì°ì ìì êž°ì€ìŒë¡ ì€ë ì°ì ìì ì ì 늬
- ì¬ì©ìê° ì 늬 êž°ì€ì ì§ì ìëì§ ììë ëëë¡ ì€ê³
- AI 볎조 êž°ë¥ :
- ê±Žê° ìí/컚ëì
êž°ë° ìŒì ì¬ì¡°ì
- ì멎 ìê°, íŒë¡ë, ìŽë ì¬ë¶, ìœ ë³µì© ì¬ë¶ë¥Œ ë°ìíŽ ì€ë ìŒì ì ë€ì ë°°ì¹
- 묎늬í ìŒì ì ë€ë¡ ë¯žë£šê³ , ìëì§ ìì€ìŽ ë®ì ëë ê°ë²ŒìŽ ì 묎륌 뚌ì ì ì
- ìì± ìŒì ì
ë ¥
- ì¬ì©ìê° ë§í ëŽì©ì ìŒì /í ìŒ í목ìŒë¡ ìë ë³í
- ì: "ëŽìŒ ì€í 3ìì ë³ì ììœ" â ë ì§, ìê°, ì 목ì ë¶ëЬíŽì ì ì¥
- AI ììœ ìëŽ
- ì€ë íŽìŒ í ìŒ, 걎ê°ì 죌ìì , ì§ì€íêž° ì¢ì ìê°ë륌 í ì€ ììœìŒë¡ ì ì
- ì¬ì©ìë ì¶ì²ìì ë³Žê³ ì ì© ì¬ë¶ë¥Œ ì í
- ë¶ê° êž°ë¥ :
- ì€ë í ìŒ ì°ì ìì ì ë ¬
- ëì ì°ì ìì í목ì ìëšì ê³ ì í ì ìì
- 몚ë°ìŒ/PC ë°ìí í멎
- 360pxë¶í° ë°ì€í¬í±ê¹ì§ íëì í멎 ê·ì¹ìŒë¡ ëì
- ë¹ ë¥ž ì¬ì© ìëŽ ë° ëšì¶í€ ëìë§
- ì²ì ë€ìŽìš ì¬ì©ìê° 1ë¶ ìì êž°ë¥ì ìŽíŽíëë¡ ìëŽ
- íêµìŽ ì°ì UI + ììŽ íì¥ ì€ë¹
- ë²íŒê³Œ ìí ë©ìì§ ëªšë ë€êµìŽ íì¥ êµ¬ì¡°ë¥Œ ê³ ë €
- ìµê·Œ ì
ë ¥/ìŠê²šì°Ÿêž° ë£šíŽ ì ì¥
- ì죌 ì°ë 룚íŽì ë¹ ë¥Žê² ë€ì ë±ë¡í ì ìëë¡ ì§ì
- AI êž°ë° ìŒì ì¶ì²
- ê±Žê° ìí, ì§ì€ ê°ë¥ ìê°, ë§ê°ìŒì íšê» ê³ ë €í ì¶ì² ìŒì ì ê³µ
- 곌ë¶íê° ììë멎 ìì ëì ì€ìŽê³ ë¶ì° ë°°ì¹ë¥Œ ì ì
íë¡ì íž ëª©í :
- ì¬ì©ìë 3ë¶ ìì ì€ë ê³íì ì 늬í ì ììŽìŒ íš
- ì ì í ì€ë í ìŒ íìž, ì¶ê°, ìë£ ì íê¹ì§ í íëŠìŒë¡ ëëŽë ê²ì 목íë¡ íš
- ì§ì€ íìŽëšžë 1íŽëŠìŒë¡ ìì ê°ë¥íŽìŒ íš
- ì¬ì©ìê° ìì ë²íŒë§ ë륎멎 ë³ë ì€ì ììŽ ë°ë¡ ì§ì€ ìžì ì ë€ìŽê°ìŒ íš
- ë³µì¡í ì€ì ììŽ ëžëŒì°ì ë§ìŒë¡ ë°ë¡ ì¬ì© ê°ë¥íŽìŒ íš
- ì€ì¹, íìê°ì , ìë² ë¡ê·žìž ììŽ ë°ë¡ ìž ì ììŽìŒ íš
- ë°ë³µ 룚íŽì í룚 10ìŽ ëŽ ì²Ží¬ ê°ë¥íŽìŒ íš
- ì죌 íë ìµêŽì ìµìíì íŽëŠìŒë¡ êž°ë¡ë ì ììŽìŒ íš
- AI ì¶ì²ì ì¬ì©ìì 컚ëì
곌 ì°ì ìì륌 íšê» ë°ìíŽìŒ íš
- ì멎 ë¶ì¡±, íŒë¡ ëì , ìŽë ì¬ë¶ ê°ì ìí륌 ê³ ë €íŽ ìŒì ê°ë륌 ì¡°ì íŽìŒ íš
- ìì± ì
ë ¥ì 1묞ì¥ìŒë¡ ìŒì ì¶ê°ê° ê°ë¥íŽìŒ íš
- ì¬ì©ìê° ë§í ìŒì ìŽ ìëìŒë¡ ë ì§, ìê°, ì 목 ííë¡ ì 늬ëìŽìŒ íš
ì ë 목í (MVP êž°ì€) :
- 첫 í멎 ë¡ë© 목í: 3ìŽ ìŽëŽ
- í ìŒ ì¶ê° ë°ì 목í: 1ìŽ ìŽëŽ
- íìŽëšž ìì ë°ì 목í: 1ìŽ ìŽëŽ
- íìŽëšž ì¢ ë£ ì늌 ë°ì 목í: 1ìŽ ìŽëŽ
- 몚ë°ìŒ í멎 ëì í: 360px ìŽì
- Ʞ볞 ìì ìë£ íŽëŠ ì: 3í ìŽí
- localStorage ì ì¥ ì€íš ììë í멎 ì ì§ìš: 100%
- ìì± ì ë ¥ í ìŽì ìì± ëª©í: 2ìŽ ìŽëŽ
- AI ìŒì ì¶ì² ìëµ ëª©í: 3ìŽ ìŽëŽ
============================================================================
ì¬ì©ì í륎ìë
-
A. íì
- ê³µë¶ ê³íì ì죌 ìžì°ì§ë§ ì íížë¬ì§
- 목í: ì€ë ê³µë¶í ê²ê³Œ ì§ì€ ìê°ì ë¹ ë¥Žê² êŽëЬ
-
B. ì§ì¥ìž
- íì, ë§ê°, ê°ìž ì ë¬Žê° ìì¬ ìì
- 목í: ì€ë íŽìŒ í ìŒì ì°ì ììëë¡ ì 늬
-
C. ìí ë£šíŽ êŽëЬ ì¬ì©ì
- ìŽë, ìœ ë³µì©, ë ì ê°ì ë°ë³µ ìµêŽì ì±êž°ê³ ì¶ì
- 목í: ë§€ìŒ ë°ë³µëë ìŒì ìì§ ìê³ ì²Ží¬
-
D. ê±Žê° ìí êž°ë° ìŒì ì¡°ì ì¬ì©ì
- ì멎, íŒë¡, ìŽëë, ë³µìœ ìíì ë°ëŒ í룚 ìŒì ì ì¡°ì íê³ ì¶ì
- 목í: ëŽ ì»šëì ì ë§ë ìŒì ê°ëì ìì륌 ì¶ì²ë°êž°
êž°ë íšê³Œ : ì¬ì©ìë ê³íì ë°ë¡ ì 늬í íì ììŽ í í멎ìì ì€ëì ìŒì 곌 í ìŒì íìží ì ìê³ , ì§ì€ ìê° êŽëЬê¹ì§ ìŽìŽì ìíí ì ìë€. ëí AIê° ê±Žê° ìíì ìŒì ë°ë륌 íšê» ê³ ë €íŽ ë¬ŽëŠ¬í ê³íì ì€ì¬ ì£Œê³ , ìì±ìŒë¡ ë§í ëŽì©ë ë°ë¡ êž°ë¡í ì ìë€.
íµì¬ ì¬ì© íëŠ :
- ì€ë í ìŒì ë¹ ë¥Žê² ì ë ¥íë€.
- ì€ìí í목ì ìë¡ ì¬ëаë€.
- ì§ì€ íìŽëšžë¥Œ ììíŽ ìì ìê°ì êž°ë¡íë€.
- ë°ë³µ 룚íŽì 첎í¬íŽ ìµêŽ ë¬ì± ì¬ë¶ë¥Œ ëšêžŽë€.
- ì€ë ììœì ë³Žê³ ëšì ìì 곌 ìë£ í목ì íìžíë€.
============================================================================
ê³êž°
Ʞ졎 ìŒì ì±ì ë묎 ë²ì©ì ìŽê±°ë ë³µì¡íŽì, âì€ë ëë¶í° íŽìŒ íëì§â륌 ë°ë¡ 볎ì¬ì£Œêž° ìŽë €ìŽ ê²œì°ê° ë§ì. ë°ëŒì í ìŒ, ìŒì , ì§ì€ íìŽëšž, ë°ë³µ 룚íŽë§ 몚ì ëšìíê³ ë¹ ë¥ž ìíì© ê³í ë구륌 ë§ë€ê² ëš.
============================================================================
íµì¬ í멎
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 1. í/ì€ë í멎 (Main Dashboard) - ë ìŽìì ììœ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â ë°ì€í¬í±: [ì¢ìž¡ ì ìŽ 35%] | [ì°ìž¡ ë©ìž 65%] â
â 몚ë°ìŒ: [ìëš ì ìŽ 50%] + [íëš ë©ìž 50%] â
â ì íì : ë·°í¬íž †768px ì 몚ë°ìŒ ë ìŽìì ì ì© â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
1-A. ì ìŽ íšë ììž (Control Panel) - 5ê° ì¹ì
구ì±
ì¹ì
A: ì€ë ììœ
ââ ìí íì: "í ìŒ 4ê°" | "ì§ì€ 2í" | "ë§ê° 1ê°"
ââ ë²íŒ: [ì€ë ì 늬]
ââ ì€í: 칎ëí, 100% í, 48px ìµì ëìŽ
ì¹ì
B: í ìŒ ì¶ê°
ââ ì
ë ¥íë: íë ìŽì€íë "ì: ììŽ ëšìŽ 20ê° ìžì°êž°"
ââ ë²íŒ: [ì¶ê°] | [ë¹ ë¥ž ì¶ê°]
ââ ìµì
: ì°ì ìì(ëì/볎íµ/ë®ì), ë§ê°ìŒ ì í
ââ ì€í: ì
ë ¥ì°œ 40px, ì¶ê° ë²íŒ #2196F3
ì¹ì
C: ì§ì€ íìŽëšž
ââ íì: 25:00 Ʞ볞 í¬ëªšëë¡
ââ ë²íŒ: [ìì] | [ìŒìì ì§] | [늬ì
]
ââ ìµì
: 25/50/90ë¶ í늬ì
ââ ì€í: íì± ìì #FF9800, 44px ìŽì
ì¹ì
D: ë°ë³µ 룚íŽ
ââ ë²íŒ 3ê°
â ââ [ìŽë 첎í¬] (#4CAF50)
â ââ [ìœ ë³µì©] (#9C27B0)
â ââ [ë
ì 첎í¬] (#FF5722)
ââ 결곌: ì²Ží¬ ì ë ì§ êž°ë¡ ë° ì°ì ë¬ì± íì
ì¹ì
E: ìí ë©ìì§
ââ ëìŽ: ê³ ì 60px
ââ ìí:
â ââ ì²ëЬ ì€: "ì ì¥ ì€ì
ëë€..."
â ââ ì±ê³µ: "í ìŒìŽ ì¶ê°ëììµëë€."
â ââ ìë¬: "ì
ë ¥ê°ì íìžíŽ ì£Œìžì."
ââ í°íž: 13px, ìì #333
1-B. ë©ìž ìì (Main Area)
* êµ¬ì± ìì:
- ì€ë í ìŒ ëª©ë¡
- ë§ê° ìë° í목
- ì€ë ìë£í í목
- ì§ì€ ìžì
êž°ë¡
* ì ë ¬:
- ë§ê°ìŒ ë¹ ë¥ž ì
- ì°ì ìì ëì ì
* ìížìì©:
- í목 íŽëŠ ì ìë£/믞ìë£ í êž
- ëëê·žë¡ ìì ë³ê²œ ê°ë¥
- í목 íŒì¹š ì ë©ëªš íì
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 2. 결곌/êž°ë¡ ìì (Activity Panel) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â íì±í: í ìŒ ì¶ê°, íìŽëšž ì¢
ë£, ë£šíŽ ì²Ží¬ ì ì
ë°ìŽíž â
â ìŽêž°: "ì€ëì êž°ë¡ìŽ ìì§ ììµëë€." â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
구조:
ââ í€ë: "ì€ëì êž°ë¡ (6ê°)"
ââ 컬ëŒ: [ìë² | í목 | ìê° | ìí]
ââ ì ë ¬: ìµì ì / ìë£ ì ì í ê°ë¥
ââ ììŽí
ëìŽ: 44px
ââ ìµë íì: 10ê°, ì€í¬ë¡€ íì±í
ìì 결곌:
1. ììŽ ëšìŽ 20ê° | 09:10 | ìë£
2. íì ìë£ íìž | 10:30 | ì§í ì€
3. ìŽë ì²Ží¬ | 18:00 | ìë£
4. ë
ì 30ë¶ | 22:10 | ìë£
ìížìì©:
ââ ììŽí
íŽëŠ â ììž ë©ëªš/ìì íšë íì
- ìí íì ì²Žê³ (State & Message System)
| ìí | ììŽìœ | 배겜ì | ìì ë©ìì§ |
|---|---|---|---|
| ì²ëЬ ì€ | â³ | #FFF3E0 | ì ì¥ ì€ì ëë€... |
| ì±ê³µ | â | #E8F5E9 | íëª©ìŽ ì ì¥ëììµëë€. |
| ê²œê³ | #FFF9C4 | ì ë ¥ìŽ ë¹ìŽ ììµëë€. | |
| ìë¬ | â | #FFEBEE | ìì²ìŽ ì€íšíìµëë€. ë€ì ìëíŽ ì£Œìžì. |
| AI ë¶ì ì€ | ð€ | #E3F2FD | 컚ëì 곌 ìŒì ì ë¶ìíê³ ììµëë€. |
| ìì± ìžì ì€ | ðïž | #E8EAF6 | ë§ìíì ìŒì ì ì 늬íê³ ììµëë€. |
- ë°ìí ë ìŽìì (Responsive Breakpoints)
| ë·°í¬íž | 조걎 | ë ìŽìì êµ¬ì± |
|---|---|---|
| ë°ì€í¬í± | ⥠769px | ì¢ìž¡ 35% (ì ìŽ) / ì°ìž¡ 65% (ë©ìž) |
| íëžëŠ¿ | 481~768px | ì¢ìž¡ 40% (ì ìŽ) / ì°ìž¡ 60% (ë©ìž) |
| 몚ë°ìŒ | †480px | ìëš 50% (ì ìŽ) + íëš 50% (ë©ìž) |
ë²íŒ ëë¹: ââ ë°ì€í¬í±/íëžëŠ¿: 100% ââ 몚ë°ìŒ: 100% ëë 3ë±ë¶ ë²íŒ ìì
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 5. ëììž ìì¹ ë° ì€í (Design Guidelines) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
5-1. ìì íë íž (Color Palette)
ââ Ʞ볞 배겜: #FFFFFF (ë©ìž) / #F5F5F5 (볎조)
ââ í
ì€íž: #333333 (볞묞) / #666666 (볎조)
ââ êž°ë¥ë³ ê°ì¡°:
â ââ í ìŒ ì¶ê°: #2196F3
â ââ ì§ì€ íìŽëšž: #FF9800
â ââ ìë£ ìí: #4CAF50
â ââ ë°ë³µ 룚íŽ: #9C27B0
â ââ 죌ì/ë§ê°: #F44336
ââ ë¹íì±í: #CCCCCC 배겜, #999999 í
ì€íž
5-2. íìŽí¬ê·žëíŒ (Typography)
ââ í°ížêµ°: sans-serif (Noto Sans ê¶ì¥)
ââ ì¬ìŽìŠ: 볞묞 14px, ì 목 16px, í€ë 18px
ââ ëŒìžëìŽ: 1.5
5-3. ì ê·Œì± (Accessibility)
ââ 몚ë ë²íŒì aria-label ì¶ê°
ââ ìì + ììŽìœ/í
ì€íž ë³í
ââ ëª
ë ëë¹: WCAG AA 4.5:1 ìŽì
ââ í¬ì»€ì€ ìžëìŒìŽí°: íëì í
ë늬 2px
5-4. ìížìì© ìì¹ (Interaction)
ââ íµì¬ íëŠ: 3í ìŽì íŽëŠ ë°©ì§
ââ ë²íŒ 묞구: ëì¬ + ììŽìœ ì¡°í©
ââ ë¡ë©: ì€íŒë + ë©ìì§ íì
ââ ì€ë¥: ì¬ìë ë²íŒ + ìë¬ ìœë íì
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
============================================================================
êž°ë¥ ëª ìž (MVP)
FR-01. ì€ë í멎 ë¡ë
- ì ë ¥: íìŽì§ ì ì
- ì²ëЬ: ì€ë í ìŒ, íìŽëšž, ìµê·Œ ë£šíŽ ììœ íì
- ì¶ë ¥: ë©ìž ëì볎ë ë ëë§
- ì€íš ì²ëЬ: ë¡ì»¬ ë°ìŽí° ë¡ë ì€íš ì ë¹ ìí ìëŽ íì
FR-02. í ìŒ ì¶ê°
- ì ë ¥: ì 목, ì°ì ìì, ë§ê°ìŒ
- ì²ëЬ: 목ë¡ì ì í목 ì¶ê°
- ì¶ë ¥: í ìŒ ì¹Žë íì
- ì€íš ì²ëЬ: ë¹ ê°/곌ëí êžžìŽ ì ë ¥ ì ìëŽ ë©ìì§ íì
FR-03. í ìŒ ìë£ ì²ëЬ
- ì ë ¥: í목 íŽëŠ ëë ì²Ží¬ ë²íŒ íŽëŠ
- ì²ëЬ: ìë£ ìí í êž ë° êž°ë¡ ì ì¥
- ì¶ë ¥: ìë£ ëª©ë¡ ë°ì
- ì€íš ì²ëЬ: ì ì¥ ì€íš ì ì¬ìë ìëŽ
FR-04. ì§ì€ íìŽëšž ì€í
- ì ë ¥: ìì ë²íŒ íŽëŠ
- ì²ëЬ: 칎ìŽížë€ìŽ ìì, ì¢ ë£ ì ì늌
- ì¶ë ¥: ëšì ìê° íì ë° ìžì êž°ë¡
- ì€íš ì²ëЬ: ìŒìì ì§/복구 ë¶ê° ì ìí ë©ìì§ íì
FR-05. ë°ë³µ ë£šíŽ ì²Ží¬
- ì ë ¥: ìŽë/ìœ ë³µì©/ë ì ì²Ží¬ ë²íŒ
- ì²ëЬ: ë ì§ë³ ë¬ì± êž°ë¡ ì ì¥
- ì¶ë ¥: ì°ì ë¬ì±ìŒ íì
- ì€íš ì²ëЬ: ì ì¥ ì€íš ì ìë¬ ë©ìì§ ì¶ë ¥
FR-06. ì€ë ììœ ìë ê³ì°
- ì ë ¥: íì¬ í ìŒ/ìë£/íìŽëšž êž°ë¡
- ì²ëЬ: íµê³ ê³ì°
- ì¶ë ¥: ì€ë ììœ ì¹Žë ë°ì
- ì€íš ì²ëЬ: ë°ìŽí° ë¶ìŒì¹ ì êž°ë³žê° íì
FR-07. AI ìŒì ì¶ì²
- ì ë ¥: í ìŒ ëª©ë¡, ê±Žê° ìí, 컚ëì , ë§ê°ìŒ, ì§ì€ ê°ë¥ ìê°
- ì²ëЬ: ì°ì ììì ë¶í륌 ë¶ìíŽ ì€ë ìŒì ì ì¬ë°°ì¹
- ì¶ë ¥: ì¶ì² ìŒì , ì¡°ì ì¬ì , 죌ì í¬ìžíž íì
- ì€íš ì²ëЬ: AI ë¶ì ì€íš ì Ʞ졎 ì°ì ìì ì ë ¬ë¡ ë첎
FR-08. ìì± ìŒì ì ë ¥
- ì ë ¥: ì¬ì©ìê° ë§í ìŒì 묞ì¥
- ì²ëЬ: ìì± ìžì í ë ì§, ìê°, ì 목ì ì¶ì¶íŽ ìŽì ìì±
- ì¶ë ¥: í ìŒ ëë ìŒì ìŽì 칎ë íì
- ì€íš ì²ëЬ: ìì± ìžì ì€íš ì ìë ì ë ¥ì°œìŒë¡ ì í
============================================================================
ë¹êž°ë¥ ì구ì¬í
NFR-01. ì±ë¥
- 첫 í멎ì 3ìŽ ìŽëŽ ë¡ëëìŽìŒ íš
- í ìŒ ì¶ê°ë 1ìŽ ìŽëŽ ë°ìíŽìŒ íš
- ì€ë³µ íŽëŠ ì ì€ë³µ ì ì¥ìŽ ë°ìíì§ ìììŒ íš
- ê²ì/ì ì¥ ì€ìë ë²íŒì ë¹íì±ííŽ ì€ë³µ ìì²ì ì°šëšíŽìŒ íš
- íìŽëšžë ëžëŒì°ì í ì í ìŽíìë ìíê° í¬ê² ìŽêžëì§ ìììŒ íš
NFR-02. ì¬ì©ì±
- 몚ë°ìŒ 1ìŽ, ë°ì€í¬í± 2ìŽ ë ìŽìì ìë ì í
- Enter í€ë¡ í ìŒ ì¶ê° ê°ë¥
- ì§ì€ íìŽëšžë 1íŽëŠ ìì ê°ë¥
- 몚ë 죌ì êž°ë¥ì ë²íŒ ë¬žêµ¬ë§ ë³Žê³ ë ìí ì ì ì ììŽìŒ íš
- ì²ì 볎ë ì¬ì©ìë ëìë§ ììŽ ì£Œì êž°ë¥ì ì°Ÿì ì ììŽìŒ íš
NFR-03. ì ê·Œì±
- ë²íŒ/ì ë ¥ ììì ëª íí ëŒë²š ì ê³µ
- ìí ë©ìì§ ìììŒë¡ íì¬ ì²ëЬ ìí íì
- ììë§ìŒë¡ ìë£ ìí륌 ì ë¬íì§ ìì
- í€ë³Žëë§ìŒë¡ ì ë ¥, ì¶ê°, 첎í¬, íìŽëšž ì ìŽê° ê°ë¥íŽìŒ íš
- í¬ì»€ì€ ìíê° ëª íí 볎ì¬ìŒ íš
NFR-04. ì 뢰ì±
- ë¡ì»¬ ì ì¥ ì€íš ì ì± ì ì²Žê° ë©ì¶ì§ ìììŒ íš
- ê° êž°ë¥ì ë 늜ì ìŒë¡ ì€íš/복구 ê°ë¥íŽìŒ íš
- ìžë¶ ì ì¥ìê° ìëëŒë ìµì êž°ë¥ì ê³ì ëìíŽìŒ íš
- ì€ë¥ ë©ìì§ë ììžê³Œ ë€ì íëì íšê» ì ìíŽìŒ íš
NFR-05. AI 볎조 íì§
- AI ì¶ì²ì ì¬ì©ì 컚ëì 곌 ìŒì ì°ì ìì륌 íšê» ë°ìíŽìŒ íš
- AIê° ì ìí ìŒì ì ë°ëì ì¬ì©ìê° ì ì© ì¬ë¶ë¥Œ ì íí ì ììŽìŒ íš
- ìì± ì ë ¥ì ìžì ì€íš ì ìë ì ë ¥ìŒë¡ ìŠì ì í ê°ë¥íŽìŒ íš
- AI êž°ë¥ìŽ ì€íšíŽë Ʞ볞 ìŒì êŽëЬ êž°ë¥ì ìí¥ì ë°ì§ ìììŒ íš
============================================================================
êž°ì ì€ê³
- íë¡ ížìë
- HTML + CSS + JavaScript
- ëšìŒ íìŽì§ êž°ë° êµ¬ì¡°
- ìí êŽëЬ: ë¡ì»¬ ê°ì²Ž + localStorage
- 컎í¬ëíž ë¶ëЬ êž°ì€: ì ë ¥ ìì, ëª©ë¡ ìì, ìí ìì, íìŽëšž ìì
ìí êŽëЬ ì ëµ
- í멎 ìíì ì ì¥ ìí륌 ë¶ëЬíŽì êŽëЬ
- ì ì¥ ì±ê³µ/ì€íš ì¬ë¶ë¥Œ ë³ë ë©ìì§ë¡ íì
- í ìë¡ê³ 칚 íìë ì€ë ë°ìŽí°ê° ë³µìëëë¡ ì€ê³
- ìžë¶ ì졎ì±
- MVP: ìžë¶ API 믞ì¬ì© ê°ë¥
- ì°šêž°: ìºëаë ì°ë Google Calendar / ICS ê²í
- í¥í: ì늌 ê¶í êž°ë° ëžëŒì°ì Notification ì°ë
- ì¥êž°ì ìŒë¡ë ìë² ëêž°íì ë©í°ëë°ìŽì€ ì°ëì ê²í
- ë°ìŽí° ì ì¥
- MVP: localStorage
- ì°šêž°: ìµê·Œ ì ë ¥, ë°ë³µ 룚íŽ, ì¬ì©ì ì€ì ì ì¥
- í¥í: ê³ì ì°ë ì ìë² DB ëì ê²í
- ì ì¥ ëšìë í ìŒ, ì§ì€ ìžì , 룚íŽ, í겜ì€ì ìŒë¡ ëë
- AI/ìì± ì²ëЬ
- ìì± ì ë ¥ì ëžëŒì°ì ìì± ìžì API ëë ìžë¶ STT ì°ëì ê²í
- AI ìŒì ì¡°ì ì ì¶ì² ê²°ê³Œë§ ì ê³µíê³ ìµì¢ ë°ìì ì¬ì©ì íìžì 거칚
- ê±Žê° ìí ë°ìŽí°ë ìµì ì ë ¥ ìì¹ì ì ì©íŽ ë¯Œê° ì 볎륌 곌ëíê² ìì§íì§ ìì
- AI ììž ì€ê³
5-1. AI ì ë ¥ ì íž
- í ìŒ ë°ìŽí°: ì 목, ë§ê°ìŒ, ìì ìì ìê°, ì°ì ìì, ìë£ ì¬ë¶
- ìºëаë ë°ìŽí°: ìŒì ìê°, ìŽë ìê°, 겹칚 ì¬ë¶, ë°ë³µ ìŒì ì¬ë¶
- 컚ëì ë°ìŽí°: ì멎 ìê°, íŒë¡ë, ìŽë ì¬ë¶, ë³µìœ ì¬ë¶, ì§ì€ ê°ë¥ ìê°
- ì¬ì©ì íë ë°ìŽí°: ì죌 믞룚ë ìê°ë, ì죌 ìë£íë ìê°ë, ë°ë³µ ì·šì íšíŽ
- í겜 ë°ìŽí°: íì¬ ìê°, ììŒ, íŽì ê°ê²©, ì¥ìê° ì§ì€ ê°ë¥ ì¬ë¶
5-2. AI íëš ê·ì¹
- íë ì ìœ: ìŽë¯ž ì¡í ìŒì , ìœì ìê°, ë§ê° ìê°ì ì°ì 볎졎
- ìííž ì ìœ: ì¶ì² ìì, ì§ì€ ìê°, íŽì ë°°ì¹ë AIê° ì¡°ì ê°ë¥
- ê±Žê° ì°ì ê·ì¹: íŒë¡ëê° ëê±°ë ìë©ŽìŽ ë¶ì¡±í멎 ê³ ë¶í ìì ì ë€ë¡ ìŽë
- ìê°ë ê·ì¹: ì¬ì©ìê° ì§ì€ìŽ ì ëë ìê°ëìë ê¹ì ìì ì ì°ì ë°°ì¹
- ë¶ì° ê·ì¹: ê°ì ì¢ ë¥ì ê³ ëë ìì ìŽ ì°ììŒë¡ ëª°ëŠ¬ì§ ìëë¡ ë¶ì°
5-3. AI ì¶ë ¥ íì
- ì€ë ì¶ì² ìì: 1ë²ë¶í° Në²ê¹ì§ ì€í ìì ì ê³µ
- ì¬ë°°ì¹ ì¬ì : ì ìŽ ììê° ëìëì§ ì§§ê² ì€ëª
- 죌ì 묞구: ê±Žê° ìíë ìê° ë¶ì¡±ì ë°ë¥ž ê²œê³ ìëŽ
- ëìì: ë ê°ë³ê² ì²ëЬíë íë B ì ì
- ì¬ì©ì ì¡ì : [ì ì©], [ìì ], [묎ì]ì²ëŒ ì í ë²íŒ ì ê³µ
5-4. AI ì 뢰ëì ìì ì¥ì¹
- ì 뢰ë ëì: ë°ë¡ ì ì© ê°ë¥í ì¶ì²ìŒë¡ íì
- ì 뢰ë 볎íµ: ì¶ì² + ì€ëª ì íšê» íìíê³ ì ì©ì ì ííìŒë¡ ì²ëЬ
- ì 뢰ë ë®ì: ì¶ì² ëì ì°žê³ ì© ìëŽë§ ì ê³µ
- ë¶íì€í ì ë³Žê° ììŒë©Ž AIê° ëšì íì§ ìê³ "ì¶ê° íìž íì"ë¡ íì
- ë¯Œê° ì ë³Žê° ë¶ì¡±í멎 ê±Žê° ìí륌 곌ëíê² ì¶ì íì§ ìì
5-5. ìì± ì ë ¥ ì²ëЬ íëŠ
- 1ëšê³: ì¬ì©ìê° "ëŽìŒ 3ìì ë³ì ììœ"ì²ëŒ ìì°ìŽë¡ ë§íš
- 2ëšê³: ìì± ìžì 결곌륌 í ì€ížë¡ ë³í
- 3ëšê³: ë ì§, ìê°, ì¥ì, ì 목, ë©ëªš í볎륌 ë¶ëЬ
- 4ëšê³: ë¬žì¥ ëŽ ìê° ííìŽ ì ë§€í멎 í볎륌 ì¬ë¬ ê° ë³Žì¬ì€
- 5ëšê³: ì¬ì©ìê° ìŽì íìž í ì ì¥ ì¬ë¶ë¥Œ ì í
5-6. ìì± ì ë ¥ ììž ì²ëЬ
- ìžì ì€íš: ìë ì ë ¥ì°œìŒë¡ ìŠì ì í
- ìê° íì± ì€íš: "ì€í 3ì" ê°ì í볎륌 ë€ì ì ííê² íš
- ì¥ì íì± ì€íš: ì ëª©ë§ ì ì¥íê³ ìžë¶ ì 볎ë ëì€ì 볎ì ê°ë¥íê² íš
- ì¡ììŽ ë§ì í겜: ì§§ì íìž ì§ë¬žìŒë¡ ì¬ì ë ¥ ì ë
5-7. ì¶ì² ìì
- ì멎 5ìê° ìŽí + íŒë¡ë ëì: ê°ë²ŒìŽ ì 늬 ìì 곌 ì§§ì ì 묎륌 ìì ë°°ì¹
- ì€í ì§ì€ ê°ë¥ ìê° ì¡Žì¬: ìŽë €ìŽ ì 묎륌 íŽë¹ 구ê°ì ë°°ì¹
- ë§ê°ìŽ ìë°í ì 묎 졎ì¬: ìŒì ì¶©ëë³Žë€ ë§ê° ì°ì ìŒë¡ ì¡°ì
- ìŽë ìë£ ìí: íì ì§ì€ ì 묎 ì ì ì§§ì íŽì ìœì
5-8. ì¬ì©ì ì ìŽê¶
- AIê° ë°êŸŒ ìŒì ì íì ì¬ì©ìê° ëë늎 ì ììŽìŒ íš
- ì¶ì²ì í ë² ì ì©íŽë ìë ììì ë¹êµí ì ììŽìŒ íš
- ìë ìì ìŽ ë§ìì ë€ì§ ììŒë©Ž AI êž°ë¥ì ëê³ ìŒë° ìŒì 몚ëë¡ ì¬ì© ê°ë¥íŽìŒ íš
============================================================================
볎ì
- ì ë ¥ ê²ìŠ
- í ìŒ ì 목 êžžìŽ ì í 1~80ì
- ë¹ì ì 공백/ì ìŽ ë¬žì ì ê±°
- ë°ë³µ ë£šíŽ ìŽëŠì íì© ëª©ë¡ êž°ë° êŽëЬ ê°ë¥
- ë¹ìŽ ìë ì ë ¥ì ì ì¥ ì ì ìŠì ì°šëš
- ë묎 ꞎ ë©ëªšë ë³ë ê²œê³ ë¡ ìëŽ
- ìì² ì ìŽ
- ì ì¥ ë²íŒ ì°ì íŽëŠ ì ì€ë³µ ìì² ë°©ì§
- íìŽëšž ìì/ì ì§ë ìí ì ìŽ êž°ë° ì ìŽ
- ëìŒí ìì ì ì²ëЬ ì€ìŒ ë ì¬ì€ííì§ ìì
- ì€íš í ì¬ìëë ì¬ì©ìê° ëª ìì ìŒë¡ ë륎ëë¡ íš
- ê°ìžì 볎 볎íž
- ìŒì /ë©ëªšë Ʞ볞ì ìŒë¡ ëžëŒì°ì ë¡ì»¬ ì ì¥ë§ ì¬ì©
- ìë² ì ì¥ ììë ì¬ì©ì ëì íì
- ë¯Œê° ë©ëªšë ë³ë ìíží ê²í
- ìì¹ë ê°ìž ìŒì ì ìžë¶ë¡ ìë ì ì¡íì§ ìì
- ê±Žê° ìí ì ë ¥ì íì íëª©ë§ ë°ëë¡ ì€ê³íê³ , ë¯Œê° ì 볎ë ì íì ìŒë¡ ì ë ¥íê² íš
- ìŽì íì¥ ì íì í목
- API ëì ì íë¡ì ìë² êµ¬ì±
- ë¡ì»¬/ìë² ì ì¥ ë¶ëЬ
- ê°ì¬ ë¡ê·ž ë° ì¥ì ì¶ì ì¶ê°
- í€ê°ì íŽëŒìŽìžížì ë žì¶íì§ ìë 구조륌 ì°ì ê²í
============================================================================
ì¬ì©ì ìì ìë늬ì€
- íë¡ê·žëš ì ì
- ì€ë íŽìŒ í ìŒ íìž
- ì í ìŒ ì ë ¥ í ì¶ê°
- ì§ì€ íìŽëšž ìì
- íìŽëšž ì¢ ë£ í ìë£ ì²ëЬ
- ë°ë³µ ë£šíŽ ì²Ží¬
- ì€ë ììœ íìž í ì¢ ë£
- ìì±ìŒë¡ "ëŽìŒ ì€ì 9ìì íì"륌 ë§íŽ ìŒì ìŒë¡ ì ì¥
- AI ì¶ì² ìŒì ìŽ ì»šëì ì ë§ëì§ íìžíê³ ì ì© ì¬ë¶ ì í
ì±ê³µ ìëëŠ¬ì€ ìë£ êž°ì€
- í ìŒ ì¶ê° ì±ê³µ
- ì§ì€ íìŽëšž 1í ìŽì ì€í ì±ê³µ
- ë°ë³µ ë£šíŽ ì²Ží¬ ì±ê³µ
- ì€ë ììœìŽ ì ì ê°±ì ëš
============================================================================
íì¬ íë¡í íì 구í ìí (2026-08-02)
- 묞ìí ìí
- íë¡ì íž ë¹ì , êž°ë¥ ë²ì, ìëëŠ¬ì€ ì ì íì
- MVP ì구ì¬í ë° íì¥ ê³í ìŽì ìí
- 구í ìí
- íì¬ ì ì¥ì êž°ì€ ìœë íìŒì 믞í¬íš ìí
- ë€ì ëšê³ìì í멎/êž°ë¥ ìœë êµ¬ì± íì
- ìŠì ì°©ì ì°ì ìì
- P1: ì€ë í멎 + í ìŒ ì¶ê° + localStorage ì ì¥
- P2: ì§ì€ íìŽëšž + ìë£ ì²ëЬ
- P3: ë°ë³µ ë£šíŽ + 몚ë°ìŒ UX ê°ì
============================================================================
ê°ë° ìŒì (ì ì)
1죌찚
- Ʞ볞 í멎 ëŒë 구ì±
- ì€ë ììœ ë° í ìŒ ì¶ê° êž°ë¥
2죌찚
- ì§ì€ íìŽëšž 구í
- ìë£ ì²ëЬ ë° ëª©ë¡ ì ë ¬
3죌찚
- ë°ë³µ ë£šíŽ ì²Ží¬ ë° localStorage ì ì¥
- ìí ë©ìì§ ê°ì
4죌찚
- ë°ìí UI íì§ ê°ì
- ì¬ì©ì í ì€íž ë° ë²ê·ž ìì
============================================================================
í ì€íž 첎í¬ëЬì€íž
êž°ë¥ í ì€íž
- ë¹ í ìŒ ì ë ¥ ì ìëŽê° ì ííê°?
- í ìŒ ì¶ê° í ìë¡ê³ 칚íŽë ì ì§ëëê°?
- íìŽëšž ìì/ìŒìì ì§/늬ì ìŽ ì ì ëìíëê°?
- ë°ë³µ ë£šíŽ ì²Ží¬ê° ë ì§ë³ë¡ ì ì¥ëëê°?
- ìë£ ì²ëЬì 믞ìë£ ë³µêµ¬ê° ì ì ëìíëê°?
- ë§ê°ìŒìŽ ê°ì í목ëŒëЬ ì°ì ìì ì ë ¬ìŽ ì ì§ëëê°?
ížíì± í ì€íž
- Chrome, Edge ìµì ë²ì ìì ëìíëê°?
- 몚ë°ìŒ íŽìë(360px~430px)ìì ë²íŒ ì¬ì©ì±ìŽ ì ì§ëëê°?
- í€ë³Žëë§ìŒë¡ë 죌ì êž°ë¥ì ì¬ì©í ì ìëê°?
ìì ì± í ì€íž
- localStorage ì€ë¥ ì ì±ìŽ ë©ì¶ì§ ìëê°?
- ë°ë³µ íŽëŠ ì ì€ë³µ ì ì¥ìŽ ê³Œëíê² ë°ìíì§ ìëê°?
- ëžëŒì°ì ìë¡ê³ 칚 í ìí ë³µìì 묞ì ê° ìëê°?
============================================================================
ì€í ë°©ë² (ìœë ì¶ê° ìŽí êž°ì€)
- íë¡ì íž ë£šížìì ë¡ì»¬ ìë² ì€í
Python: python -m http.server 5500
Node.js: npx serve .
- ëžëŒì°ì ìì http://localhost:5500 ì ì
============================================================================
íë¡ì íž íìŒ êµ¬ì± (목í)
- README.md : íë¡ì íž ì€ëª 묞ì
- index.html : í멎 구조
- style.css : ì€íìŒ ë° ë°ìí ë ìŽìì
- app.js : í ìŒ/íìŽëšž/ë£šíŽ ë¡ì§
============================================================================
ë€ì ë²ì 목í (v0.2)
- ìµê·Œ í ìŒ ìëìì±
- ë°ë³µ ë£šíŽ í í늿 ì ì¥
- ìºëаë ë·° ì¶ê°
- ì늌 êž°ë¥ ì¶ê°
- íêµìŽ/ììŽ UI ì í
- AI ìŒì ì¶ì² ë° ìì± ì ë ¥ ì ì ì§ì
ì¥êž° 목í (v1.0)
- ì¬ì©ì ê³ì ë° íŽëŒì°ë ëêž°í
- ìºëаë/í ìŒ/ë©ëªš íµí©
- ê°ìží ì¶ì² ë£šíŽ ë° ì§ì€ íšíŽ ë¶ì
============================================================================
ììž ëª ìž ë¶ë¡ A. í멎 ëšì ì구ì¬í
A-1. ë©ìž í멎 (Dashboard)
- 목ì : ì¬ì©ìê° 1ê° í멎ìì íµì¬ ëìì ëëŒ ì ìëë¡ ì ê³µ
- íì 컎í¬ëíž
- í ìŒ ì ë ¥ì°œ
- ì€ë ììœ ì¹Žë
- ì§ì€ íìŽëšž
- ë°ë³µ ë£šíŽ ë²íŒ
- ìí ë©ìì§ ìì
- ì€ë êž°ë¡ ìì
- UI ê·ì¹
- ë²íŒ ìµì í°ì¹ ìì: 44x44px ìŽì
- 볞묞 Ʞ볞 í°íž í¬êž°: 14px ìŽì
- 죌ì ëë¹ ë¹ìš: WCAG êž°ì€ 4.5:1 ìŽì 목í
A-2. 몚ë°ìŒ í멎
- 360px~430px íìì 1ìŽ ë ìŽìì
- ë©ìž 칎ë ëìŽ ìµì 55vh 볎ì¥
- ì€í¬ë¡€ ì ìëš ììœìŽ ëšŒì 볎ìŽëë¡ ë°°ì¹
A-3. ìí ë©ìì§ ë¬žêµ¬ ì ì±
- ì²ëЬ ìì: "ì ì¥ ì€ì ëë€..."
- ì²ëЬ ì±ê³µ: "í ìŒìŽ ì¶ê°ëììµëë€."
- ì²ëЬ ì€íš: ììž + ë€ì íë ì ì
- ì: "ì ë ¥ê°ì íìžíŽ ì£Œìžì."
==============================================================================
ììž ëª ìž ë¶ë¡ B. ë°ìŽí° ì ì¥ ì€í
B-1. í ìŒ í목 구조
- id: string
- title: string
- priority: high | normal | low
- dueDate: string | null
- completed: boolean
- createdAt: string
- updatedAt: string
B-2. ì§ì€ ìžì 구조
- id: string
- durationMinutes: number
- startedAt: string
- endedAt: string | null
- status: running | paused | done
B-3. ë°ë³µ ë£šíŽ êµ¬ì¡°
- id: string
- name: string
- checkedDates: string[]
- streak: number
- lastCheckedAt: string | null
B-4. localStorage í€ ì€ê³
lps-settings
language: ko | en
timerDurationMinutes: number
showCompletedItems: boolean
lps-todos
[ ...í ìŒ ë°°ìŽ... ]
lps-focus-sessions
[ ...ì§ì€ ìžì
ë°°ìŽ... ]
lps-routines
[ ...ë°ë³µ ë£šíŽ ë°°ìŽ... ]
==============================================================================
ììž ëª ìž ë¶ë¡ C. ìí ì ìŽ (State Flow)
C-1. ìŽêž° ìí
S0: READY
C-2. í ìŒ ì¶ê°
S0 -> S1(ADDING) -> S2(ADDED) ëë E1(VALIDATION_FAIL)
C-3. ì§ì€ íìŽëšž
S0/S2 -> S3(TIMER_RUNNING) -> S4(TIMER_PAUSED) -> S5(TIMER_DONE)
C-4. ë°ë³µ ë£šíŽ ì²Ží¬
S0/S2 -> S6(ROUTINE_CHECKING) -> S7(ROUTINE_DONE) ëë E2(STORAGE_FAIL)
==============================================================================
ììž ëª ìž ë¶ë¡ D. ìë¬ ìœë íì€
| ìœë | ìë¬ íì | ììž | ì¬ì©ì ë©ìì§ |
|---|---|---|---|
| LPS-001 | EMPTY_TODO_TITLE | í ìŒ ì 목 믞ì ë ¥ | í ìŒì ì ë ¥íŽ ì£Œìžì. |
| LPS-002 | TITLE_TOO_LONG | ì 목 êžžìŽ ìŽê³Œ | ì 목ì 80ì ìŽëŽë¡ ì ë ¥íŽ ì£Œìžì. |
| LPS-003 | STORAGE_UNAVAILABLE | localStorage ì ì¥ ì€íš | ì ì¥í ì ììµëë€. ëžëŒì°ì ì€ì ì íìžíŽ ì£Œìžì. |
| LPS-004 | TIMER_STATE_INVALID | ì못ë íìŽëšž ìí | íìŽëšž ìí륌 ë€ì íìžíŽ ì£Œìžì. |
| LPS-005 | ROUTINE_NOT_FOUND | ë£šíŽ í목 ìì | íŽë¹ 룚íŽì ì°Ÿì ì ììµëë€. |
==============================================================================
ììž ëª ìž ë¶ë¡ E. 볎ì/ìŽì ì ì± ììž
E-1. ì ë ¥ ì ì± :
* í ìŒ ì 목 ìµë êžžìŽ: 80ì
* íì© ë¬žì: ìŒë° í
ì€íž + ì«ì + 공백 + Ʞ볞 구ëì
* ì€í¬ëŠœíž ìœì
íšíŽ ë°ê²¬ ì ì
ë ¥ ë¬Žíš ì²ëЬ
E-2. ì ì¥ ì ì± :
* í ìŒ ì¶ê° ì§í ìŠì ì ì¥
* ì ì¥ ì€íš ì ì±ì ê³ì ëì
* ì€ìí ìíë ìë¡ê³ 칚 í 복구 ê°ë¥íŽìŒ íš
E-3. ì¥ì ëì:
* localStorage ì€ë¥ ë°ì ì ë©ëªšëЬ ìíë¡ ìì ìŽì
* ì¬ìë ë²íŒ ë
žì¶
* ë°ìŽí° ìì€ ê°ë¥ì±ì ìŠì ì¬ì©ììê² ê³ ì§
E-4. í¥í ìë² ëì ì:
* ìë²ë ëêž°íì© ìí ë§ ìí
* ë¯Œê° ë©ëªšë ìíží ê³ ë €
* íŽëŒìŽìžížë íë¡ì ìëí¬ìžížë§ ížì¶
==============================================================================
ììž ëª ìž ë¶ë¡ F. í ì€íž ìëëŠ¬ì€ (ììž)
F-1. ì ì íëŠ:
1. í ìŒ "ìëšìŽ 20ê°" ì
ë ¥
2. ì¶ê° ë²íŒ íŽëŠ
3. ì§ì€ íìŽëšž ìì
4. êž°ë결곌: í ìŒ ì¶ê° ë° íìŽëšž ìí ë°ì
F-2. ë¹ ì ë ¥ íëŠ:
1. ë¹ ì
ë ¥ ìíìì ì¶ê° ë²íŒ íŽëŠ
2. êž°ë결곌: ê²œê³ ë©ìì§ ì¶ë ¥
F-3. ì ì¥ ì€ë¥ íëŠ:
1. ëžëŒì°ì ì ì¥ ì í ìí© ì ë
2. í ìŒ ì¶ê° ì€í
3. êž°ë결곌: ì± ì€ëš ììŽ ì€ë¥ ë©ìì§ ì¶ë ¥
F-4. ë°ë³µ íŽëŠ íëŠ:
1. ì¶ê° ë²íŒ ì°ì 5í íŽëŠ
2. êž°ë결곌: ì€ë³µ ì ì¥ ì í, UI ë©ì¶€ ìì
==============================================================================
ììž ëª ìž ë¶ë¡ G. ëŠŽëŠ¬ì€ êž°ì€ (Definition of Done)
MVP ëŠŽëŠ¬ì€ ì¡°ê±Ž:
íµì¬ êž°ë¥ FR-01~FR-06 ì ë¶ ëì
죌ì ìë¬ ìœë LPS-001~LPS-005 ì²ëЬ
몚ë°ìŒ 360px í겜ìì êž°ë¥ ì¬ì© ê°ë¥
Chrome/Edge ìµì ë²ì ìë í
ì€íž íµê³Œ
README ì€í ë°©ë²ë§ìŒë¡ íììŽ ì¬í ê°ë¥
- íµì¬ êž°ë¥ FR-01~FR-06 ì ë¶ ëì
- 죌ì ìë¬ ìœë LPS-001~LPS-005 ì²ëЬ
- 몚ë°ìŒ 360px í겜ìì êž°ë¥ ì¬ì© ê°ë¥
- Chrome/Edge ìµì ë²ì ìë í ì€íž íµê³Œ
- README ì€í ë°©ë²ë§ìŒë¡ íììŽ ì¬í ê°ë¥
==============================================================================
ììž ëª ìž ë¶ë¡ H. ìì ë¶íŽ (ê¶ì¥ íì€í¬)
| íì€í¬ ID | ì 목 | ì°ì¶ë¬Œ | ì°ì ìì |
|---|---|---|---|
| FE-001 | ì€ë í멎 Ʞ볞 ë ëë§ | ëì볎ë, ììœ ì¹Žë | P1 |
| FE-002 | í ìŒ ì¶ê°/ìì | ì ë ¥, 목ë¡, ì ì¥ | P1 |
| FE-003 | ìë£ ì²ëЬ | ì²Ží¬ í êž, êž°ë¡ ë°ì | P1 |
| FE-004 | ì§ì€ íìŽëšž | ìì, ìŒìì ì§, ì¢ ë£ ì늌 | P2 |
| FE-005 | ë°ë³µ ë£šíŽ | ë£šíŽ ì²Ží¬, streak êŽëЬ | P2 |
| FE-006 | ìí ë©ìì§ ì²Žê³í | ìœëë³ ì¬ì©ì ë©ìì§ íì€í | P2 |
| FE-007 | 몚ë°ìŒ UI ê°ì | 360px êž°ì€ ë ìŽìì ê²ìŠ | P3 |
==============================================================================
ììž ëª ìž ë¶ë¡ I. í¥í íì¥ ìí€í ì² (ììœ)
I-1. íì¬:
Browser -> Local State / localStorage
I-2. íì¥í:
Browser -> Backend Sync -> Cloud Storage / Calendar API
ì¥ì :
- êž°êž° ê° ëêž°í
- ì늌/ìºëаë íµí©
- ë¶ì ë° ì¶ì² êž°ë¥ ì¶ê°
============================================================================