Skip to content

Installation

The pw command handles scaffolding, code generation, migrations, and the development server. Install it first. Projects created by pw init pin their Go toolchain, so you do not need to install a separate Go version before creating the project.

Terminal window
brew install shibukawa/tap/pw

The formula installs a prebuilt binary from the tagged release, on macOS (Apple Silicon and Intel) and Linux. Upgrades come with brew upgrade.

Terminal window
nix run github:shibukawa/popcornweb#pw -- version

That runs pw without installing anything. To put it on PATH, add the flake’s packages.<system>.pw to your profile or environment, or use the exported overlays.default from a flake of your own.

The derivation builds from source with buildGoModule, so it covers x86_64-linux, aarch64-linux, and aarch64-darwin. Intel macOS is served by the Homebrew formula and the release archives instead — nixpkgs dropped that platform.

The flake also exposes a devShells.default with Go, gopls, and TinyGo, if you want the host toolchain without Devbox.

Every tag publishes one archive per target plus a checksums.txt, on the releases page. Extraction yields pw directly, with no directory prefix, so verifying the checksum and moving the binary onto your PATH is the whole procedure. Windows is covered here and by no other channel.

Terminal window
go install github.com/shibukawa/popcornweb/cmd/pw@latest

This works and stays supported. It is listed last because it needs a Go toolchain that matches the module’s requirement, which is exactly the prerequisite the other three channels remove.

Terminal window
pw version
pw 0.1.0 (abc1234, darwin/arm64, go1.26.0)

pw help lists every command:

Usage: pw <command> [arguments]
Commands:
init create a project in a new directory
add enable a capability in a project that declined it
new scaffold a handler or a page beside the ones you have
generate write everything a compiler needs, stopping before the compiler
check report generated files that are stale or missing
fmt format template sources into their canonical form
i18n reconcile message catalogs against the templates that use them
migrate inspect and apply database migrations
seed load seed datasets into the database
build run generate and then compile the project
dev watch, regenerate, rebuild, and restart
doctor report what a named environment will actually run
version print the version, revision, and toolchain
help print this message

pw command says what each one is for and where it is documented.

Popcorn Web requires Go 1.26 or later.

For a new project, pw init writes a go.mod that already requires the framework; no manual go get is needed. An existing module needs one additional step:

Terminal window
go get github.com/shibukawa/popcornweb

Application code imports the pw package, which is the stable application-facing API:

import "github.com/shibukawa/popcornweb/pw"

Generated projects include a devbox.json that pins Go and a Valkey service. When you use pw init --tailwind, it pins the standalone Tailwind CSS binary as well. Devbox keeps those tools reproducible, but it is optional: if Go is already on PATH, skip devbox shell and run pw dev directly.

Install Devbox from jetify.com/devbox.