Estee Tey 817429b49e
Add CC and BCC fields to email template (#169)
* Enhance email data template for cc/bcc

* test(dataEncoding.test.ts): add test case for handling multiple emails in CC/BCC fields correctly in generateEmailData function
test(dataEncoding.test.ts): add test case for identifying email links with multiple CC/BCC addresses in detectDataType function

* Docs: Add @olvier as a contributor
2025-06-09 17:32:22 +08:00
2025-03-30 15:25:46 +08:00
2024-10-06 15:25:58 +08:00
2025-06-08 12:41:59 +08:00
2025-05-31 15:49:39 +08:00
2025-05-03 21:03:01 +08:00
2025-03-13 12:29:50 +08:00
2025-05-03 21:03:01 +08:00
2025-05-03 21:03:01 +08:00
2025-05-03 21:03:01 +08:00
2023-12-31 19:18:05 +08:00
2023-12-31 19:18:05 +08:00

Mini QR

License: GPL v3

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

Features

  • 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 mini-qr.vercel.app
    • Click the install icon () in the address bar
    • Click "Install" in the prompt
  2. Mobile (Android):

    • Visit mini-qr.vercel.app
    • Tap the "Add to Home Screen" option in your browser menu
    • Tap "Install" or "Add"
  3. iOS (Safari):

    • Visit mini-qr.vercel.app
    • 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)

https://github.com/user-attachments/assets/c6db8fd5-ec36-43be-b6e3-a42e1b7dc3cb

Data templates (added in v0.16.0)

https://github.com/user-attachments/assets/863f9330-2645-4d23-88aa-04f5f5beaa67

Basic frame settings (added in v0.15.0)

https://github.com/user-attachments/assets/e160d60d-3c7f-4bbb-908c-efd11fec20e8

Scanning QR code (added in v0.13.0)

https://github.com/user-attachments/assets/5ad58b35-0a16-43a4-839a-e2197bfc273a

Batch data export (added in v0.9.0)

https://github.com/user-attachments/assets/fef17e6a-c226-4136-9501-8d3e951671e0

MVP - presets, languages, dark/light mode (v0.3.0)

https://github.com/lyqht/mini-qr/assets/35736525/991b2d7e-f168-4354-9091-1678d2c1bddb

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.

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

Customization

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

💻 📖
tecking
tecking

🌍
Patipat Chewprecha
Patipat Chewprecha

🌍 💻 📖
Rahul Somasundaram
Rahul Somasundaram

💻
Johan Ekström
Johan Ekström

💻
Zain Fathoni
Zain Fathoni

🎨
Francesco
Francesco

🌍
Klemens Graf
Klemens Graf

💻
林都
林都

💻 🌍
seals187
seals187

👀
olvier
olvier

👀
Add your contributions
Description
Create & scan cute qr codes easily 👾
Readme GPL-3.0 24 MiB
Languages
Vue 59.4%
TypeScript 30.6%
JavaScript 3.4%
Shell 3.2%
CSS 2.4%
Other 1%