Version 1.0

QRwave Documentation

Professional QR Code Generator with Advanced Styling, Live Preview, and Multiple Export Formats

Last Updated
January 22, 2026

πŸ“– Overview

QRwave is a professional, feature-rich QR code generator built with pure PHP and modern web technologies. It provides an intuitive interface for creating customized QR codes with advanced styling options, live preview, and multiple export formats.

⚑
Pure PHP

No framework required. Works with PHP 7.4+ on any web server.

🎨
Modern UI

Beautiful, responsive interface built with Bootstrap 5.

🌍
Multi-language

Support for 7 languages with easy translation.

πŸ’‘ Quick Start: Upload the files to your server and access the index.php file. No database or complex setup required!

✨ Features

Content Types (8 Options)

  • 1 Text - Plain text content
  • 2 URL/Website - Direct link to any website
  • 3 Email - Email address with subject and body
  • 4 Phone - Direct phone number dialing
  • 5 SMS - Text message with phone and content
  • 6 WiFi - Network credentials (SSID, password, encryption)
  • 7 vCard - Contact information (name, org, title, phone, email, website)
  • 8 Location - Geographic coordinates with OpenStreetMap search

Styling Options

  • βœ… Custom foreground & background colors
  • βœ… Transparent background option
  • βœ… Linear & radial gradients
  • βœ… Gradient rotation control (0-360Β°)
  • βœ… Adjustable QR size (220-560px)
  • βœ… Configurable margin
  • βœ… 4 error correction levels (L, M, Q, H)
  • βœ… 6 dot pattern styles
  • βœ… Custom corner markers
  • βœ… Separate pattern & marker colors

Branding & Overlays

  • πŸ–ΌοΈ Logo upload with size control
  • πŸ–ΌοΈ Logo margin adjustment
  • πŸ–ΌοΈ Hide dots behind logo option
  • πŸ’§ Watermark image support
  • πŸ’§ Opacity control (5-80%)
  • πŸ’§ Size adjustment

Frame & Layout

  • 🎯 3 frame styles: Simple, Rounded, Badge
  • 🎯 Custom frame color
  • 🎯 Label text with color customization
  • πŸ“ 3 layout options: Controls left, Controls right, Stacked
  • 🎨 Theme color picker

Export Formats

πŸ“· PNG

High-quality raster image

πŸ“ SVG

Scalable vector format

πŸ“„ PDF

A4 page centered

πŸš€ Installation

Server Requirements

PHP 7.4 or higher (PHP 8.x recommended)
Apache or Nginx web server
Internet access for CDN assets (optional - can use local files)

Installation Steps

1
Upload Files

Upload the entire QRwave folder to your web server's document root directory.

2
Set Permissions

Ensure the web server has read access to all files and write access to any cache directories (if added).

3
Access the Application

Open your browser and navigate to the URL where you uploaded the files (e.g., https://yourdomain.com/QRwave/).

4
Configure (Optional)

Edit config/app.php to customize default language, theme color, and map provider settings.

βœ… Done! Your QR code generator is now ready to use. No database setup required!

βš™οΈ Configuration

All configuration is managed through the config/app.php file. Here's the complete configuration structure:

<?php

return [
    // Application name
    'name' => 'QRwave',
    
    // Default language
    'default_lang' => 'en',
    
    // Available languages
    'languages' => [
        'en' => 'English',
        'es' => 'EspaΓ±ol',
        'fr' => 'FranΓ§ais',
        'de' => 'Deutsch',
        'it' => 'Italiano',
        'pt' => 'PortuguΓͺs',
        'zh' => 'δΈ­ζ–‡'
    ],
    
    // Theme configuration
    'theme' => [
        'primary' => '#6f42c1'  // Primary theme color
    ],
    
    // Map provider settings
    'maps' => [
        'provider' => 'openstreetmap',  // or 'google'
        'google_key' => ''  // Google Maps API key (if using Google)
    ],
    
    // Demo mode settings
    'demo' => [
        'disable_exports' => true  // Disable downloads in demo mode
    ]
];

Configuration Options

Option Type Description
name string Application name displayed in the UI
default_lang string Default language code (must exist in languages array)
languages array Available languages with their display names
theme.primary hex Primary theme color for UI elements
maps.provider string Map provider: 'openstreetmap' or 'google'
maps.google_key string Google Maps API key (required if using Google)
demo.disable_exports boolean Disable download buttons in demo mode

πŸ“– Usage Guide

Creating a QR Code

Follow these steps to create a customized QR code:

1
Select Content Type

Choose from 8 content types: Text, URL, Email, Phone, SMS, WiFi, vCard, or Location.

2
Enter Content

Fill in the required fields for your selected content type. The QR code updates in real-time.

3
Customize Style

Adjust colors, gradients, patterns, markers, and other styling options in the Style and Pattern sections.

4
Add Branding (Optional)

Upload a logo or watermark, adjust size and opacity settings in the Logo and Watermark sections.

5
Add Frame (Optional)

Enable and customize a frame with label in the Frame section.

6
Export

Download your QR code in PNG, SVG, or PDF format using the Export buttons.

Content Type Examples

Email QR Code

Email: contact@example.com
Subject: Inquiry
Body: Hello, I'd like to learn more about your services.

WiFi QR Code

SSID: MyNetwork
Password: secret123
Encryption: WPA/WPA2

vCard QR Code

First Name: John
Last Name: Doe
Organization: Acme Inc.
Title: Developer
Phone: +1 555 0100
Email: john@example.com
Website: https://example.com

Location QR Code

Search: "Eiffel Tower, Paris"
Or manually enter:
Latitude: 48.8584
Longitude: 2.2945

🎨 Customization

Theme Colors

Customize the primary theme color by editing config/app.php:

'theme' => [
    'primary' => '#6f42c1'  // Change to your preferred color
]

CSS Customization

Override styles by creating a custom CSS file and including it after app.css:

/* Example: Custom button styles */
.btn-primary {
    background: linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%);
}

/* Example: Custom card styling */
.card {
    border-radius: 24px;
    box-shadow: 0 8px 40px rgba(0,0,0,0.1);
}

Adding New Languages

1
Create Translation File

Copy config/lang/en.php and rename it to your language code (e.g., ja.php for Japanese).

2
Translate Strings

Translate all values in the array while keeping the keys unchanged.

3
Register Language

Add the language to the languages array in config/app.php.

// config/app.php
'languages' => [
    'en' => 'English',
    'es' => 'EspaΓ±ol',
    'ja' => 'ζ—₯本θͺž'  // Added Japanese
]

🌍 Languages

QRwave supports multiple languages out of the box. Translation files are located in config/lang/.

Available Languages

Code Language File
en English config/lang/en.php
es EspaΓ±ol config/lang/es.php
fr FranΓ§ais config/lang/fr.php
de Deutsch config/lang/de.php
it Italiano config/lang/it.php
pt PortuguΓͺs config/lang/pt.php
zh δΈ­ζ–‡ config/lang/zh.php

Translation File Structure

<?php

return [
    'brand' => 'QRwave',
    'tagline' => 'Responsive QR Code generator',
    'nav_home' => 'Generator',
    'nav_demo' => 'Demo',
    'content_title' => 'Content',
    'content_type' => 'Type',
    // ... more translation keys
];

πŸ“€ Export Options

QRwave supports three export formats, each optimized for different use cases:

πŸ“· PNG
Raster Format
  • βœ“ High quality
  • βœ“ Widely compatible
  • βœ“ Perfect for web
  • βœ“ Fixed resolution
Best for: Websites, social media, digital displays
πŸ“ SVG
Vector Format
  • βœ“ Scalable
  • βœ“ Small file size
  • βœ“ Editable
  • βœ“ Print quality
Best for: Print materials, logos, large formats
πŸ“„ PDF
Document Format
  • βœ“ A4 page
  • βœ“ Centered layout
  • βœ“ Print ready
  • βœ“ Easy sharing
Best for: Documents, brochures, handouts

Export Settings

Exports can be disabled in demo mode via configuration:

'demo' => [
    'disable_exports' => true  // Set to false to enable exports
]

πŸ”Œ API Reference

QRwave uses the qr-code-styling library for QR code generation. Below are the key configuration options:

QR Code Options

Option Type Description
width number QR code width in pixels (220-560)
height number QR code height in pixels (220-560)
data string QR code content/data
margin number Margin around QR code (0-20)
qrOptions.errorCorrectionLevel string Error correction: 'L', 'M', 'Q', 'H'

Dots Options

Option Type Values
type string 'square', 'dots', 'rounded', 'classy', 'classy-rounded', 'extra-rounded'
color hex Dots color (e.g., '#111111')
gradient.type string 'linear', 'radial'
gradient.rotation number Rotation angle in radians

Corner Options

Option Type Values
cornersSquareOptions.type string 'square', 'extra-rounded'
cornersDotOptions.type string 'square', 'dot'
color hex Corner color

Image Options

Option Type Description
image string Base64 image data URL
imageOptions.margin number Logo margin (0-12)
imageOptions.imageSize number Logo size as percentage (0.1-0.4)
imageOptions.hideBackgroundDots boolean Hide dots behind logo

πŸ”§ Troubleshooting

Common Issues

Solution: Ensure JavaScript is enabled in your browser. Check browser console for errors. Verify CDN libraries are accessible.

Solution: Check if demo mode is enabled. Set 'disable_exports' => false in config/app.php. Ensure browser allows downloads.

Solution: Verify internet connection. OpenStreetMap service may be temporarily unavailable. Try using manual latitude/longitude entry.

Solution: Ensure uploaded images are valid (PNG, JPG, GIF). Check file size limits. Verify browser supports FileReader API.

Solution: Clear browser cache. Verify CSS file is loading. Check for conflicting styles in custom CSS files.

Error Messages

Error Cause Solution
"Invalid QR code data" Data too long for error correction level Increase error correction to H or reduce content length
"Image upload failed" File too large or invalid format Use smaller images (under 2MB) in PNG/JPG format
"Export failed" Browser security restriction Check browser permissions, try different browser

❓ FAQ

Yes! Download the CDN libraries (Bootstrap, jQuery, qr-code-styling, html2canvas, jsPDF) and update the script tags in public/index.php to use local paths instead of CDN URLs.

  1. Copy config/lang/en.php as a template
  2. Rename it to your language code (e.g., ja.php)
  3. Translate all string values
  4. Add the language to config/app.php in the languages array

Yes! Update the theme.primary value in config/app.php or use the theme color picker in the UI Layout section.

The UI allows sizes from 220px to 560px. You can modify this range in the HTML by changing the min and max attributes of the size slider.

No! All QR code generation happens client-side in the browser. No data is sent to or stored on the server.

Yes! Set 'provider' => 'google' in config/app.php and add your Google Maps API key to 'google_key'.

Set 'disable_exports' => false in config/app.php to enable export functionality. Remove the ?demo=1 parameter from URLs.

Yes! You can embed the QR generator in an iframe or integrate the JavaScript components directly into your existing pages.

πŸ“‹ Changelog

Version 1.0.0 - January 22, 2026
  • βœ… Initial release
  • βœ… 8 content types (Text, URL, Email, Phone, SMS, WiFi, vCard, Location)
  • βœ… Advanced styling options (colors, gradients, patterns, markers)
  • βœ… Logo and watermark support
  • βœ… Frame and label customization
  • βœ… 3 layout options
  • βœ… Export to PNG, SVG, PDF
  • βœ… Multi-language support (7 languages)
  • βœ… Live preview
  • βœ… Location search with OpenStreetMap
  • βœ… Professional UI with modern design
  • βœ… Responsive design
  • βœ… Demo mode

πŸ’¬ Support

If you need help with QRwave, please follow these steps:

1
Check Documentation

Review this documentation thoroughly, especially the FAQ and Troubleshooting sections.

2
Search for Solutions

Search online for similar issues or check the CodeCanyon comments section.

3
Contact Support

If you still need help, contact us through the CodeCanyon support system with:

  • Your purchase code
  • Detailed description of the issue
  • Screenshots or error messages
  • Steps to reproduce the problem
⚠️ Note: Customizations and new feature requests are offered as paid support. Please contact us for a quote.

Support Scope

βœ“ Included:
  • Bug fixes
  • Setup assistance
  • Configuration help
  • Feature clarification
βœ— Not Included:
  • Custom development
  • New features
  • Third-party integrations
  • Server configuration

πŸ“œ License

QRwave is licensed under the CodeCanyon Regular/Extended License. By purchasing this item, you agree to the following terms:

Regular License

  • Use in one end product (end users are not charged)
  • Includes future updates
  • 6 months support (can be extended to 12 months)

Extended License

  • Use in one end product (end users are charged)
  • Includes future updates
  • 6 months support (can be extended to 12 months)

What You Can Do

  • βœ“ Use in personal and commercial projects
  • βœ“ Customize the code to fit your needs
  • βœ“ Include in SaaS products (with Extended License)

What You Cannot Do

  • βœ— Resell or redistribute the item
  • βœ— Claim ownership of the code
  • βœ— Use in multiple products (purchase additional licenses)
πŸ“– Full License: Please review the complete CodeCanyon license terms for detailed information.

πŸ™ Credits

QRwave is built using the following open-source libraries and frameworks:

Library Version License Website
Bootstrap 5.3.3 MIT getbootstrap.com
jQuery 3.7.1 MIT jquery.com
QR Code Styling 1.5.0 MIT GitHub
html2canvas 1.4.1 MIT html2canvas.hertzen.com
jsPDF 2.5.1 MIT GitHub
Thank you! We appreciate your purchase and hope you enjoy using QRwave. Don't forget to rate it on CodeCanyon!