podfly 0.2.1
podfly: ^0.2.1 copied to clipboard
Deploy Serverpod apps on Fly.io, Railway, DigitalOcean, and more via existing cloud CLIs. Thin orchestrator (not a host): podfly.yaml, Docker/fly/railway/DO quirks, Flutter web packaging, Postgres wir [...]
Changelog #
All notable changes to podfly are documented in this file.
The format is based on Keep a Changelog, and this project aims to follow Semantic Versioning.
[Unreleased] #
Added #
- (nothing yet)
0.2.1 — 2026-07-20 #
Added #
- Example CI:
example/mobile_api_onlyGitHub Actions workflows for Fly API-only deploy on every push tomain(+ PR dry-run) - Live demo repo: 127thousand/podfly-api-only-demo
Fixed #
- Doctor no longer hard-requires Flutter for API-only deploys (
--apiorweb.enabled: false) — unblocks GitHub Actions without Flutter SDK
0.2.0 — 2026-07-20 #
Added #
host: digitalocean(aliasdo): App Platform viadoctl+ DOCR- Local Docker build/push (
linux/amd64), app spec create/upsert - API app + optional separate web app (nginx + Flutter build)
digitalocean_postgres: Managed Postgres (DBaaS), public SSL host, app firewallapp:<id>- Starter DOCR: one repository with tags
api/web
- Local Docker build/push (
mode: monolithas the canonical name for “UI with API host / no Pages” (replacesmode: flyas primary)
Changed #
mode: flyremains a legacy alias formonolith- Native web hosts (Railway / DigitalOcean): deploy API before web so Flutter bakes a live
SERVER_URL - nginx static template: set WASM
Content-Typeviadefault_type(notadd_header) so CanvasKit loads (avoids blank Flutter canvas)
Fixed #
- Duplicate
Content-Type: application/wasm,application/wasmbroke Flutter web on DO/Railway nginx deploys
0.1.1 — 2026-07-20 #
0.1.0 — 2026-07-20 #
First public release on pub.dev.
Features #
Host adapter architecture
- Host adapter registry (
lib/src/hosts/): Fly, Railway, and planned clouds asHostAdapterplugins - Wizard chooses API cloud (
host:inpodfly.yaml); doctor only requires that host’s CLI - Planned hosts (Render, Cloud Run, AWS, Azure): config + doctor install recipes; deploy not implemented yet
Fly.io
- Default API host with scale-to-zero-friendly
fly.tomltemplates fly apps createwhen missing (+ unique suffix if name taken); app name sanitize- Patch Serverpod
production.yamlpublicHostto*.fly.dev HostAdapter.ensureApiApp: create API app before database attachfly_postgres: create cluster, attach, parseDATABASE_URL→ sidecar + Serverpod user/db/passwords.yaml
Railway
- First-class API host (
host: railway): project/service, domain,railway.toml,railway up - Full stack: separate API + static web (nginx) + optional Postgres
railway_postgresprovider with sidecar →production.yaml/passwords.yaml- Serverless by default for API + web
- Optional CDN on web service
Cloudflare Pages
- Split mode: Flutter web → Pages via
wrangler
Doctor, database, CLI
- Doctor can install missing CLIs; facilitated login on TTY;
PODFLY_AUTO=1 - Providers:
none,sqlite,fly_postgres,neon,railway_postgres - Detect mobile / API-only monorepos; Flutter web packaging (CanvasKit, bootstrap)
- Commands:
deploy,doctor,init,smoke; CI-friendly--yes --no-login
Documentation #
- README, user guide, CI, caching, database, config reference, AGENTS.md, llms.txt
Links #
- Package: pub.dev/packages/podfly
- Repo: github.com/127thousand/podfly
- Docs: doc/README.md