A multi-user RSS/Atom feed reader. Symfony 7.4 LTS JSON API in backend/, with
the Angular 20 SPA that delivers the reader UI and auth in frontend/.
Run your own instance with one command. You need Docker (running) and git. Then:
curl -fsSL https://raw.githubusercontent.com/larspohlmann/simple-feed-reader/main/scripts/install.sh | bashThe installer clones the project into ./simple-feed-reader, checks out the
latest release, generates the secrets it can, asks for the things only you
know (how users reach the instance — plain HTTP, your own certificate, or a
reverse proxy — under which hostname and port, and how to send mail), and
starts the production stack. The full guide — TLS, reverse proxies, mail verification, backups —
is docs/docker-production.md.
Read before you pipe to bash. You can inspect exactly what runs at scripts/install.sh. The installer never deletes data.
For the development stack — live-reloading frontend, xdebug, and Mailpit catching all outgoing mail locally — use the dev installer instead (it additionally needs mkcert):
curl -fsSL https://raw.githubusercontent.com/larspohlmann/simple-feed-reader/main/scripts/install-dev.sh | bashThe manual walkthrough lives in docs/local-docker.md.
Run these from inside the simple-feed-reader directory:
| Task | Command |
|---|---|
| Update to the latest release (prod and/or dev) | ./scripts/update.sh |
| Start / stop the production stack | ./scripts/prod-start.sh / ./scripts/prod-stop.sh |
| Change the public origin / mail settings | ./scripts/prod-configure.sh |
| Start / stop the dev frontend (:4200) | ./scripts/frontend-start.sh / ./scripts/frontend-stop.sh |
| Stop the dev stack (keeps your data) | docker compose down |
- Frontend workspace — the Angular 20 SPA: dev server, the quality gate, theming, and the bearer-token auth model.
- Architecture: client contract and native-client readiness — the cross-cutting rules for how clients talk to the backend, and the standing constraint that keeps a future native iOS app viable.
- OAuth sign-in (Google and Apple) — provider setup for operators, and the redirect/exchange contract for the SPA.
- Local Docker environment — run the whole stack (MySQL, PHP, nginx with TLS, Mailpit) in Docker.
- Running in production (Docker) — the prod stack: real mail transport, TLS or reverse proxy, updates, backups.
- First-run setup: creating the initial admin — see docs/first-run-setup.md.
- Cutting a release — how a
vX.Y.Ztag onmainbecomes the version the install and update scripts hand to users. - Design spec
- Implementation plans
- Contributing — issue-first workflow, branch conventions, and the quality gate. Licensed under the MIT license; notable changes land in the changelog.


