From 23e8d9b765033dae0e0071305d2911de4f983eab Mon Sep 17 00:00:00 2001 From: Dillard Blom Date: Sat, 11 Jul 2026 02:48:05 +0200 Subject: [PATCH] Rebrand to QRForge (local only - do not push before domain confirmed) Applies the approved QRForge brand kit throughout the app: - New logo/icon SVGs, favicon set (ico/svg/png), apple-touch-icon, all copied from the approved brand kit into src/dist/img/brand/. Old Symbol_WhiteBlue.png/DynamicQRCode_Original.png removed (unused after the swap). - Sidebar brand image/text, login and change-password page logos, all tags, manifest.json name/theme-color, and the PWA icons (dist/img/icon-192.png/icon-512.png, same filenames so no other reference needed to change) updated to QRForge branding and the #2563EB brand blue. - New about.php page (+ sidebar link): credits the original upstream fork (Giandonato Inverso) and chillerlan/php-qrcode, links to the free qr.ensembia.com try-out, the commercial www.qrforge.eu product page, and this GitHub repo for self-hosters. - Footer now reads "QRForge" + "About / credits" + "Version 3.0" (replaces the inherited "PHP Qrcode Generator by Giandonato Inverso" / "Version 2.3.0" line - full credit moved to the About page instead). - README.md rewritten: current feature set (all 16 static qr types, presets, scanner, PWA, location search, roles), qr.ensembia.com as the free try-out, www.qrforge.eu as the commercial product page, corrected Docker Compose setup steps (.env is required now, the old README still described the single-file demo setup from the original upstream fork). IMPORTANT: not pushed to origin/gitea. Per user instruction, no push until qrforge.eu domain registration is confirmed. --- README.md | 116 ++++++++++++------------ src/about.php | 101 +++++++++++++++++++++ src/batch_qrcode.php | 2 +- src/change_password.php | 4 +- src/dist/img/DynamicQRCode_Original.png | Bin 7638 -> 0 bytes src/dist/img/Symbol_WhiteBlue.png | Bin 1198 -> 0 bytes src/dist/img/brand/apple-touch-icon.png | Bin 0 -> 2704 bytes src/dist/img/brand/favicon-16.png | Bin 0 -> 476 bytes src/dist/img/brand/favicon-32.png | Bin 0 -> 755 bytes src/dist/img/brand/favicon.svg | 11 +++ src/dist/img/brand/icon-inverse.svg | 11 +++ src/dist/img/brand/icon.svg | 11 +++ src/dist/img/brand/logo-stacked.svg | 12 +++ src/dist/img/brand/logo.svg | 12 +++ src/dist/img/icon-192.png | Bin 6822 -> 2845 bytes src/dist/img/icon-512.png | Bin 26495 -> 7605 bytes src/dynamic_qrcode.php | 2 +- src/dynamic_qrcodes.php | 2 +- src/favicon.ico | Bin 0 -> 32038 bytes src/includes/footer.php | 5 +- src/includes/head.php | 7 +- src/includes/sidebar.php | 10 +- src/index.php | 2 +- src/login.php | 4 +- src/manifest.json | 6 +- src/scan_qrcode.php | 2 +- src/static_qrcode.php | 2 +- src/static_qrcodes.php | 2 +- src/user.php | 2 +- src/users.php | 2 +- 30 files changed, 250 insertions(+), 78 deletions(-) create mode 100644 src/about.php delete mode 100644 src/dist/img/DynamicQRCode_Original.png delete mode 100644 src/dist/img/Symbol_WhiteBlue.png create mode 100644 src/dist/img/brand/apple-touch-icon.png create mode 100644 src/dist/img/brand/favicon-16.png create mode 100644 src/dist/img/brand/favicon-32.png create mode 100644 src/dist/img/brand/favicon.svg create mode 100644 src/dist/img/brand/icon-inverse.svg create mode 100644 src/dist/img/brand/icon.svg create mode 100644 src/dist/img/brand/logo-stacked.svg create mode 100644 src/dist/img/brand/logo.svg create mode 100644 src/favicon.ico diff --git a/README.md b/README.md index 49831ee..40b2e37 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,69 @@ -<p align="center"><img src="https://www.giandonatoinverso.it/qrcode/dist/img/DynamicQRCode_Original.png"></p> +<p align="center"><img src="src/dist/img/brand/logo.svg" alt="QRForge" width="320"></p> -**PHP Dynamic Qr code** is a script that allows the generation and saving of dynamic and static QR codes. It has a clean, responsive, and user-friendly design. It is based on [AdminLte](https://adminlte.io/), the "Best open source admin dashboard & control panel theme. Built on top of Bootstrap" and [Core PHP Admin Panel](https://github.com/chetans9/core-php-admin-panel), a simple Admin Panel written in core PHP that contains an implementation of general features you might need in your website admin panel like: record management (CRUD), secure authentication, pagination, filters. +<p align="center"><strong>Self-hosted, open-source QR code generator.</strong></p> -[LIVE DEMO](https://qrcode.giandonatoinverso.dev/) +**QRForge** creates and manages static and dynamic QR codes from a clean, +responsive control panel. It's a security-hardened, actively maintained fork +of the original [PHP Dynamic Qr code](https://github.com/giandonatoinverso/PHP-Dynamic-Qr-code) +project by Giandonato Inverso, built on [AdminLTE](https://adminlte.io/). -username: admin - -password: admin - -[DOCUMENTATION](https://giandonatoinverso.it/qrcode/documentation) +- **Try it free:** [qr.ensembia.com](https://qr.ensembia.com) - fully functional OSS test + instance, register your own account any time. +- **Commercial VIP edition** (self-service create-rights, logo-embedded QR codes): + [www.qrforge.eu](https://www.qrforge.eu). +- **Self-host it yourself:** this repository, MIT-licensed. # Features -- **#1 Dynamic Qr code generator on GitHub with a database to store Qr codes** -- Create unlimited Qr codes -- Docker compose support -- Control panel with 2 access levels -- Multi-account -- Dashboard with advanced statistics on Qr codes created and on scans -- Bulk download, bulk delete -- Dynamic Qr code - - Create, modify, and delete Qr codes - - You can download your Qr codes when you want - - URL shortener with redirect - - Enable or disable the link redirect -- Static Qr code - - Text QR Code - - Email QR Code - - Phone QR Code - - Sms QR Code - - Whatsapp QR Code - - Skype QR Code - - Location QR Code - - Vcard QR Code - - Event/calendar QR Code - - Bookmark QR Code - - Wifi QR Code - - Paypal QR Code - - Bitcoin QR Code -- Customization of Qr codes - - 6 formats for images - - Foreground color - - Background color - - 4 levels of precision - - 10 sizes -- Responsive bootstrap-based design -- Easy to understand and expand code -- Full OOP with classes and well-documented +- Dynamic QR codes with a database-backed URL shortener + - Create, edit, delete, enable/disable the redirect + - Download any time, bulk download/delete + - Batch-generate from a CSV file +- 16 static QR code types: Text, Email, Phone, SMS, WhatsApp, Skype, Location, + vCard, Event/calendar, Bookmark, WiFi (incl. WPA3), PayPal, Bitcoin, 2FA, + App Link (Android intent / universal links), Bluetooth +- QR code styling: 6 export formats, foreground/background color, 4 precision + levels, 10 sizes, optional label text below the code (custom font + size), + optional icon shown above the code, save/load your own style presets +- Address search (OpenStreetMap Nominatim) for Location QR codes +- Built-in QR scanner (camera or image upload, decodes entirely client-side) +- Installable as a PWA +- Role-based access: `super` (full access + user management), `admin` + (scoped to their own codes and sub-users), `user` (read-only, with + optional per-account create rights and view toggles set by an admin) +- Dashboard with QR/scan statistics and a 7-day activity chart +- CSRF protection, login rate limiting, session hardening, audit log +- Docker Compose setup, both a dev image and a production Nginx + PHP-FPM image -## What is included +# What is included -- PHP files -- .sql file with sample data -- JS files -- CSS files -- Docker compose file +- PHP 8.4 application source +- Database schema + migrations +- Docker Compose files (dev and production) +- CSS/JS assets -## Setup with docker compose -1. download docker-compose.yml file -2. Start docker stack -```bash -docker compose build --no-cache && docker compose up -d -``` -3. Open your browser at http://localhost:80 and login with (username: superadmin, password: superadmin) +# Setup with Docker Compose + +1. Clone this repository. +2. Copy `.env.example` to `.env` and set a real `DATABASE_PASSWORD` / + `MYSQL_ROOT_PASSWORD`. +3. Start the stack: + ```bash + docker compose up -d --build + ``` +4. Open `http://localhost` and log in with `superadmin` / `superadmin`. You'll + be required to set a new password on first login. + +For a production deployment behind a reverse proxy, use +`docker-compose.prod.yml` (Nginx + PHP-FPM) instead of the dev stack. + +# Credits + +- Originally forked from [PHP Dynamic Qr code](https://github.com/giandonatoinverso/PHP-Dynamic-Qr-code) + by Giandonato Inverso. +- QR code rendering powered by [chillerlan/php-qrcode](https://github.com/chillerlan/php-qrcode). +- Admin panel UI built on [AdminLTE](https://adminlte.io/). + +# License + +MIT - see [LICENSE](LICENSE). diff --git a/src/about.php b/src/about.php new file mode 100644 index 0000000..697a10f --- /dev/null +++ b/src/about.php @@ -0,0 +1,101 @@ +<?php +require_once 'includes/bootstrap.php'; +require_once BASE_PATH . '/includes/auth_validate.php'; +?> +<!DOCTYPE html> +<html lang="en"> + <title>About - QRForge + + + + +
+ + + + + + + + + +
+ +
+
+
+
+

About

+
+
+
+
+ + + +
+
+
+
+ QRForge +

Self-hosted static and dynamic QR code generator. Version 3.0.

+
+
+ +
+
+

Commercial version

+
+
+

+ This is the free, open-source (MIT) edition of QRForge. It runs unmodified + as a live, fully functional try-out at + qr.ensembia.com - + register a free account there any time. +

+

+ The commercial VIP edition (paid create-rights and logo-embedded QR codes) + is a separate product built on the same OSS core - see + www.qrforge.eu for + pricing and details. +

+
+
+ +
+
+

Self-hosting

+
+
+

+ Prefer to run your own instance? QRForge is MIT-licensed and available on + GitHub: + github.com/dillardblom/QR-app-selfhosted. +

+
+
+ +
+
+

Credits

+
+
+

+ Originally forked from + PHP Qrcode Generator by Giandonato Inverso. +

+

+ QR code rendering is powered by the + chillerlan/php-qrcode + library. +

+
+
+
+
+
+ + + + + diff --git a/src/batch_qrcode.php b/src/batch_qrcode.php index 4201b7d..c86023d 100644 --- a/src/batch_qrcode.php +++ b/src/batch_qrcode.php @@ -99,7 +99,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ?> - Qrcode Generator + QRForge diff --git a/src/change_password.php b/src/change_password.php index 0117c2d..ba65a92 100644 --- a/src/change_password.php +++ b/src/change_password.php @@ -47,13 +47,13 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ?> -Change password - Qrcode Generator +Change password - QRForge