feat: rewrite backend in Rust (axum)

Replace the Node/Express backend with a Rust implementation that keeps
the same REST API, MongoDB collections and Redis cache keys, so existing
users, subscriptions and progress keep working.

- axum + mongodb + redis, bcrypt and HS256 JWT compatible with old data
- RSS parsing, iTunes discovery/trending, background sync (1h / 4h)
- Docker image now builds a static Rust binary on debian-slim
- CI runs cargo tests before publishing the image
- compose uses pull_policy: always so a restart picks up the new image

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-13 09:34:33 +02:00
1 parent 0a91f6ec2c
commit 1028b7968c
41 files changed
+2280 -2239

No files matched your search

+3 -1
View File
@@ -30,12 +30,14 @@ services:
app:
image: ghcr.io/r0m1k3/podcastic:latest
# Always fetch the newest image when the stack (re)starts
pull_policy: always
container_name: podcastic-app
restart: unless-stopped
ports:
- "${PORT:-3579}:3579"
environment:
NODE_ENV: production
RUST_LOG: podcastic=info,tower_http=warn
PORT: 3579
MONGODB_URI: mongodb://mongodb:27017/podcastic
REDIS_URL: redis://redis:6379