Qiita記事で言及されたIT技術書を収集し、ランキング形式で表示するWebサービス。
-
ランキング表示
- 24時間ランキング
- 30日間ランキング
- 365日間ランキング
- 年別ランキング(2015年以降)
- 全期間ランキング
-
書籍詳細ページ
- 書籍情報(タイトル、著者、出版社、価格など)
- Amazon商品ページへのリンク
- 言及しているQiita記事の一覧
-
自動データ収集
- Qiita APIから記事情報を取得
- OpenBD APIとGoogle Books APIから書籍情報を取得
- 言及数をベースにランキングを計算
.github/workflows/daily_data_refresh.ymlが毎日 UTC 00:30(JST 09:30)に実行scripts/collect_books_from_qiita.pyを起動し、Neon 本番DBを更新- リポジトリ Secrets で以下を設定
DATABASE_URL: Neon 接続URLQIITA_API_TOKEN: Qiita API トークン
Actions > Daily Data Refresh > Run workflowから手動実行も可能
Qiita API
↓
記事からISBN抽出
↓
OpenBD/Google Books APIで書籍情報取得
↓
データベース保存
↓
ランキング計算
↓
フロントエンド表示
- Next.js 14 (App Router) + TypeScript
- Tailwind CSS - スタイリング
- Lucide Icons - アイコン
- Axios - HTTP クライアント
- FastAPI (Python 3.11+)
- SQLAlchemy ORM - ORM
- Alembic - マイグレーション
- Pydantic - バリデーション
- PostgreSQL 16+
- フロントエンド: Vercel
- バックエンド: Render
- データベース: Neon DB (Serverless PostgreSQL)
- ドメイン: Cloudflare Registrar
- DNS/CDN: Cloudflare
- books - 書籍マスター
- qiita_articles - Qiita記事情報
books (書籍マスター)
├─ id (PK)
├─ isbn
├─ title
├─ author
├─ publisher
├─ publication_date
├─ description
├─ thumbnail_url
├─ amazon_url
├─ amazon_affiliate_url
├─ total_mentions
└─ latest_mention_at
qiita_articles
├─ id (PK)
├─ book_id (FK)
├─ qiita_id
├─ title
├─ url
├─ author_id
├─ author_name
├─ tags
├─ likes_count
├─ stocks_count
├─ comments_count
└─ published_at
GET /api/rankings/ ランキング(クエリパラメータで期間指定)
GET /api/rankings/years 利用可能な年のリスト
GET /api/books/{asin} 書籍詳細
- Node.js 18.x 以上
- Python 3.11 以上
- PostgreSQL 16 以上
cd frontend
npm install
npm run devcd backend
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Mac/Linux
pip install -r requirements.txt
# 環境変数設定
copy env.template .env
# .envファイルを編集
# データベースマイグレーション
alembic upgrade head
# サーバー起動
uvicorn app.main:app --reloadまたは、Windows環境では:
cd backend
start.bat- Amazonアソシエイト・プログラム - 書籍購入時の紹介料(現在審査中)
MIT License
https://github.com/zndmonya-dot/qiibrary
- 利用規約・プライバシーポリシー・特商法ページの実装
- OGP画像(
public/og-image.png)を作成 - サイトマップを実装
- robots.txtを実装
- アイコン・ファビコンを作成
- SSL証明書を設定(Cloudflare経由)
- データベースバックアップを設定
- 環境変数を本番用に設定