Skip to content

lyqht/mini-qr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Mini QR

License: GPL v3

An app to create beautiful QR codes and scan various QR code types.

Features

Review of 'MiniQR' that makes it easy to create good-looking QR codes - Gigazine, an Osaka based tech news website, one of the top 25 news sites by TIME.com

  • βœ… Accessible: minimally WCAG A compliant
  • 🎨 Customizable colors and styles
  • πŸ–ΌοΈ Export to PNG, JPG & SVG
  • πŸ“‹ Copy to clipboard
  • πŸŒ“ Light/dark/system-preference mode toggle
  • 🎲 Randomize style button
  • 🌐 Available in 30+ languages
  • πŸ’Ύ Save & Load QR Code config
  • πŸ–ΌοΈ Upload custom image for logo
  • 🎭 Presets: Pre-crafted QR code styles
  • πŸ–ŒοΈ Frame customization: Add text labels and style the frame around your QR code
  • πŸ›‘οΈ Error correction level: affects the size of the QR code and logo within. Use lower correction levels for bigger pieces of data to ensure that it can be read.
  • πŸ“± QR Code Scanner: Scan QR codes using your camera or by uploading images, with intelligent detection for URLs, emails, phone numbers, WiFi credentials, and more
  • πŸ“¦ Batch data export: Import a CSV file with multiple data strings and export QR codes for them all at once.
  • πŸ“² PWA Support: Install MiniQR as a desktop or mobile app
  • πŸ“ Data templates: Support for various data types including text, URLs, emails, phone numbers, SMS, WiFi credentials, vCards, locations, and calendar events

Installation as PWA

MiniQR can also be installed as a Progressive Web App (PWA) on your device
  1. Desktop (Chrome/Edge):

    • Visit MiniQR's website
    • Click the install icon (βž•) in the address bar
    • Click "Install" in the prompt
  2. Mobile (Android):

    • Visit MiniQR's website
    • Tap the "Add to Home Screen" option in your browser menu
    • Tap "Install" or "Add"
  3. iOS (Safari):

    • Visit MiniQR's website
    • Tap the Share button
    • Scroll down and tap "Add to Home Screen"
    • Tap "Add"

Once installed, MiniQR will work offline and provide a native app-like experience.

Demo

Try it out here ✨

Frame text included in batch export (added in v0.17.0)
BatchExportWithFrameText.mp4
Data templates (added in v0.16.0)
DataToEncodeModal.mp4
Basic frame settings (added in v0.15.0)
Frame.settings.mp4
Scanning QR code (added in v0.13.0)
Demo-QRScan.mp4
Batch data export (added in v0.9.0)
batch_data_export.mp4
MVP - presets, languages, dark/light mode (v0.3.0)
MiniQR-demo.mp4

Self-hosting

Self-hosting with Docker πŸ‹

Mini-QR can easily be self-hosted using Docker. We provide a docker-compose.yml file and a production-ready multi-stage Dockerfile.

Quick Start (using prebuilt image)

wget https://github.com/lyqht/mini-qr/raw/main/docker-compose.yml

docker compose up -d

This will pull the latest production image from GitHub Container Registry and start the app at http://localhost:8081.

To build and run locally (for development or custom builds)

docker compose up -d --build

Or build and run manually:

docker build -t mini-qr .
docker run -d -p 8081:8080 mini-qr

Self-hosting without Docker 🌐

You can also simply compile the application directly using NPM and Vite like follows:

git clone https://github.com/lyqht/mini-qr.git
cd mini-qr
npm install
npm run build

From there, the application will be build into dist folder and this folder can simply be hosted from any kind of web server.

An example using PHP's built-in web server:

cd dist
php -S localhost:8080

Customization

An example of a self-hosted website with a modified MiniQR app with specific language and preset: https://qrcode.outils.restosducoeur.org/

Environment Variables

Variable Description Default
BASE_PATH Base path for deployment /
VITE_HIDE_CREDITS Set to "true" to hide credits in the footer "false"
VITE_DEFAULT_PRESET Name of the default QR code preset to load (e.g., "lyqht") ""
VITE_DEFAULT_DATA_TO_ENCODE Default data to encode when the app first loads ""
VITE_QR_CODE_PRESETS JSON string defining custom QR code presets. E.g., '[{"name":"c1","data":"hi"}]' "[]"
VITE_FRAME_PRESET Name of the default frame preset to load (e.g., "default") ""
VITE_FRAME_PRESETS JSON string defining custom frame presets. E.g., '[{"name":"fA","text":"QR"}]' "[]"
VITE_DISABLE_LOCAL_STORAGE Set to "true" to disable loading saved settings from local storage on startup "false"

Docker configuration

  • You can edit nginx.conf or mount your own static files by uncommenting the volumes section in docker-compose.yml.
  • The production image uses Nginx for optimal static file serving.
  • The .dockerignore file is included for smaller, faster builds.
  • Set BASE_PATH=/your-path to deploy the app under a subdirectory (e.g., for hosting at domain.com/your-path).
  • If you want to have a default preset to be fixed, you should set VITE_DISABLE_LOCAL_STORAGE=true

Examples

Deploy at root path (default):

docker compose up -d

Deploy at subdirectory /mini-qr:

BASE_PATH=/mini-qr docker compose up -d

For custom builds with specific BASE_PATH:

docker build --build-arg BASE_PATH=/mini-qr -t mini-qr .
docker run -d -p 8081:8080 mini-qr

Contributing

All Contributors Crowdin

Translations and bug fixes are welcome!

Note

For other issues, please create an issue/ raise it on the discussion board before working on them, as they may be rejected if they are not aligned with @lyqht's goals for this project.

See CONTRIBUTING.md for more details.

Contributors

Thank you for everyone here for taking their time out to improve MiniQR 🧑

tenekev
tenekev

πŸ’» πŸ“–
Zain Fathoni
Zain Fathoni

🎨
Francesco
Francesco

🌍
Rahul Somasundaram
Rahul Somasundaram

πŸ’»
tecking
tecking

🌍
David Xie
David Xie

πŸ’»
Patipat Chewprecha
Patipat Chewprecha

🌍 πŸ’» πŸ“–
Johan EkstrΓΆm
Johan EkstrΓΆm

πŸ’»
Klemens Graf
Klemens Graf

πŸ’»
ζž—ιƒ½
ζž—ιƒ½

πŸ’» 🌍
seals187
seals187

πŸ‘€
olvier
olvier

πŸ‘€
Matthew Berryman
Matthew Berryman

πŸ’»
Mr-robot-ops
Mr-robot-ops

🌍
danktankk
danktankk

πŸ’»
Joseph Claus
Joseph Claus

πŸ“–
Joe Simpson
Joe Simpson

πŸ“–
Add your contributions