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
Markdown
# π― 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#νλ‘μ-μλ²-λ°°ν¬)