Workspace
A wasm-drydock project is a Cargo workspace containing three member crates: backend, frontend, and shared.
Cargo.toml
The workspace manifest at the project root lists all three members and pins shared dependency versions in [workspace.dependencies]:
[workspace]
members = ["backend", "frontend", "shared"]
resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
.cargo/config.toml
The workspace-level Cargo configuration sets the default build target for the frontend crate:
[build]
target = "wasm32-unknown-unknown"
Note: This applies only when building inside the
frontendcrate directory. wasm-drydock handles target selection automatically when invokingwasm-pack.
drydock.toml
The wasm-drydock configuration file at the workspace root. See Configuration Reference for all available fields.
.gitignore
The generated .gitignore excludes:
target/— Cargo build outputfrontend/pkg/— wasm-pack build outputfrontend/styles/screen.css— compiled SCSS (only written bywasm-drydock release)
Deployment Files
By default, wasm-drydock init generates deployment files for Fly.io:
Dockerfile
A multi-stage Docker build using cargo-chef for layer caching. Builds the frontend with wasm-pack, compiles SCSS, and produces a minimal production image with the backend binary.
.dockerignore
Excludes unnecessary files from Docker build context:
target/— Cargo build outputfrontend/pkg/— wasm-pack outputfrontend/styles/screen.css— compiled CSS.git/— version control*.md— documentationfly.toml— Fly.io config (not needed in image)
fly.toml
Fly.io deployment configuration with sensible defaults:
- Internal port 3001
- HTTPS forced
- Auto-scaling (stop/start machines)
shared-cpu-1xwith 256MB memory
See Fly.io deployment for details.
Skipping deployment files
Use --no-deploy to skip these files:
wasm-drydock init my-app --no-deploy