diff --git a/README.md b/README.md index 49831ee..40b2e37 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,69 @@ -

+

QRForge

-**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. +

Self-hosted, open-source QR code generator.

-[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 @@ + + + + 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
diff --git a/src/dist/img/DynamicQRCode_Original.png b/src/dist/img/DynamicQRCode_Original.png deleted file mode 100644 index 21f6c9f..0000000 Binary files a/src/dist/img/DynamicQRCode_Original.png and /dev/null differ diff --git a/src/dist/img/Symbol_WhiteBlue.png b/src/dist/img/Symbol_WhiteBlue.png deleted file mode 100644 index 4581701..0000000 Binary files a/src/dist/img/Symbol_WhiteBlue.png and /dev/null differ diff --git a/src/dist/img/brand/apple-touch-icon.png b/src/dist/img/brand/apple-touch-icon.png new file mode 100644 index 0000000..74138c3 Binary files /dev/null and b/src/dist/img/brand/apple-touch-icon.png differ diff --git a/src/dist/img/brand/favicon-16.png b/src/dist/img/brand/favicon-16.png new file mode 100644 index 0000000..f06a69d Binary files /dev/null and b/src/dist/img/brand/favicon-16.png differ diff --git a/src/dist/img/brand/favicon-32.png b/src/dist/img/brand/favicon-32.png new file mode 100644 index 0000000..bd60692 Binary files /dev/null and b/src/dist/img/brand/favicon-32.png differ diff --git a/src/dist/img/brand/favicon.svg b/src/dist/img/brand/favicon.svg new file mode 100644 index 0000000..cff6f4c --- /dev/null +++ b/src/dist/img/brand/favicon.svg @@ -0,0 +1,11 @@ + + QRForge icon + QR-block mark with outbound arrow tile. + + + + + + + + diff --git a/src/dist/img/brand/icon-inverse.svg b/src/dist/img/brand/icon-inverse.svg new file mode 100644 index 0000000..adc7dd4 --- /dev/null +++ b/src/dist/img/brand/icon-inverse.svg @@ -0,0 +1,11 @@ + + QRForge icon + QR-block mark with outbound arrow tile. + + + + + + + + diff --git a/src/dist/img/brand/icon.svg b/src/dist/img/brand/icon.svg new file mode 100644 index 0000000..cff6f4c --- /dev/null +++ b/src/dist/img/brand/icon.svg @@ -0,0 +1,11 @@ + + QRForge icon + QR-block mark with outbound arrow tile. + + + + + + + + diff --git a/src/dist/img/brand/logo-stacked.svg b/src/dist/img/brand/logo-stacked.svg new file mode 100644 index 0000000..54cc9ee --- /dev/null +++ b/src/dist/img/brand/logo-stacked.svg @@ -0,0 +1,12 @@ + + QRForge stacked logo + Stacked QRForge logo. + + + + + + + + QRForge + diff --git a/src/dist/img/brand/logo.svg b/src/dist/img/brand/logo.svg new file mode 100644 index 0000000..a0ad6e0 --- /dev/null +++ b/src/dist/img/brand/logo.svg @@ -0,0 +1,12 @@ + + QRForge logo + QRForge wordmark with a QR-block mark and outbound arrow tile. + + + + + + + + QRForge + diff --git a/src/dist/img/icon-192.png b/src/dist/img/icon-192.png index ae8e358..e1b6787 100644 Binary files a/src/dist/img/icon-192.png and b/src/dist/img/icon-192.png differ diff --git a/src/dist/img/icon-512.png b/src/dist/img/icon-512.png index 7f11c06..f36903c 100644 Binary files a/src/dist/img/icon-512.png and b/src/dist/img/icon-512.png differ diff --git a/src/dynamic_qrcode.php b/src/dynamic_qrcode.php index cfbd8bc..5da8678 100644 --- a/src/dynamic_qrcode.php +++ b/src/dynamic_qrcode.php @@ -60,7 +60,7 @@ if($_SERVER["REQUEST_METHOD"] === "POST" && !isset($_POST["edit"]) && !isset($_P ?> - Qrcode Generator + QRForge diff --git a/src/dynamic_qrcodes.php b/src/dynamic_qrcodes.php index a790939..cf01cac 100644 --- a/src/dynamic_qrcodes.php +++ b/src/dynamic_qrcodes.php @@ -29,7 +29,7 @@ $total_pages = $db->totalPages; - Qrcode Generator + QRForge diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000..1d659c7 Binary files /dev/null and b/src/favicon.ico differ diff --git a/src/includes/footer.php b/src/includes/footer.php index d008efa..b9c7be9 100644 --- a/src/includes/footer.php +++ b/src/includes/footer.php @@ -6,9 +6,10 @@
diff --git a/src/includes/head.php b/src/includes/head.php index 054fbd9..ae16328 100644 --- a/src/includes/head.php +++ b/src/includes/head.php @@ -2,9 +2,12 @@ - + - + + + + diff --git a/src/includes/sidebar.php b/src/includes/sidebar.php index 8d8d81f..6deaf13 100644 --- a/src/includes/sidebar.php +++ b/src/includes/sidebar.php @@ -2,9 +2,9 @@