Deploy static websites to IPFS with a single command using PinMe CLI. Use when: (1) User wants to deploy a built frontend project, (2) Need to upload static files (dist/build/out/public) to IPFS, (3) Requesting preview URL for a deployed site. Supports: Vite, React, Vue, Next.js, Angular, Create React App, and static sites. Output: Preview URL (https://pinme.eth.limo/#/preview/*) after successful upload.
Deploy static websites to IPFS network with a single command. No servers, no accounts, no setup.
Use this skill when:
```bash
npm install -g pinme
pinme upload dist
```
```bash
node --version
pinme --version
```
PinMe auto-detects directories in priority order:
| Directory | Framework/Tool |
|-----------|---------------|
| `dist/` | Vite, Vue CLI, Angular |
| `build/` | Create React App |
| `out/` | Next.js (static export) |
| `public/` | Static sites |
**Validation rules:**
```bash
pinme upload dist
pinme upload build
pinme upload dist --domain my-site
```
Return ONLY the preview URL: `https://pinme.eth.limo/#/preview/*`
| Command | Description |
|---------|-------------|
| `pinme upload <dir>` | Upload static files to IPFS |
| `pinme upload <dir> --domain <name>` | Upload + bind domain |
| `pinme import <car-file>` | Import CAR files |
| `pinme export <CID>` | Export IPFS content as CAR |
| `pinme list` | Show upload history |
| `pinme rm <hash>` | Remove files from IPFS |
| `pinme set-appkey` | Set AppKey for authentication |
| `pinme my-domains` | List owned domains |
| `pinme --version` | Show version |
| Type | Free Plan |
|------|----------|
| Single file | 200MB |
| Total directory | 1GB |
| Error | Solution |
|-------|----------|
| Node.js version too low | Upgrade to 16.13.0+ |
| Command not found | Run `npm install -g pinme` |
| Folder does not exist | Check path, use `ls` |
| Upload failed | Check network, retry |
| Authentication failed | Run `pinme set-appkey` |
For programmatic deployment:
1. **Check environment**: `node --version` (needs >=16.13.0)
2. **Install if needed**: `npm install -g pinme`
3. **Detect directory**: Check `dist/`, `build/`, `out/`, `public/`
4. **Validate**: Must contain `index.html`
5. **Execute**: `pinme upload <directory>`
6. **Return**: Only the preview URL
**Prohibited operations:**
Example workflow:
```yaml
name: Deploy to PinMe
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '18'
- run: npm ci && npm run build
- run: npm install -g pinme
- run: pinme set-appkey "${{ secrets.PINME_APPKEY }}"
- run: pinme upload dist --domain "${{ secrets.DOMAIN }}"
```
```json
{
"tool": "pinme",
"requirements": {
"node_version": ">=16.13.0"
},
"install": "npm install -g pinme",
"upload": "pinme upload {{directory}}",
"upload_with_domain": "pinme upload {{directory}} --domain {{domain}}",
"validDirectories": ["dist", "build", "out", "public"],
"requiredFiles": ["index.html"],
"excludePatterns": ["node_modules", ".env", ".git", "src"],
"limits": {
"single_file": "200MB",
"total_directory": "1GB"
},
"output": "preview_url",
"preview_url_format": "https://pinme.eth.limo/#/preview/*",
"fixed_domain_format": "https://*.pinit.eth.limo"
}
```
Leave a review
No reviews yet. Be the first to review this skill!