stackcommunity packagev0.1.0

todos

todos 0.1.0 — an app composition defined in a plain TOML manifest. Inspect its members or run it with ply up.

← All packages

Use this package

compose / run

Run the published composition with ply up.

terminal
ply up iluxav/todos@0.1

Composition

3 app members

Independent apps, connected through explicit parameters and references.

db

postgres@17
publish
internal:5432

server

iluxav/server
publish
internal:3001
after
db

web

iluxav/web
publish
internal:3000
after
server

The manifest

as published
Read ply.toml
# todos — the whole product as three `ply run`s: a database, an API, a web UI.
# Lives in the web repo because that is the thing people deploy; the API is a
# separate repo and arrives here as a published package, not a path.
#
#   ply up                      # locally, with stack.dev.toml on top
#   ply push ./stack.toml       # publish it, then `ply up iluxav/todos`
#
# PRODUCTION values only. Members reach each other by their `<name>.ply`
# bridge names, versions come from the registry (newest match on every
# reconcile beat, so CI publishing IS deploying), and the password is a hole
# filled from the env file. Anything true only on a laptop — loopback
# addresses, local checkouts, a port that dodges a local postgres — belongs
# in stack.dev.toml, which `ply up` applies and a host never reads.

[stack]
name = "todos"
version = "0.1.0"
description = "Todo app — postgres + an API + a Next.js front end."
env_file = ".env/todos.env"

[[app]]
run     = "postgres@17"
name    = "db"
publish = ["internal:5432"]
e       = ["POSTGRES_PASSWORD=$POSTGRES_PASSWORD", "POSTGRES_DB=todos"]

# `name` is set explicitly on both app members: it is the identity `after`
# edges, `<name>.ply` and the dev overlay all key on, so it must not drift
# when the source changes from a registry ref to a local checkout.
[[app]]
run     = "iluxav/server"
name    = "server"
after   = ["db"]
publish = ["internal:3001"]
e = ["DATABASE_URL=postgres://postgres:$POSTGRES_PASSWORD@db.ply:5432/todos"]

[[app]]
run     = "iluxav/web"
name    = "web"
after   = ["server"]          # → SERVER_ADDR, what next.config.ts proxies to
publish = ["internal:3000"]   # the edge terminates TLS and fronts this
domain  = ["todos.example.com"]

Published versions

1 record

Download the composition manifest for a published version.

versiondownloadsizepublished
0.1.0latestply.toml —2026-08-30