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
|