If the number-one constraint is “easy,” this combo mirrors the GitHub + Vercel workflow while staying fully self-hosted.
When you are stable, you can add Radicle or federation for “real” decentralization. Keep it out of the first iteration so the workflow stays frictionless.