Skip to content

About

Self-hosted multi-user technology intelligence radar with RSS, personal keywords, noise control, and Feishu delivery.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Tech Radar Multi

Tech Radar Multi

A self-hosted, multi-user intelligence radar for teams drowning in RSS feeds.

Collect once. Let every teammate define their own sources, keywords, quality limits, and delivery rhythm.

简体中文 · Quick start · Architecture · Privacy · Roadmap

CI License: MIT Python 3.11+ Docker Compose

Why this project?

Most RSS readers are personal. Most team intelligence tools force everyone into the same feed and ranking rules. Tech Radar Multi keeps collection shared while making relevance personal:

  • one source is fetched once, instead of once per user;
  • every user owns independent RSS subscriptions, include/exclude keywords, limits, and feedback;
  • private sources can become team candidates only after explicit review;
  • administrators see source health, keyword trends, and an audit trail without overwriting user preferences;
  • a web inbox works out of the box, while Feishu delivery is optional.

It is designed for a small team that wants a transparent, hackable alternative to a black-box news recommender.

Highlights

Capability What it gives you
Multi-user isolation Separate sources, keywords, inboxes, preferences, feedback, and Feishu identities
Shared collection Public feeds are fetched once and reused across users
Source governance Private → candidate → shared review flow
Noise control Include/exclude keywords, URL normalization, deduplication, and paper quotas
Resilient fetching Per-source exponential backoff and source health visibility
Admin control plane Users, trends, candidate review, network policy, health, and audit logs
Optional Feishu delivery One-time binding code and private daily digest
Self-hosted stack FastAPI, SQLite WAL, RSSHub, Redis, and Docker Compose

Quick start

Docker Compose

Requirements: Docker Desktop or Docker Engine with Compose.

git clone git@github.com:tracy586ymz-eng/tech-radar-multi.git
cd tech-radar-multi
cp .env.example .env

Before starting, edit .env and replace at least ADMIN_PASSWORD and SESSION_SECRET.

docker compose up -d --build

Open http://localhost:1410, then sign in with the administrator credentials from .env.

curl -fsS http://localhost:1410/health
docker compose logs -f tech-radar-multi

Stop without deleting data:

docker compose down

Do not use docker compose down -v unless you intentionally want to remove the Redis volume.

Local Python development

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env
set -a
source .env
set +a
.venv/bin/python -m app.main

The local server listens on 127.0.0.1:1410 by default. For direct Python runs, set DATABASE_PATH=runtime/tech-radar-multi.db in .env.

How it works

flowchart LR
  S[Official RSS / RSSHub] --> F[Shared fetcher]
  F --> D[Normalize + deduplicate]
  D --> A[(Global article store)]
  U[Per-user sources, keywords, limits] --> R[Personal relevance & quality gate]
  A --> R
  R --> I[Web inbox]
  R --> L[Feishu digest]
  H[Admin: health, candidates, trends, audit] --> F
Loading

The first release is a modular monolith: the FastAPI web application and background worker run together, while SQLite WAL provides durable storage for a single-instance deployment. See the architecture guide for data isolation and scaling boundaries.

Feishu integration

Feishu is optional; the web inbox works without it.

  1. Create an internal Feishu app and enable the bot.
  2. Add the permission to send messages as the app.
  3. Subscribe to direct-message events if users should bind themselves.
  4. Set the callback URL to https://your-domain.example/api/feishu/events.
  5. Configure FEISHU_APP_ID, FEISHU_APP_SECRET, and FEISHU_VERIFICATION_TOKEN in .env.
  6. A user generates a one-time code in Settings and sends 绑定 XXXXXX to the bot.

No phone number or full contact directory is required. Only the app-scoped Feishu identifier used for delivery is stored.

Data and backup

  • Application database: runtime/tech-radar-multi.db for local runs, /data/tech-radar-multi.db in Docker.
  • Redis cache: the redis-data Docker volume.
  • Secrets: .env, which is ignored by Git.
./scripts/backup.sh

Backups contain application data. Store them privately and never commit them.

Security scope

Tech Radar Multi currently targets a trusted team of roughly 5–20 users behind HTTPS. It includes salted password hashing, signed sessions, tenant-aware queries, and audit logs, but it is not yet hardened for open public registration.

Before exposing it to the public internet, add CSRF protection, login rate limiting, password reset, invitation expiry, and user data export/deletion. See SECURITY.md.

Version 0.1 makes no hidden LLM calls and contains no model API integration. See PRIVACY.md for the exact local and external data boundaries.

What v0.1 does not pretend to do

  • It does not yet generate LLM summaries; it preserves feed summaries and explains keyword matches.
  • Daily Feishu digests are implemented; realtime and weekly toggles are modeled but not fully scheduled.
  • A single server timezone drives the current digest worker.
  • SQLite is intentionally limited to a small, single-instance team deployment.

Development

python3 -m unittest discover -s tests -v

The tests cover tenant isolation, private source ownership, keyword boundaries, deduplication, paper quotas, Feishu event parsing, password hashing, and session tamper detection.

Roadmap

  • Chinese/English model-assisted summaries with transparent citations
  • Realtime alerts and weekly review jobs
  • CSRF protection, rate limiting, password reset, and invitation expiry
  • PostgreSQL, a standalone worker, and a job queue for multi-instance deployment
  • Feishu SSO and additional delivery channels
  • Import/export for OPML and user settings
  • Relevance evaluation dashboard and explainable ranking experiments

Contributing

Issues and pull requests are welcome. Start with CONTRIBUTING.md, especially if you want to add a delivery channel, feed connector, ranking rule, or deployment target.

If this project helps your team build a calmer information workflow, consider giving it a ⭐ — it helps more builders discover the project.

License

MIT © 2026 tracy586ymz-eng

About

Self-hosted multi-user technology intelligence radar with RSS, personal keywords, noise control, and Feishu delivery.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages