Skip to content

hyman19870119/-pinme

 
 

Repository files navigation

PinMe

Deploy your site in one command.


PinMe

PinMe is a zero-config frontend deployment tool. No servers. No accounts. No setup.

Build a static site, generate a page with AI, or export your frontend — then deploy instantly with a single command.

PinMe publishes your site as verifiable content, making silent tampering and accidental breakage far harder than traditional hosting.

You don’t manage servers, regions, or uptime. PinMe handles availability and persistence for you.

Website: https://pinme.eth.limo/

Installation

Using npm

npm install -g pinme

Using yarn

yarn global add pinme

Usage

Upload files or directories

# Interactive upload
pinme upload

# Specify path directly
pinme upload /path/to/file-or-directory

# Upload and bind to a domain
pinme upload /path/to/file-or-directory --domain <name>
pinme upload /path/to/file-or-directory -d <name>

Remove files from IPFS

# Interactive removal
pinme rm

# Remove a specific file by hash
pinme rm <IPFS_hash>

View upload history

# Show the last 10 upload records
pinme list

# Or use the shorthand command
pinme ls

# Limit the number of records shown
pinme list -l 5

# Clear all upload history
pinme list -c

Set AppKey for authentication

# Interactive AppKey setup
pinme set-appkey

# Set AppKey directly
pinme set-appkey <AppKey>

View your domains

# List all domains owned by current account
pinme my-domains

# Or use the shorthand command
pinme domain

Get help

# Display help information
pinme help

Command Details

upload

Upload a file or directory to the IPFS network. Supports binding to a Pinme subdomain after upload.

pinme upload [path] [--domain <name>]

Options:

  • path: Path to the file or directory to upload (optional, if not provided, interactive mode will be entered)
  • -d, --domain <name>: Pinme subdomain to bind after upload (optional)

Examples:

# Interactive upload
pinme upload

# Upload a specific file
pinme upload ./example.jpg

# Upload an entire directory
pinme upload ./my-website

# Upload and bind to a domain
pinme upload ./my-website --domain my-site
pinme upload ./my-website -d my-site

rm

Remove a file from the IPFS network.

pinme rm [hash]

Options:

  • hash: IPFS content hash to remove (optional, if not provided, interactive mode will be entered)

Examples:

# Interactive removal
pinme rm

# Remove a specific file by hash
pinme rm bafybeifdwyoz66u5czbbjvmmais5fzrzrolxbyiydqsbrxessndt3s6zdi

Note: This action unpins the content from our IPFS node and deletes the ENS subdomain record. It does not ensure that the file is removed from the IPFS network.

list / ls

Display upload history.

pinme list [options]
pinme ls [options]

Options:

  • -l, --limit <number>: Limit the number of records displayed
  • -c, --clear: Clear all upload history

Examples:

# Show the last 10 records
pinme list

# Show the last 5 records
pinme ls -l 5

# Clear all history records
pinme list -c

set-appkey

Set AppKey for authentication and automatically merge anonymous upload history to the current account.

pinme set-appkey [AppKey]

Options:

  • AppKey: Your AppKey for authentication (optional, if not provided, interactive mode will be entered)

Examples:

# Interactive AppKey setup
pinme set-appkey

# Set AppKey directly
pinme set-appkey your-app-key-here

Note: After setting the AppKey, your anonymous upload history will be automatically merged to your account.

my-domains / domain

List all domains owned by the current account.

pinme my-domains
pinme domain

Examples:

# List all domains
pinme my-domains

# Shorthand command
pinme domain

This command displays information about each domain including:

  • Domain name
  • Domain type
  • Bind time
  • Expire time

help

Display help information.

pinme help [command]

Options:

  • command: The specific command to view help for (optional)

Examples:

# Display general help
pinme help

Upload Limits

  • Single file size limit: 200MB (free plan)
  • Total directory size limit: 1GB (free plan)

File Storage

Uploaded files are stored on the IPFS network and accessible through the Glitter Protocol's IPFS gateway. After a successful upload, you will receive:

  1. IPFS content hash
  2. Accessible URL link

Log Locations

Logs and configuration files are stored in:

  • Linux/macOS: ~/.pinme/
  • Windows: %USERPROFILE%\.pinme\

License

MIT License - See the LICENSE file for details

Usage Tips

Uploading Vite Projects

When uploading projects built with Vite, please note:

  1. Vite Configuration: Add base: "./" to your Vite configuration file to ensure proper asset path resolution:
// vite.config.js
export default {
  base: "./",
  // other configurations...
}

GitHub Actions Integration

PinMe can be integrated with GitHub Actions to automatically deploy your project when you push code to GitHub. This enables a fully automated CI/CD workflow.

Quick Setup

  1. Add the workflow file to your repository:

    • Copy .github/workflows/deploy.yml from the PinMe repository to your project
    • Or create .github/workflows/deploy.yml in your repository
  2. Configure GitHub Secrets:

    • Go to your repository → Settings → Secrets and variables → Actions
    • Add a new secret named PINME_APPKEY with your PinMe AppKey
    • (Optional) Add PINME_DOMAIN to specify a custom domain name
  3. Push to trigger deployment:

    • Push code to main or master branch to trigger automatic deployment
    • Or manually trigger via Actions tab → "Deploy to PinMe" → Run workflow

Workflow Features

The GitHub Actions workflow automatically:

  • ✅ Detects and installs project dependencies
  • ✅ Builds your project (if a build script exists)
  • ✅ Installs PinMe CLI
  • ✅ Sets up authentication using your AppKey
  • ✅ Auto-detects build output directory (dist, build, public, or out)
  • ✅ Uploads to IPFS and binds to your domain
  • ✅ Provides deployment summary with access URL

Configuration Options

Using GitHub Secrets

You can configure the following secrets in your repository:

  • PINME_APPKEY (Required): Your PinMe AppKey for authentication

  • PINME_DOMAIN (Optional): Default domain name to bind

    • If not set, the workflow will generate a domain from your repository name
    • Example: my-awesome-projecthttps://my-awesome-project.pinit.eth.limo

Manual Workflow Dispatch

You can also manually trigger the workflow with custom parameters:

  1. Go to Actions tab in your repository
  2. Select "Deploy to PinMe" workflow
  3. Click "Run workflow"
  4. Enter:
    • Domain: Your desired PinMe domain name
    • Build Directory: Your build output directory (default: dist)

Example Workflow

name: Deploy to PinMe

on:
  push:
    branches: [main, master]
  workflow_dispatch:
    inputs:
      domain:
        description: 'PinMe domain name'
        required: true
      build_dir:
        description: 'Build directory'
        default: 'dist'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '18'
      - run: npm ci
      - run: npm run build
      - run: npm install -g pinme
      - run: pinme set-appkey "${{ secrets.PINME_APPKEY }}"
      - run: pinme upload dist --domain "${{ secrets.PINME_DOMAIN }}"

Supported Build Tools

The workflow automatically detects and supports:

  • Vite: Builds to dist/
  • Create React App: Builds to build/
  • Next.js: Builds to out/ (with output: 'export')
  • Vue CLI: Builds to dist/
  • Angular: Builds to dist/
  • Static sites: Uses root directory or public/

Troubleshooting

Build directory not found:

  • Ensure your build script outputs to a standard directory (dist, build, public, or out)
  • Or set PINME_DOMAIN secret and use manual workflow dispatch to specify custom directory

Authentication failed:

  • Verify your PINME_APPKEY secret is correctly set
  • Ensure the AppKey format is correct: <address>-<jwt>

Domain binding failed:

  • Check if the domain name is available
  • Ensure you have permission to bind the domain
  • Try a different domain name

Contact Us

If you have questions or suggestions, please contact us through:


Developed and maintained by the Glitter Protocol team

About

Deploy Your Frontend in a Single Command

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 63.1%
  • HTML 31.0%
  • CSS 3.5%
  • JavaScript 2.4%