https://github.com/tufantunc/opentwig
opentwig ๐ฟ is an open source link in bio page generator.
https://github.com/tufantunc/opentwig
developer-tools good-first-issues hacktoberfest opensource-alternative
Last synced: 4 months ago
JSON representation
opentwig ๐ฟ is an open source link in bio page generator.
- Host: GitHub
- URL: https://github.com/tufantunc/opentwig
- Owner: tufantunc
- License: mit
- Created: 2025-09-10T19:09:58.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-10-06T07:21:55.000Z (8 months ago)
- Last Synced: 2025-10-06T09:36:30.178Z (8 months ago)
- Topics: developer-tools, good-first-issues, hacktoberfest, opensource-alternative
- Language: JavaScript
- Homepage:
- Size: 104 KB
- Stars: 2
- Watchers: 0
- Forks: 6
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenTwig ๐ฟ
[](https://www.npmjs.com/package/opentwig)
[](https://www.npmjs.com/package/opentwig)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
[](https://github.com/tufantunc/opentwig/stargazers)
[](https://github.com/tufantunc/opentwig/issues)
[]()
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
```bash
# Create a new project
npx opentwig --init
# Edit the generated config.json with your information
# Then generate your page
npx opentwig
# Or use live preview with interactive editor
npx opentwig --live
```
### Prerequisites
- Node.js (v14 or higher)
- npm or yarn
## ๐ฅ Live Preview Mode (NEW!)
OpenTwig now includes a powerful live preview mode with an interactive configuration editor!
```bash
# Start live preview with config editor
npx opentwig --live
# Or using npm script
npm run live
```
**Features:**
- ๐จ **Interactive Sidebar Editor** - Edit all config options in a beautiful UI
- ๐ **Real-time Preview** - See changes instantly as you edit
- ๐พ **Auto-save** - Changes automatically save to config.json
- ๐ฑ **Responsive Layout** - Preview on the left, editor on the right
- ๐ผ๏ธ **Avatar Upload** - Upload and preview avatar images directly
- ๐ญ **Theme Switcher** - Switch between themes instantly
- ๐ **Drag & Drop Links** - Easily manage your links
- ๐ **Status Indicator** - Connection status and auto-save status
- ๐ฅ **Export Config** - Download your config as JSON
**How it works:**
1. Run `npx opentwig --live` to start the development server
2. The browser opens automatically showing your page preview
3. Use the sidebar editor to modify configuration
4. Changes are auto-saved to `config.json`
5. Preview updates in real-time
6. Press `Ctrl+C` to stop the server
7. Your `dist/` folder is ready for deployment!
## ๐ Configuration
OpenTwig uses a simple JSON configuration file (`config.json`) to define your page. Here's the complete configuration structure:
### With Avatar (Optional)
```json
{
"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)
```json
{
"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
| Option | Type | Description |
|--------|------|-------------|
| `theme` | string | Theme name (`default`, `dark`, `minimal`, `colorful`) |
| `url` | string | Your page URL (for Open Graph and QR codes) |
| `title` | string | Page title (appears in browser tab) |
| `name` | string | Your display name |
| `content` | string | Bio/description text |
| `minify` | boolean | Enable CSS minification (default: `true`) |
| `avatar` | object | **Optional** Avatar image configuration |
| `avatar.path` | string | **Optional** Path to your avatar image (supports PNG, JPG, JPEG, WebP) |
| `links` | array | Array of link objects with `url` and `title` |
| `footerLinks` | array | Footer links (can be URLs or modal dialogs) |
| `share` | object | Web 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
- SVG
**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:**
```json
{
"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 with gradient backgrounds and glassmorphism effects
- **Minimal**: Simplified, minimalist design with flat styling
- **Colorful**: Vibrant color scheme with animated gradients and shimmer effects
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
```bash
# Show help information
npx opentwig --help
# Create sample config.json
npx opentwig --init
# Generate page from config.json
npx opentwig
# Start live preview with config editor
npx opentwig --live
# Validate config.json
npx opentwig --validate-config
```
## ๐ 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
### Development Setup
If you want to contribute to OpenTwig or customize it locally:
```bash
# Clone the repository
git clone https://github.com/tufantunc/opentwig.git
cd opentwig
# Install dependencies
npm install
# Test the CLI
npm start -- --help
# Create a sample config for testing
npm start -- --init
# Test the build process
npm start
# Start live preview mode
npm run live
```
### Project Structure
```
opentwig/
โโโ src/
โ โโโ index.js # Main CLI entry point
โ โโโ constants.js # Application constants
โ โโโ live-ui/ # Live preview UI
โ โ โโโ index.html # Live editor page
โ โ โโโ styles.css # Live editor styles
โ โ โโโ preview.js # Preview management
โ โ โโโ editor.js # Config editor logic
โ โ โโโ sidebar.js # Sidebar components
โ โโโ utils/ # Core utilities
โ โโโ 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
โ โโโ startLiveServer.js # Live preview server
โ โโโ websocketServer.js # WebSocket handling
โ โโโ setupWatcher.js # Config file watcher
โ โโโ ...
โโโ theme/
โ โโโ default/ # Default theme
โ โ โโโ index.js # Theme template
โ โ โโโ style.css # Theme styles
โ โ โโโ components/ # Reusable components
โ โโโ dark/ # Dark theme
โ โโโ minimal/ # Minimal theme
โ โโโ colorful/ # Colorful theme
โโโ .github/ # GitHub templates
โ โโโ ISSUE_TEMPLATE/ # Issue templates
โ โโโ pull_request_template.md # PR template
โโโ dist/ # Generated output (gitignored)
```
### 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
## ๐ Showcase
Check out these amazing websites created with OpenTwig! These examples showcase sites made with OpenTwig:
### Featured Sites
- **[Tufan Tunรง - My Social Links](https://links.tufantunc.com)** - My social links, used default theme with avatar
### Submit Your Site
Have you created a website with OpenTwig? We'd love to showcase it! You can add your site to our showcase in two ways:
1. **Create an Issue** - Use our [showcase submission template](.github/ISSUE_TEMPLATE/showcase_submission.md)
2. **Submit a Pull Request** - Add your site directly to the showcase section in this README
#### Guidelines for Showcase Submissions
- โ
Your site must be live and accessible
- โ
Use OpenTwig to generate the site
- โ
Keep descriptions concise (1-2 sentences max)
#### What We Look For
- Creative use of themes and customization
- Different use cases (personal, business, portfolio, etc.)
- Good examples of various configuration options
- Sites that inspire other users
## ๐ License
MIT License - see [LICENSE](LICENSE) file for details
## ๐ค Contributing
OpenTwig is open source and welcomes contributions from the community! ๐
### Ways to Contribute
- ๐ **Report bugs** using our [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
- โจ **Suggest features** through our [feature request template](.github/ISSUE_TEMPLATE/feature_request.md)
- ๐ **Improve documentation** using our [documentation improvement template](.github/ISSUE_TEMPLATE/documentation_improvement.md)
- ๐ **Submit to showcase** using our [showcase submission template](.github/ISSUE_TEMPLATE/showcase_submission.md)
- ๐จ **Create themes** - add new visual styles and layouts
- ๐ง **Fix issues** - tackle open issues and improve the codebase
- ๐ **Translate** - help translate documentation and content
### Getting Started
1. **Read our [Contributing Guide](CONTRIBUTING.md)** - Complete guide for contributors
2. **Check our [Code of Conduct](CODE_OF_CONDUCT.md)** - Community guidelines
3. **Look for `good first issue` labels** - Perfect for newcomers
4. **Fork, code, and submit a PR** - Standard open source workflow
### Hacktoberfest 2025
๐ This repository participates in **Hacktoberfest 2025**!
- Look for issues with `hacktoberfest` and `good first issue` labels
- Follow our issue and PR templates
- Make meaningful contributions that benefit the project
- Review our [Contributing Guide](CONTRIBUTING.md) before starting
### Contributors
We appreciate all contributors! Contributors will be:
- Listed here (if desired)
- Mentioned in release notes for significant contributions
- Given priority for code reviews and feedback
## ๐ Links
- [GitHub Repository](https://github.com/tufantunc/opentwig)
- [NPM Package](https://www.npmjs.com/package/opentwig)
- [Issues](https://github.com/tufantunc/opentwig/issues)
- [Discussions](https://github.com/tufantunc/opentwig/discussions)
## ๐ง Config.json Validation
You can validate your configuration file using the CLI option:
```bash
npx opentwig --validate-config
```
### Available Commands
- `--help` - Show usage information
- `--init` - Create a sample config.json
- `--validate-config` - Validate the config.json file
- `build` - Compile the project files
- `start` - Run the project
- `test` - Execute the project tests