New:Microsoft Teams Notifications Are Now Available in Socket.Learn more β†’
Get Started

opentwig

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

opentwig

opentwig 🌿 is an open source link in bio page generator.

Source
npmnpm
Version
1.0.3
Version published
Weekly downloads
11
-38.89%
Maintainers
1
Weekly downloads
Β 
Created
Source

OpenTwig 🌿

OpenTwig is an open source personal link page generator that creates beautiful, customizable "link in bio" pages. Instead of relying on third-party services, users can define their configuration and instantly create a fully functional static site they own and control.

✨ Features

  • 🎨 Multiple Themes: Choose from 4 built-in themes (default, dark, minimal, colorful)
  • πŸ“± Mobile Responsive: Optimized for all devices with mobile-first design
  • πŸš€ Fast & Lightweight: Generates static HTML/CSS with minimal dependencies
  • πŸ”— Easy Link Management: Simple JSON configuration for all your links
  • πŸ–ΌοΈ Optional Avatar Support: Custom profile pictures with automatic processing (completely optional)
  • πŸ“Š Open Graph Images: Auto-generated social media preview images
  • πŸ“± QR Code Generation: Built-in QR codes for easy mobile sharing
  • 🎭 Modal Dialogs: Support for rich content in footer links
  • πŸ“€ Share Functionality: Native Web Share API integration
  • ⚑ CSS Optimization: Automatic CSS minification and autoprefixing
  • πŸ› οΈ CLI Interface: Simple command-line interface with helpful commands

πŸš€ Quick Start

Installation & Usage

# Create a new project
npx opentwig --init

# Edit the generated config.json with your information
# Then generate your page
npx opentwig

Prerequisites

  • Node.js (v14 or higher)
  • npm or yarn

πŸ“– Configuration

OpenTwig uses a simple JSON configuration file (config.json) to define your page. Here's the complete configuration structure:

With Avatar (Optional)

{
  "theme": "default",
  "url": "https://links.yourwebsite.com",
  "title": "Your Name - opentwig 🌿",
  "name": "Your Name",
  "content": "Hello World! Here is my bio.",
  "minify": true,
  "avatar": {
    "path": "./avatar.png"
  },
  "links": [
    {
      "url": "https://twitter.com",
      "title": "Twitter"
    },
    {
      "url": "https://instagram.com",
      "title": "Instagram"
    }
  ],
  "footerLinks": [
    {
      "title": "Contact",
      "url": "mailto:mail@mail.com"
    },
    {
      "title": "Privacy",
      "content": "Your privacy policy content here..."
    }
  ],
  "share": {
    "title": "Your Name - opentwig 🌿",
    "url": "https://links.yourwebsite.com",
    "text": "Share"
  }
}

Without Avatar (Minimal Configuration)

{
  "theme": "default",
  "url": "https://links.yourwebsite.com",
  "title": "Your Name - opentwig 🌿",
  "name": "Your Name",
  "content": "Hello World! Here is my bio.",
  "minify": true,
  "links": [
    {
      "url": "https://twitter.com",
      "title": "Twitter"
    },
    {
      "url": "https://instagram.com",
      "title": "Instagram"
    }
  ],
  "footerLinks": [
    {
      "title": "Contact",
      "url": "mailto:mail@mail.com"
    }
  ],
  "share": {
    "title": "Your Name - opentwig 🌿",
    "url": "https://links.yourwebsite.com",
    "text": "Share"
  }
}

Configuration Options

OptionTypeDescription
themestringTheme name (default, dark, minimal, colorful)
urlstringYour page URL (for Open Graph and QR codes)
titlestringPage title (appears in browser tab)
namestringYour display name
contentstringBio/description text
minifybooleanEnable CSS minification (default: true)
avatarobjectOptional Avatar image configuration
avatar.pathstringOptional Path to your avatar image (supports PNG, JPG, JPEG, WebP)
linksarrayArray of link objects with url and title
footerLinksarrayFooter links (can be URLs or modal dialogs)
shareobjectWeb Share API configuration

πŸ–ΌοΈ Avatar Configuration

The avatar feature is completely optional. If you don't include the avatar object in your configuration, no avatar will be displayed on your page.

Supported image formats:

  • PNG
  • JPG/JPEG
  • WebP

Avatar processing:

  • Images are automatically optimized and resized
  • Processed avatar is saved as avatar.png in the output directory
  • Original aspect ratio is preserved
  • Images are compressed for optimal web performance

Example avatar configuration:

{
  "avatar": {
    "path": "./my-photo.jpg"
  }
}

Note: If you don't want an avatar, simply omit the avatar object from your configuration entirely.

🎨 Themes

OpenTwig includes 4 beautiful themes:

  • Default: Clean, modern design with subtle shadows and rounded corners
  • Dark: Dark mode variant of the default theme
  • Minimal: Simplified, minimalist design
  • Colorful: Vibrant color scheme

All themes are mobile-responsive and include:

  • Optional custom avatar display
  • Link buttons with hover effects
  • Modal dialogs for rich content
  • QR code integration
  • Share button functionality

πŸ› οΈ CLI Commands

# Show help information
npx opentwig --help

# Create sample config.json
npx opentwig --init

# Generate page from config.json
npx opentwig

πŸ“ Output Files

OpenTwig generates the following files in the dist/ directory:

  • index.html - Main HTML page
  • style.css - Processed and optimized CSS
  • avatar.png - Processed avatar image (only generated if avatar is configured)
  • og-image.jpg - Open Graph image for social sharing
  • qr.svg - QR code for mobile sharing

πŸ”§ Development

Project Structure

opentwig/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.js              # Main entry point
β”‚   β”œβ”€β”€ constants.js          # Application constants
β”‚   └── utils/                # Utility functions
β”‚       β”œβ”€β”€ buildPage.js      # Page building logic
β”‚       β”œβ”€β”€ generateHTML.js   # HTML generation
β”‚       β”œβ”€β”€ generateOGImage.js # Open Graph image creation
β”‚       β”œβ”€β”€ generateQR.js     # QR code generation
β”‚       β”œβ”€β”€ processCSS.js     # CSS processing and optimization
β”‚       └── ...
β”œβ”€β”€ theme/
β”‚   β”œβ”€β”€ default/              # Default theme
β”‚   β”‚   β”œβ”€β”€ index.js         # Theme template
β”‚   β”‚   β”œβ”€β”€ style.css        # Theme styles
β”‚   β”‚   └── components/      # Reusable components
β”‚   β”œβ”€β”€ dark/                # Dark theme
β”‚   β”œβ”€β”€ minimal/             # Minimal theme
β”‚   └── colorful/            # Colorful theme
└── dist/                    # Generated output

Key Features Implementation

  • Image Processing: Uses Sharp for avatar and OG image processing
  • QR Code Generation: Uses qrcode library for SVG QR codes
  • CSS Processing: PostCSS with autoprefixer and minification
  • HTML Generation: Component-based template system
  • Theme System: Modular theme architecture with component support

🌐 Deployment

Since OpenTwig generates static files, you can deploy to any static hosting service:

  • GitHub Pages: Push dist/ folder to a repository
  • Netlify: Drag and drop the dist/ folder
  • Vercel: Connect your repository
  • AWS S3: Upload files to an S3 bucket
  • Any web server: Upload the dist/ folder to your server

πŸ“ License

MIT License - see LICENSE file for details

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Keywords

link-in-bio

FAQs

Package last updated on 21 Sep 2025

Related posts