Zero-Backend μ€κ³λ₯Ό ν΅ν λ°μ΄ν° νλΌμ΄λ²μ ν보 λ° μλ² λΉμ© 0μ λ¬μ±
Why do scheduling apps need my email? I built a 100% Client-Side Timetable Builder instead π π
AI μμ½
Context
κΈ°μ‘΄ μ€μΌμ€λ§ μλΉμ€μ κ³Όλν User Authentication μꡬμ Backend μμ‘΄μ±μΌλ‘ μΈν μ¬μ©μ μ§μ μ₯λ²½ λ° λ°μ΄ν° νλΌμ΄λ²μ μΉ¨ν΄ λ¬Έμ λ°μ. λ¨μ μκ°ν μμ± κΈ°λ₯μ λΆνμν μλ² λ¦¬μμ€μ λ€νΈμν¬ Latencyκ° κ²°ν©λ λΉν¨μ¨μ ꡬ쑰 λΆμ.
Technical Solution
- localStorage APIλ₯Ό νμ©ν μν κ΄λ¦¬λ‘ μλ² μμ΄ λ°μ΄ν° Persistence ꡬν λ° μ¬μ©μ κΈ°κΈ° λ΄ λ°μ΄ν° μκ²°μ± ν보
- 'Minutes from midnight' λ¨μ λ³ν λ‘μ§μ ν΅ν μκ° μΆ©λ κ²μ¦ μκ³ λ¦¬μ¦μ Browser-side μ²λ¦¬λ‘ λ€νΈμν¬ Latency μ κ±°
- Canvas API κΈ°λ°μ DOM μ€λ μ· λ λλ§ λ°©μμ λμ νμ¬ Client-side μ΄λ―Έμ§ μμ± κ΅¬ν
- Retina λμ€νλ μ΄ λμμ μν΄ Canvas λ λλ§ ν΄μλλ₯Ό 3λ°°μλ‘ κ°μ μ€μ ν¨μΌλ‘μ¨ κ³ ν΄μλ PNG μΆλ ₯ νμ§ ν보
- JSON Stringify λ° Parse κ³Όμ μ ν΅ν UI HydrationμΌλ‘ ν΄λΌμ°λ μ± μμ€μ Auto-save κ²½ν μ 곡
μ€μ² ν¬μΈνΈ
1. λ¨μ CRUD μ€μ¬μ μκ·λͺ¨ ν΄ κ°λ° μ Serverlessλ₯Ό λμ΄μ Zero-Backend μν€ν μ² κ²ν
2. μκ° λ°μ΄ν° μ²λ¦¬ μ νμ€ μκ° ν¬λ§·λ³΄λ€ κ³μ° ν¨μ¨μ΄ λμ μ μν(λΆ λ¨μ) λ³ν μ μ© κ³ λ €
3. DOM-to-Image λ³ν μ Device Pixel Ratioλ₯Ό κ³ λ €ν λ°°μ λ λλ§μΌλ‘ μ΄λ―Έμ§ λΈλ¬ νμ λ°©μ§