Skip to content

tamekuniz/freeder

Repository files navigation

freeder

freeder

Feedly APIを使ったキーボード操作特化のRSSリーダー。マルチユーザー対応。

必要なもの

  • Node.js 20.x 以上
  • Feedlyアカウント(Proプラン推奨、なくても利用可能)

インストール

Mac

# リポジトリをクローン
git clone https://github.com/tamekuniz/freeder.git
cd freeder

# 依存パッケージをインストール
npm install

# 環境変数を設定
cp .env.local.example .env.local
# .env.local を編集

Windows

  1. Node.js 20以上をインストール(https://nodejs.org/)
  2. Visual Studio Build Tools をインストール(better-sqlite3のコンパイルに必要)
git clone https://github.com/tamekuniz/freeder.git
cd freeder
npm install
copy .env.local.example .env.local

Build Toolsの代わりに npm install -g windows-build-tools でも可。

環境変数の設定

.env.local に以下を設定:

FEEDLY_ACCESS_TOKEN=xxxxxxxxxxxxxxx
SESSION_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • FEEDLY_ACCESS_TOKEN: Feedly Developer Token(共有トークンとして利用可能)
  • SESSION_SECRET: セッション暗号化用の秘密鍵(openssl rand -hex 32 で生成)

起動

npm run dev

ブラウザで http://localhost:3000 を開く。

ユーザー認証

freederはマルチユーザー対応です。

  1. 初回アクセス時にログイン画面が表示されます
  2. 「新規登録」でアカウントを作成
  3. Feedlyトークンの設定画面に進みます
    • Feedly Proを持っている場合: 自分のDeveloper Tokenを入力
    • Feedly Proを持っていない場合: サーバーの共有トークンを使用

最初に登録したユーザーには .env.local のトークンが自動で割り当てられます。

全文検索

  • / キーでfreeder全体を検索
  • f キーで選択中のフォルダ内を検索
  • 記事タイトルと本文が検索対象(フィード名は除外)
  • アプリ起動時に全フィードをバックグラウンドでクロールし、検索インデックスを構築します

キーボードショートカット

キー 動作
j / k 次/前の記事
h / l 次/前のRSS
H / L 次/前の未読RSS
g / ; 次/前のフォルダ
x フォルダを開閉
/ 検索
f フォルダ内検索
b ブラウザで開く
v サイトプレビュー
m 既読/未読切替
s スター切替
+/- フォント拡大/縮小
Ctrl+R Feedlyと同期

技術スタック

  • Next.js 16 + React 19
  • TypeScript
  • Tailwind CSS 4
  • better-sqlite3(キャッシュ・FTS5全文検索・ユーザー管理)
  • iron-session(暗号化セッション管理)
  • Feedly API

データベース

  • freeder-cache.db(SQLite)がプロジェクトディレクトリに自動作成されます
  • 購読情報、記事、未読カウント、UI設定、ユーザー情報がキャッシュされます
  • FTS5トライグラム検索でタイトル・本文を高速に全文検索
  • Feedly APIに接続できないときはキャッシュから表示します

トラブルシューティング

npm install で better-sqlite3 のビルドに失敗する(Windows): Visual Studio Build Tools の「C++ によるデスクトップ開発」がインストールされているか確認してください。

npm install で better-sqlite3 のビルドに失敗する(Mac): Xcode Command Line Tools をインストールしてください: xcode-select --install

FEEDLY_ACCESS_TOKEN のエラー: トークンの有効期限が切れている可能性があります。https://feedly.com/v3/auth/dev で再取得してください。

LAN内の他端末からアクセスしたい場合: npm run dev -- -H 0.0.0.0 で起動してください。

開発・デプロイフロー(自宅サーバ)

編集場所と build source を物理分離し、「dev で動作確認 → main へ merge → prd 反映」のフローで運用する。

構成

用途 パス branch 役割
編集本拠地 ~/GitHub/tamekuniz/freeder main / dev 切替 コード編集・commit・push の起点
prd ビルドソース ~/server/repos/freeder-prd main 固定 freeder コンテナの build context(編集しない、pull のみ)
dev ビルドソース ~/server/repos/freeder-dev dev 固定 freeder-dev コンテナの build context(worktree、編集しない、pull のみ)

freeder-prd は通常の clone、freeder-devfreeder-prd の git worktree(.git を共有してディスク節約)。

URL

  • prd: https://316006.com/freeder/
  • dev: https://dev.316006.com/freeder/

開発フロー

# 1. dev branch で開発
cd ~/GitHub/tamekuniz/freeder
git checkout dev
# ...コード編集...
git add -A && git commit -m "feat: ..."
git push origin dev

# 2. dev 環境に反映 → 動作確認
cd ~/server/repos/freeder-dev
git pull origin dev
cd ~/server
docker compose build freeder-dev && docker compose up -d freeder-dev
# ブラウザで https://dev.316006.com/freeder/ を確認

# 3. OK なら main へ merge
cd ~/GitHub/tamekuniz/freeder
git checkout main
git merge dev
git push origin main

# 4. prd 反映
cd ~/server/repos/freeder-prd
git pull origin main
cd ~/server
docker compose build freeder && docker compose up -d freeder
# ブラウザで https://316006.com/freeder/ を確認

注意

  • .env.local は gitignore 対象。新 worktree を作るときは既存の .env.local をコピー
  • compose.yaml~/server/compose.yaml(git 管理外)。build context が ./repos/freeder-{prd,dev} を指す

About

Feedly-integrated RSS reader with keyboard-driven navigation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages