個人投資家向けブログなど複数ソースから 新着を定期収集し、ひとつのタイムラインで一覧します。購読アプリ向けに 集約フィード /rss(RSS 2.0) も配信します(画面には /rss への目立ったリンクは置かず、HTML の head に alternate 指定で検出可能。各エントリは元記事へのリンク)。
- RSS 収集は Cloud Run Job(本番)またはローカルで
services/collector/run.pyを実行。Web から収集 API は公開しない - 記事一覧の新着順表示(htmx)。初回は先頭 50 件、「もっと見る」で 50 件ずつ最大 200 件まで拡張(
GET /articles?limit=…を htmx で差し替え) - フッターの 問い合わせ(Google フォーム。URLはテンプレートに固定)
GET /rss(集約フィード。画面からの目立ったリンクはなし)- URL をキーにした重複記事の除外
feeds.jsonはリクエストごとに読み直す(詳細は feeds と環境変数)- ローカルは SQLite、Cloud Run では Firestore に切り替え可能
ブラウザは http://127.0.0.1:8000 を開きます。
Docker(推奨)
cd investor-antenna
docker compose up --buildDocker でテスト(pytest)
docker compose --profile test run --rm testsservices/web と services/collector のテストをまとめて実行します(イメージ初回は --build が必要なことがあります)。
uv
cd investor-antenna
uv sync --dev
uv run uvicorn web.main:app --reload初回は feeds.json を確認してから Web を起動し、収集を一度走らせます(例: uv run python services/collector/run.py)。手順の詳細は ローカル開発 を参照してください。
詳細は docs/README.md の目次からどうぞ(Docker の注意、環境変数、Terraform・CD、API、トラブルシュートなど)。