podfly 0.1.0 copy "podfly: ^0.1.0" to clipboard
podfly: ^0.1.0 copied to clipboard

Deploy Serverpod apps on Fly.io, Railway, and more via existing cloud CLIs. Thin orchestrator (not a host): podfly.yaml, Dockerfile/fly/railway quirks, Flutter web packaging, Postgres wiring, smoke checks.

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.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 as HostAdapter plugins
  • Wizard chooses API cloud (host: in podfly.yaml); doctor only requires that host’s CLI
  • Planned hosts (Render, Cloud Run, AWS, Azure, DigitalOcean): config + doctor install recipes; deploy not implemented yet

Fly.io

  • Default API host with scale-to-zero-friendly fly.toml templates
  • fly apps create when missing (+ unique suffix if name taken); app name sanitize
  • Patch Serverpod production.yaml publicHost to *.fly.dev
  • Optional Dockerfile template if Serverpod server Dockerfile is missing
  • HostAdapter.ensureApiApp: create API app before database attach
  • fly_postgres: create cluster, attach, parse DATABASE_URL.podfly_fly_pg.json + correct Serverpod user/db/passwords.yaml

Railway

  • First-class API host (host: railway): project/service, domain, railway.toml, railway up
  • Doctor resolves CLI under ~/.railway/bin
  • Full stack: separate API + static web (nginx) + optional Postgres (not a siamese monolith)
  • railway_postgres provider with sidecar → production.yaml / passwords.yaml
  • Serverless by default for API + web (sleepApplication + GraphQL when CLI has no flag)
  • Optional CDN on web service

Cloudflare Pages

  • Split mode: Flutter web → Pages via wrangler
  • Pages project create; _headers / _redirects; SERVER_URL dart-define

Doctor & install

  • Doctor can install missing CLIs (Fly, Railway, wrangler, neonctl) via brew or install scripts
  • Facilitated login on TTY; PODFLY_AUTO=1 skips Y/n
  • Host-scoped doctor (not always Fly)

Database

  • Providers: none, sqlite, fly_postgres, neon, railway_postgres
  • DB need detection; soft warnings for unused Serverpod template auth

Project surface & web packaging

  • Detect mobile / API-only monorepos → web.enabled: false
  • In-package Flutter web build, CanvasKit, bootstrap without stub SW
  • Example: example/mobile_api_only

CLI

  • Commands: deploy, doctor, init, smoke
  • Flags: --dry-run, --smoke, --api, --web, --yes, --no-login, --host, --mode
  • CI-friendly: env tokens + --yes --no-login

Documentation #

  • README (install from pub.dev, roadmap, Serverpod Cloud recommendation)
  • User guide, caching, database, config reference, CI / GitHub Actions
  • AGENTS.md, llms.txt, design specs

Fixes #

  • Fly app exists before postgres attach
  • Fly attach credentials (not hard-coded user: postgres)
  • Railway full-stack service wiring and up path
  • Example Serverpod deps pinned to 4.0.0-beta.0

0
likes
0
points
400
downloads

Documentation

Documentation

Publisher

unverified uploader

Weekly Downloads

Deploy Serverpod apps on Fly.io, Railway, and more via existing cloud CLIs. Thin orchestrator (not a host): podfly.yaml, Dockerfile/fly/railway quirks, Flutter web packaging, Postgres wiring, smoke checks.

Repository (GitHub)
View/report issues

Topics

#serverpod #deploy #cli #fly #railway

License

unknown (license)

Dependencies

args, io, path, yaml

More

Packages that depend on podfly