Cloud Native 10 min read

Deploy a Full‑Stack App with One Command: Inside the 3.6k‑Star PinMe CLI

PinMe is a 3.6k‑star open-source CLI that lets you create and deploy a full‑stack React front‑end, Cloudflare Worker back‑end, and D1 database with a single command, using IPFS for static assets and ENS for domains, while supporting incremental updates and Claude Code integration, though it has upload size limits and requires wallet balance for custom domains.

Java Companion
Java Companion
Java Companion
Deploy a Full‑Stack App with One Command: Inside the 3.6k‑Star PinMe CLI

Installation and authentication

Install the CLI globally with npm install -g pinme. Authenticate once using pinme login, which opens a browser window. After login all subsequent operations are performed from the terminal.

Static file upload

Upload a built static directory with a single command: pinme upload ./dist The tool automatically detects common output folders (dist/, build/, out/, public/) and uploads all files to IPFS. It returns a CID and a URL of the form https://<cid>.pinme.dev. To bind a custom domain, add the --domain flag, e.g.: pinme upload ./dist --domain my-site If the domain does not contain a dot it is treated as a PinMe sub‑domain; a fully‑qualified domain (e.g. example.com) is processed as a DNS entry and requires a positive wallet balance.

One‑command full‑stack scaffold

Create a full‑stack project with:

pinme create my-app
cd my-app
pinme save

The pinme create command performs the following steps:

Creates project resources (Cloudflare Worker runtime and D1 database) on the PinMe platform.

Downloads the official template.

Writes a pinme.toml manifest containing project ID, Worker configuration, database configuration and front‑end configuration.

Installs all dependencies.

Builds the Worker, uploads the Worker code and any SQL migration files.

Builds the front‑end (React + Vite) and uploads the static assets.

The default template uses React + Vite for the front‑end, Cloudflare Workers for the back‑end, D1 for storage, and Ant Design for UI. It includes built‑in user authentication and email sending via the PinMe platform API.

Incremental updates

After the initial deployment, individual layers can be updated without redeploying the whole stack: pinme update-web – rebuilds and uploads only the front‑end. pinme update-worker – rebuilds and uploads only the Worker. pinme update-db – uploads only the .sql files under db/.

This design avoids full redeployment when a small change (e.g., a CSS tweak) is needed.

Claude Code integration

Add the PinMe skill to Claude Code: npx skills add glitternetwork/pinme The skill enables Claude Code to generate PinMe commands automatically. For example, asking Claude Code to “create a full‑stack blog with user authentication” triggers an internal pinme create, followed by code and schema modifications, and finally pinme save to deploy, without any manual command entry.

Guardrails enforced by the skill include:

Blocking uploads of source directories, node_modules, and .env files.

Requiring execution inside a directory that contains pinme.toml.

Domain and wallet handling

PinMe provides a wallet system for paying domain‑binding and storage fees. Relevant commands: pinme balance – shows the current wallet balance. pinme domain – lists bound domains. pinme list – displays upload history.

Import/export of CAR files (IPFS archive format) and deletion of uploaded content are also supported.

Limitations

Upload size limits: 100 MB per file, 500 MB per directory, and 10 MB per SQL migration.

Custom domain binding requires wallet balance, unlike Vercel’s free custom domains.

The default template assumes Ant Design for UI and Cloudflare Workers for the back‑end; switching to a different stack requires manual changes.

IPFS’s immutable content addressing means each update generates a new CID; version management must be handled externally.

Overall assessment

PinMe addresses the specific problem of quickly showcasing a demo without configuring a full deployment pipeline. For lightweight projects, rapid prototyping in Claude Code, or sharing a functional link, the zero‑config workflow is highly efficient. For larger, long‑term applications the size limits, domain costs, and IPFS immutability make it less suitable.

Project repository

https://github.com/glitternetwork/pinme
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

CLIIPFSCloudflare WorkersClaude CodeFull-Stack DeploymentPinMe
Java Companion
Written by

Java Companion

A highly professional Java public account

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.