summaryrefslogtreecommitdiff
path: root/CLAUDE.md
blob: 03d2fb0db071e8c9bf8ab2b9a34b2cd2b9acd6e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# microblog

個人用マイクロブログ。Markdown で投稿でき、XSS 対策済み。

## 技術スタック

- React Router v7 (SSR)
- better-sqlite3 (SQLite)
- marked + sanitize-html (Markdown → HTML 変換・サニタイズ)
- Tailwind CSS v4 + カスタム CSS
- Docker (node:20-alpine)

## ルーティング

| パス | ファイル | 説明 |
|------|---------|------|
| `/` | `app/routes/home.tsx` | 投稿フォーム + フィード |
| `/api/posts` | `app/routes/api.posts.tsx` | REST API (GET / POST) |

## API

```
GET  /api/posts        全投稿取得 (JSON)
POST /api/posts        投稿作成
  Content-Type: application/json
  Body: { "content": "Markdown text" }
  → 201 { id, content, html, created_at }
```

## ローカル開発

Node.js 20+ が必要。

```bash
npm install
npm run dev   # http://localhost:5173
```

## デプロイ

```bash
git push origin master
# → /var/git/microblog.git post-receive
# → GIT_WORK_TREE=/app/microblog git checkout -f
# → docker compose up -d --build
```

本番 URL: https://blog.yyamashita.com