UNPKG

blog-garden-widget

Version:

GitHub style blog activity visualization widget with RSS feed support, deployed proxy server integration, and enhanced customization options for multiple users

197 lines (155 loc) β€’ 5.83 kB
# 🎯 Blog Garden Widget GitHub μŠ€νƒ€μΌμ˜ λΈ”λ‘œκ·Έ ν™œλ™ μ‹œκ°ν™” μœ„μ ―μž…λ‹ˆλ‹€. RSS ν”Όλ“œλ₯Ό μžλ™μœΌλ‘œ νŒŒμ‹±ν•˜μ—¬ λΈ”λ‘œκ·Έ ν™œλ™μ„ GitHub μž”λ””μ™€ λ™μΌν•œ μŠ€νƒ€μΌλ‘œ λ³΄μ—¬μ€λ‹ˆλ‹€. ## ✨ μ£Όμš” κΈ°λŠ₯ - 🎨 **GitHub μŠ€νƒ€μΌ**: μ •ν™•ν•œ GitHub μž”λ”” 색상 μ½”λ“œ μ‚¬μš© - πŸ“‘ **RSS μžλ™ νŒŒμ‹±**: RSS ν”Όλ“œμ—μ„œ κ²Œμ‹œλ¬Ό 정보 μžλ™ μˆ˜μ§‘ - πŸ”„ **μžλ™ μ—…λ°μ΄νŠΈ**: 24μ‹œκ°„λ§ˆλ‹€ 데이터 μžλ™ κ°±μ‹  - πŸ“± **λ°˜μ‘ν˜• λ””μžμΈ**: λͺ¨λ°”일과 λ°μŠ€ν¬ν†± λͺ¨λ‘ 지원 - 🌏 **ν•œκ΅­μ–΄ 지원**: ν•œκ΅­μ–΄ λ‚ μ§œ ν˜•μ‹κ³Ό λ©”μ‹œμ§€ - βš™οΈ **μ™„μ „ μ»€μŠ€ν„°λ§ˆμ΄μ§•**: 제λͺ©, 색상, μ—…λ°μ΄νŠΈ μ£ΌκΈ° λ“± μ„€μ • κ°€λŠ₯ - πŸš€ **배포된 ν”„λ‘μ‹œ μ„œλ²„**: CORS 문제 해결을 μœ„ν•œ ν΄λΌμš°λ“œ ν”„λ‘μ‹œ μ„œλ²„ 제곡 - πŸ”§ **ν–₯μƒλœ μ„±λŠ₯**: μ„œλ²„ μ‚¬μ΄λ“œ RSS νŒŒμ‹±μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈ λΆ€λ‹΄ κ°μ†Œ - πŸ“Š **λ‹€μ–‘ν•œ RSS ν˜•μ‹**: RSS, Atom ν”Όλ“œ λͺ¨λ‘ 지원 - πŸ‘₯ **닀쀑 μ‚¬μš©μž 지원**: μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ™μ‹œμ— μ‚¬μš© κ°€λŠ₯ - πŸ›‘οΈ **Rate Limiting**: API λ‚¨μš© λ°©μ§€λ₯Ό μœ„ν•œ μš”μ²­ μ œν•œ ## πŸš€ λΉ λ₯Έ μ‹œμž‘ ### 1. 슀크립트 λ‘œλ“œ #### 3κ°œμ›” 버전 μœ„μ ― ```html <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget.js"></script> ``` #### 1λ…„ 버전 μœ„μ ― ```html <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget-1y.js"></script> ``` ### 2. HTML μ»¨ν…Œμ΄λ„ˆ 생성 #### 3κ°œμ›” 버전 μœ„μ ― ```html <div id="my-blog-garden-widget"></div> ``` #### 1λ…„ 버전 μœ„μ ― ```html <div id="my-yearly-blog-garden-widget"></div> ``` ### 3. μœ„μ ― μ΄ˆκΈ°ν™” #### 3κ°œμ›” 버전 μœ„μ ― ```javascript const widget = new GradenWidget('#my-blog-garden-widget', { rssUrl: 'https://your-blog.com/rss', title: 'λ‚΄ λΈ”λ‘œκ·Έ ν™œλ™' }); ``` #### 1λ…„ 버전 μœ„μ ― ```javascript const yearlyWidget = new GradenWidget1Y('#my-yearly-blog-garden-widget', { rssUrl: 'https://your-blog.com/rss', title: '1λ…„ ν™œλ™ 기둝' }); ``` ## πŸ“– κΈ°λ³Έ μ‚¬μš©λ²• ### HTML μ†μ„±μœΌλ‘œ μžλ™ μ΄ˆκΈ°ν™” #### 3κ°œμ›” 버전 μœ„μ ― ```html <div data-graden-widget data-rss-url="https://your-blog.com/rss" data-title="λΈ”λ‘œκ·Έ ν™œλ™"> </div> ``` #### 1λ…„ 버전 μœ„μ ― ```html <div data-graden-widget-1y data-rss-url="https://your-blog.com/rss" data-title="1λ…„ ν™œλ™ 기둝"> </div> ``` ### JavaScript API둜 동적 생성 #### 3κ°œμ›” 버전 μœ„μ ― ```javascript const widget = new GradenWidget('#container', { rssUrl: 'https://your-blog.com/rss', title: 'μ»€μŠ€ν…€ 제λͺ©', updateInterval: 12 * 60 * 60 * 1000, // 12μ‹œκ°„λ§ˆλ‹€ μ—…λ°μ΄νŠΈ showLegend: true, showFooter: true }); ``` #### 1λ…„ 버전 μœ„μ ― ```javascript const yearlyWidget = new GradenWidget1Y('#container', { rssUrl: 'https://your-blog.com/rss', title: '1λ…„ ν™œλ™ 기둝', updateInterval: 12 * 60 * 60 * 1000, // 12μ‹œκ°„λ§ˆλ‹€ μ—…λ°μ΄νŠΈ showLegend: true, showFooter: true }); ``` ## πŸ“Š μœ„μ ― 버전별 νŠΉμ§• | ꡬ뢄 | 3κ°œμ›” 버전 | 1λ…„ 버전 | |------|------------|----------| | **클래슀λͺ…** | `GradenWidget` | `GradenWidget1Y` | | **HTML 속성** | `data-graden-widget` | `data-graden-widget-1y` | | **크기** | 250px λ„ˆλΉ„ | 1000px λ„ˆλΉ„ | | **κΈ°κ°„** | 졜근 3κ°œμ›” | 졜근 1λ…„ | | **κ·Έλ¦¬λ“œ** | 12μ£Ό Γ— 7일 = 84개 μ…€ | 52μ£Ό Γ— 7일 = 364개 μ…€ | | **μš©λ„** | μ‚¬μ΄λ“œλ°”, μ»΄νŒ©νŠΈν•œ 곡간 | λ³Έλ¬Έ, μƒμ„Έν•œ μ—°κ°„ 뢄석 | | **λ‘œλ”© 속도** | 빠름 (~50ms) | 보톡 (~80ms) | ## βš™οΈ κΈ°λ³Έ μ„€μ • μ˜΅μ…˜ | μ˜΅μ…˜ | νƒ€μž… | κΈ°λ³Έκ°’ | μ„€λͺ… | |------|------|--------|------| | `rssUrl` | string | `'https://pearlluck.tistory.com/rss'` | RSS ν”Όλ“œ URL | | `title` | string | `'ν™œλ™ 기둝'` | μœ„μ ― 제λͺ© | | `updateInterval` | number | `86400000` | μ—…λ°μ΄νŠΈ μ£ΌκΈ° (λ°€λ¦¬μ΄ˆ, 24μ‹œκ°„) | | `showLegend` | boolean | `true` | λ²”λ‘€ ν‘œμ‹œ μ—¬λΆ€ | | `showFooter` | boolean | `true` | ν‘Έν„° ν‘œμ‹œ μ—¬λΆ€ | ## πŸ” λΈŒλΌμš°μ € 지원 - Chrome 60+ - Firefox 55+ - Safari 12+ - Edge 79+ ## πŸ“¦ μ„€μΉ˜ ### CDN μ‚¬μš© (ꢌμž₯) #### 3κ°œμ›” λ²„μ „λ§Œ μ‚¬μš© ```html <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget.js"></script> ``` #### 1λ…„ λ²„μ „λ§Œ μ‚¬μš© ```html <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget-1y.js"></script> ``` #### 두 버전 λͺ¨λ‘ μ‚¬μš© ```html <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget.js"></script> <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget-1y.js"></script> ``` ### npm μ„€μΉ˜ ```bash npm install blog-garden-widget ``` ## πŸ“± ν‹°μŠ€ν† λ¦¬ λΈ”λ‘œκ·Έ 적용 μ˜ˆμ‹œ ### μ‚¬μ΄λ“œλ°”μ— 3κ°œμ›” 버전 μœ„μ ― μΆ”κ°€ ```html <!-- ν‹°μŠ€ν† λ¦¬ κ΄€λ¦¬μž β†’ κΎΈλ―ΈκΈ° β†’ μ‚¬μ΄λ“œλ°” β†’ HTML μœ„μ ― --> <div data-graden-widget data-rss-url="https://your-blog.tistory.com/rss" data-title="ν™œλ™ 기둝" data-show-legend="true"> </div> <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget.js"></script> ``` ### 본문에 1λ…„ 버전 μœ„μ ― μΆ”κ°€ ```html <!-- ν‹°μŠ€ν† λ¦¬ κ΄€λ¦¬μž β†’ κΎΈλ―ΈκΈ° β†’ HTML νŽΈμ§‘ --> <div class="yearly-activity-widget"> <h3>μ—°κ°„ ν™œλ™ 기둝</h3> <div data-graden-widget-1y data-rss-url="https://your-blog.tistory.com/rss" data-title="1λ…„ ν™œλ™ 기둝"> </div> </div> <script src="https://unpkg.com/blog-garden-widget@latest/blog-garden-widget-1y.js"></script> ``` ## πŸ“š 더 μžμ„Έν•œ 정보 - **μ‚¬μš©μž κ°€μ΄λ“œ** [User Guide](./user-guide.md) - **μ‹œμŠ€ν…œ ꡬ쑰**: [Architecture Guide](./architecture.md) - **개발자 κ°€μ΄λ“œ**: [Developer Guide](./developer-guide.md) - **ν”„λ‘μ‹œ μ„œλ²„ 배포**: [Developer Guide](./developer-guide.md#ν”„λ‘μ‹œ-μ„œλ²„-배포)