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 <title> 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.
@@ -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).
|
||||
|
||||
@@ -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</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
<body class="hold-transition sidebar-mini layout-fixed layout-navbar-fixed layout-footer-fixed">
|
||||
<div class="wrapper">
|
||||
<!-- Navbar -->
|
||||
<?php include './includes/navbar.php'; ?>
|
||||
<!-- /.navbar -->
|
||||
|
||||
<!-- Main Sidebar Container -->
|
||||
<?php include './includes/sidebar.php'; ?>
|
||||
<!-- /.Main Sidebar Container -->
|
||||
|
||||
<!-- Content Wrapper. Contains page content -->
|
||||
<div class="content-wrapper">
|
||||
<!-- Content Header (Page header) -->
|
||||
<div class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1 class="m-0 text-dark">About</h1>
|
||||
</div><!-- /.col -->
|
||||
</div><!-- /.row -->
|
||||
</div><!-- /.container-fluid -->
|
||||
</div>
|
||||
<!-- /.content-header -->
|
||||
|
||||
<!-- Main content -->
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card card-primary">
|
||||
<div class="card-body text-center">
|
||||
<img src="dist/img/brand/logo-stacked.svg" alt="QRForge" style="max-width: 220px; margin: 20px 0;">
|
||||
<p class="text-muted">Self-hosted static and dynamic QR code generator. Version 3.0.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Commercial version</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
This is the free, open-source (MIT) edition of QRForge. It runs unmodified
|
||||
as a live, fully functional try-out at
|
||||
<a href="https://qr.ensembia.com" target="_blank">qr.ensembia.com</a> -
|
||||
register a free account there any time.
|
||||
</p>
|
||||
<p>
|
||||
The commercial VIP edition (paid create-rights and logo-embedded QR codes)
|
||||
is a separate product built on the same OSS core - see
|
||||
<a href="https://www.qrforge.eu" target="_blank">www.qrforge.eu</a> for
|
||||
pricing and details.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Self-hosting</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Prefer to run your own instance? QRForge is MIT-licensed and available on
|
||||
GitHub:
|
||||
<a href="https://github.com/dillardblom/QR-app-selfhosted" target="_blank">github.com/dillardblom/QR-app-selfhosted</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Credits</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Originally forked from
|
||||
<a href="https://github.com/giandonatoinverso/PHP-Dynamic-Qr-code" target="_blank">PHP Qrcode Generator by Giandonato Inverso</a>.
|
||||
</p>
|
||||
<p>
|
||||
QR code rendering is powered by the
|
||||
<a href="https://github.com/chillerlan/php-qrcode" target="_blank">chillerlan/php-qrcode</a>
|
||||
library.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><!--/. container-fluid -->
|
||||
</section><!-- /.content -->
|
||||
</div><!-- /.content-wrapper -->
|
||||
|
||||
<!-- Footer and scripts -->
|
||||
<?php include './includes/footer.php'; ?>
|
||||
</body>
|
||||
</html>
|
||||
@@ -99,7 +99,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
@@ -47,13 +47,13 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Change password - Qrcode Generator</title>
|
||||
<title>Change password - QRForge</title>
|
||||
<?php include './includes/head.php'; ?>
|
||||
|
||||
<body class="login-page" style="min-height: 512.391px;">
|
||||
<div class="login-box">
|
||||
<div class="login-logo">
|
||||
<img src="dist/img/DynamicQRCode_Original.png" style="width: 95%; height: 95%">
|
||||
<img src="dist/img/brand/logo.svg" alt="QRForge" style="max-width: 260px;">
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
|
Before Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 476 B |
|
After Width: | Height: | Size: 755 B |
@@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 151.74 151.74" role="img" aria-labelledby="qfi-title qfi-desc">
|
||||
<title id="qfi-title">QRForge icon</title>
|
||||
<desc id="qfi-desc">QR-block mark with outbound arrow tile.</desc>
|
||||
<g transform="translate(-8.95,-2.57)">
|
||||
<rect id="block-top-left" x="5.24" y="16.81" width="42.29" height="40.70" rx="2.5" fill="#334155" />
|
||||
<rect id="block-mid" x="59.57" y="68.79" width="24.90" height="23.46" rx="2.5" fill="#334155" />
|
||||
<rect id="block-bottom-right" x="96.08" y="103.32" width="40.59" height="31.68" rx="2.5" fill="#334155" />
|
||||
<path id="block-bottom-left-L" d="M 5.24,71.29 Q 5.24,68.79 7.74,68.79 L 45.03,68.79 Q 47.53,68.79 47.53,71.29 L 47.53,103.32 Q 47.53,103.32 47.53,103.32 L 81.97,103.32 Q 84.47,103.32 84.47,105.82 L 84.47,132.50 Q 84.47,135.00 81.97,135.00 L 7.74,135.00 Q 5.24,135.00 5.24,132.50 Z" fill="#334155" />
|
||||
<path id="arrow-tile" d="M 105.68,6.94 Q 104.67,5.88 106.13,5.88 L 145.89,5.88 Q 148.39,5.88 148.39,8.38 L 148.39,44.14 Q 148.39,46.64 146.42,45.11 L 133.00,34.67 Q 133.00,34.67 133.00,34.67 L 112.50,56.87 Q 112.50,56.87 112.50,56.87 L 134.08,56.87 Q 136.58,56.87 136.58,59.37 L 136.58,89.50 Q 136.58,92.00 134.08,92.00 L 98.63,92.00 Q 96.13,92.00 96.13,89.50 L 96.13,56.87 Q 96.13,56.87 96.13,56.87 L 62.10,56.87 Q 59.60,56.87 59.60,54.37 L 59.60,19.60 Q 59.60,17.10 62.10,17.10 L 93.63,17.10 Q 96.13,17.10 96.13,19.60 L 96.13,41.00 Q 96.13,41.00 96.13,41.00 L 97.00,42.17 Q 97.00,42.17 97.00,42.17 L 117.19,22.73 Q 118.99,21.00 117.27,19.18 L 107.68,9.06 Q 106.68,8.00 105.68,6.94 Z" fill="#2563EB" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 151.74 151.74" role="img" aria-labelledby="qfi-title qfi-desc">
|
||||
<title id="qfi-title">QRForge icon</title>
|
||||
<desc id="qfi-desc">QR-block mark with outbound arrow tile.</desc>
|
||||
<g transform="translate(-8.95,-2.57)">
|
||||
<rect id="block-top-left" x="5.24" y="16.81" width="42.29" height="40.70" rx="2.5" fill="#FFFFFF" />
|
||||
<rect id="block-mid" x="59.57" y="68.79" width="24.90" height="23.46" rx="2.5" fill="#FFFFFF" />
|
||||
<rect id="block-bottom-right" x="96.08" y="103.32" width="40.59" height="31.68" rx="2.5" fill="#FFFFFF" />
|
||||
<path id="block-bottom-left-L" d="M 5.24,71.29 Q 5.24,68.79 7.74,68.79 L 45.03,68.79 Q 47.53,68.79 47.53,71.29 L 47.53,103.32 Q 47.53,103.32 47.53,103.32 L 81.97,103.32 Q 84.47,103.32 84.47,105.82 L 84.47,132.50 Q 84.47,135.00 81.97,135.00 L 7.74,135.00 Q 5.24,135.00 5.24,132.50 Z" fill="#FFFFFF" />
|
||||
<path id="arrow-tile" d="M 105.68,6.94 Q 104.67,5.88 106.13,5.88 L 145.89,5.88 Q 148.39,5.88 148.39,8.38 L 148.39,44.14 Q 148.39,46.64 146.42,45.11 L 133.00,34.67 Q 133.00,34.67 133.00,34.67 L 112.50,56.87 Q 112.50,56.87 112.50,56.87 L 134.08,56.87 Q 136.58,56.87 136.58,59.37 L 136.58,89.50 Q 136.58,92.00 134.08,92.00 L 98.63,92.00 Q 96.13,92.00 96.13,89.50 L 96.13,56.87 Q 96.13,56.87 96.13,56.87 L 62.10,56.87 Q 59.60,56.87 59.60,54.37 L 59.60,19.60 Q 59.60,17.10 62.10,17.10 L 93.63,17.10 Q 96.13,17.10 96.13,19.60 L 96.13,41.00 Q 96.13,41.00 96.13,41.00 L 97.00,42.17 Q 97.00,42.17 97.00,42.17 L 117.19,22.73 Q 118.99,21.00 117.27,19.18 L 107.68,9.06 Q 106.68,8.00 105.68,6.94 Z" fill="#2563EB" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 151.74 151.74" role="img" aria-labelledby="qfi-title qfi-desc">
|
||||
<title id="qfi-title">QRForge icon</title>
|
||||
<desc id="qfi-desc">QR-block mark with outbound arrow tile.</desc>
|
||||
<g transform="translate(-8.95,-2.57)">
|
||||
<rect id="block-top-left" x="5.24" y="16.81" width="42.29" height="40.70" rx="2.5" fill="#334155" />
|
||||
<rect id="block-mid" x="59.57" y="68.79" width="24.90" height="23.46" rx="2.5" fill="#334155" />
|
||||
<rect id="block-bottom-right" x="96.08" y="103.32" width="40.59" height="31.68" rx="2.5" fill="#334155" />
|
||||
<path id="block-bottom-left-L" d="M 5.24,71.29 Q 5.24,68.79 7.74,68.79 L 45.03,68.79 Q 47.53,68.79 47.53,71.29 L 47.53,103.32 Q 47.53,103.32 47.53,103.32 L 81.97,103.32 Q 84.47,103.32 84.47,105.82 L 84.47,132.50 Q 84.47,135.00 81.97,135.00 L 7.74,135.00 Q 5.24,135.00 5.24,132.50 Z" fill="#334155" />
|
||||
<path id="arrow-tile" d="M 105.68,6.94 Q 104.67,5.88 106.13,5.88 L 145.89,5.88 Q 148.39,5.88 148.39,8.38 L 148.39,44.14 Q 148.39,46.64 146.42,45.11 L 133.00,34.67 Q 133.00,34.67 133.00,34.67 L 112.50,56.87 Q 112.50,56.87 112.50,56.87 L 134.08,56.87 Q 136.58,56.87 136.58,59.37 L 136.58,89.50 Q 136.58,92.00 134.08,92.00 L 98.63,92.00 Q 96.13,92.00 96.13,89.50 L 96.13,56.87 Q 96.13,56.87 96.13,56.87 L 62.10,56.87 Q 59.60,56.87 59.60,54.37 L 59.60,19.60 Q 59.60,17.10 62.10,17.10 L 93.63,17.10 Q 96.13,17.10 96.13,19.60 L 96.13,41.00 Q 96.13,41.00 96.13,41.00 L 97.00,42.17 Q 97.00,42.17 97.00,42.17 L 117.19,22.73 Q 118.99,21.00 117.27,19.18 L 107.68,9.06 Q 106.68,8.00 105.68,6.94 Z" fill="#2563EB" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,12 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 236.20 246.50" role="img" aria-labelledby="qfs-title qfs-desc">
|
||||
<title id="qfs-title">QRForge stacked logo</title>
|
||||
<desc id="qfs-desc">Stacked QRForge logo.</desc>
|
||||
<g transform="translate(33.28,14.75)">
|
||||
<rect id="block-top-left" x="5.24" y="16.81" width="42.29" height="40.70" rx="2.5" fill="#334155" />
|
||||
<rect id="block-mid" x="59.57" y="68.79" width="24.90" height="23.46" rx="2.5" fill="#334155" />
|
||||
<rect id="block-bottom-right" x="96.08" y="103.32" width="40.59" height="31.68" rx="2.5" fill="#334155" />
|
||||
<path id="block-bottom-left-L" d="M 5.24,71.29 Q 5.24,68.79 7.74,68.79 L 45.03,68.79 Q 47.53,68.79 47.53,71.29 L 47.53,103.32 Q 47.53,103.32 47.53,103.32 L 81.97,103.32 Q 84.47,103.32 84.47,105.82 L 84.47,132.50 Q 84.47,135.00 81.97,135.00 L 7.74,135.00 Q 5.24,135.00 5.24,132.50 Z" fill="#334155" />
|
||||
<path id="arrow-tile" d="M 105.68,6.94 Q 104.67,5.88 106.13,5.88 L 145.89,5.88 Q 148.39,5.88 148.39,8.38 L 148.39,44.14 Q 148.39,46.64 146.42,45.11 L 133.00,34.67 Q 133.00,34.67 133.00,34.67 L 112.50,56.87 Q 112.50,56.87 112.50,56.87 L 134.08,56.87 Q 136.58,56.87 136.58,59.37 L 136.58,89.50 Q 136.58,92.00 134.08,92.00 L 98.63,92.00 Q 96.13,92.00 96.13,89.50 L 96.13,56.87 Q 96.13,56.87 96.13,56.87 L 62.10,56.87 Q 59.60,56.87 59.60,54.37 L 59.60,19.60 Q 59.60,17.10 62.10,17.10 L 93.63,17.10 Q 96.13,17.10 96.13,19.60 L 96.13,41.00 Q 96.13,41.00 96.13,41.00 L 97.00,42.17 Q 97.00,42.17 97.00,42.17 L 117.19,22.73 Q 118.99,21.00 117.27,19.18 L 107.68,9.06 Q 106.68,8.00 105.68,6.94 Z" fill="#2563EB" />
|
||||
</g>
|
||||
<text x="118.10" y="203.67" text-anchor="middle" font-family="Inter, Manrope, Geist, Arial, sans-serif" font-size="48.39" font-weight="700" letter-spacing="-3.43" fill="#334155">QRForge</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,12 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="5.24 5.88 573.81 145.12" role="img" aria-labelledby="qf-title qf-desc">
|
||||
<title id="qf-title">QRForge logo</title>
|
||||
<desc id="qf-desc">QRForge wordmark with a QR-block mark and outbound arrow tile.</desc>
|
||||
<g id="icon">
|
||||
<rect id="block-top-left" x="5.24" y="16.81" width="42.29" height="40.70" rx="2.5" fill="#334155" />
|
||||
<rect id="block-mid" x="59.57" y="68.79" width="24.90" height="23.46" rx="2.5" fill="#334155" />
|
||||
<rect id="block-bottom-right" x="96.08" y="103.32" width="40.59" height="31.68" rx="2.5" fill="#334155" />
|
||||
<path id="block-bottom-left-L" d="M 5.24,71.29 Q 5.24,68.79 7.74,68.79 L 45.03,68.79 Q 47.53,68.79 47.53,71.29 L 47.53,103.32 Q 47.53,103.32 47.53,103.32 L 81.97,103.32 Q 84.47,103.32 84.47,105.82 L 84.47,132.50 Q 84.47,135.00 81.97,135.00 L 7.74,135.00 Q 5.24,135.00 5.24,132.50 Z" fill="#334155" />
|
||||
<path id="arrow-tile" d="M 105.68,6.94 Q 104.67,5.88 106.13,5.88 L 145.89,5.88 Q 148.39,5.88 148.39,8.38 L 148.39,44.14 Q 148.39,46.64 146.42,45.11 L 133.00,34.67 Q 133.00,34.67 133.00,34.67 L 112.50,56.87 Q 112.50,56.87 112.50,56.87 L 134.08,56.87 Q 136.58,56.87 136.58,59.37 L 136.58,89.50 Q 136.58,92.00 134.08,92.00 L 98.63,92.00 Q 96.13,92.00 96.13,89.50 L 96.13,56.87 Q 96.13,56.87 96.13,56.87 L 62.10,56.87 Q 59.60,56.87 59.60,54.37 L 59.60,19.60 Q 59.60,17.10 62.10,17.10 L 93.63,17.10 Q 96.13,17.10 96.13,19.60 L 96.13,41.00 Q 96.13,41.00 96.13,41.00 L 97.00,42.17 Q 97.00,42.17 97.00,42.17 L 117.19,22.73 Q 118.99,21.00 117.27,19.18 L 107.68,9.06 Q 106.68,8.00 105.68,6.94 Z" fill="#2563EB" />
|
||||
</g>
|
||||
<text id="wordmark" x="177" y="101" font-family="Inter, Manrope, Geist, Arial, sans-serif" font-size="103" font-weight="700" letter-spacing="-7.3" fill="#334155">QRForge</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 7.4 KiB |
@@ -60,7 +60,7 @@ if($_SERVER["REQUEST_METHOD"] === "POST" && !isset($_POST["edit"]) && !isset($_P
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
@@ -29,7 +29,7 @@ $total_pages = $db->totalPages;
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
|
After Width: | Height: | Size: 31 KiB |
@@ -6,9 +6,10 @@
|
||||
|
||||
<!-- Main Footer -->
|
||||
<footer class="main-footer text-sm">
|
||||
<strong><a href="https://github.com/giandonatoinverso/PHP-Dynamic-Qr-code" target="_blank">PHP Qrcode Generator</a> by </strong> Giandonato Inverso
|
||||
<strong><a href="https://www.qrforge.eu" target="_blank">QRForge</a></strong> -
|
||||
<a href="./about.php">About</a> / credits
|
||||
<div class="float-right d-none d-sm-inline-block">
|
||||
<b>Version</b> 2.3.0
|
||||
<b>Version</b> 3.0
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -2,9 +2,12 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="csrf-token" content="<?php echo csrf_token(); ?>">
|
||||
<meta name="theme-color" content="#007bff">
|
||||
<meta name="theme-color" content="#2563EB">
|
||||
<link rel="manifest" href="manifest.json">
|
||||
<link rel="apple-touch-icon" href="dist/img/icon-192.png">
|
||||
<link rel="icon" href="dist/img/brand/favicon.svg" type="image/svg+xml">
|
||||
<link rel="icon" href="dist/img/brand/favicon-32.png" sizes="32x32" type="image/png">
|
||||
<link rel="icon" href="dist/img/brand/favicon-16.png" sizes="16x16" type="image/png">
|
||||
<link rel="apple-touch-icon" href="dist/img/brand/apple-touch-icon.png">
|
||||
|
||||
<!-- Font Awesome Icons -->
|
||||
<link rel="stylesheet" href="plugins/fontawesome-free/css/all.min.css">
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<aside class="main-sidebar sidebar-dark-primary elevation-4">
|
||||
<!-- Brand Logo -->
|
||||
<a href="./index.php" class="brand-link">
|
||||
<img src="dist/img/Symbol_WhiteBlue.png" alt="Logo" class="brand-image"
|
||||
<img src="dist/img/brand/icon-inverse.svg" alt="QRForge" class="brand-image"
|
||||
style="opacity: .8">
|
||||
<span class="brand-text font-weight-light">Qrcode Generator</span>
|
||||
<span class="brand-text font-weight-light">QRForge</span>
|
||||
</a>
|
||||
|
||||
<!-- Sidebar -->
|
||||
@@ -109,6 +109,12 @@
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<li class="nav-item">
|
||||
<a href="./about.php" <?php echo (CURRENT_PAGE == 'about.php') ? ' class="nav-link active"' : ' class="nav-link"'; ?>>
|
||||
<i class="fas fa-info-circle nav-icon"></i>
|
||||
<p>About</p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<!-- /.sidebar-menu -->
|
||||
|
||||
@@ -70,7 +70,7 @@ foreach ($createdQrcode_static as $row) {
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qr Code Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
@@ -68,13 +68,13 @@ if (isset($_COOKIE['series_id']) && isset($_COOKIE['remember_token']))
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Login - Qrcode Generator</title>
|
||||
<title>Login - QRForge</title>
|
||||
<?php include './includes/head.php'; ?>
|
||||
|
||||
<body class="login-page" style="min-height: 512.391px;">
|
||||
<div class="login-box">
|
||||
<div class="login-logo">
|
||||
<img src="dist/img/DynamicQRCode_Original.png" style="width: 95%; height: 95%">
|
||||
<img src="dist/img/brand/logo.svg" alt="QRForge" style="max-width: 260px;">
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "Qrcode Generator",
|
||||
"short_name": "QRcode",
|
||||
"name": "QRForge",
|
||||
"short_name": "QRForge",
|
||||
"description": "Self-hosted static and dynamic qr code generator",
|
||||
"start_url": "index.php",
|
||||
"scope": "./",
|
||||
"display": "standalone",
|
||||
"background_color": "#ffffff",
|
||||
"theme_color": "#007bff",
|
||||
"theme_color": "#2563EB",
|
||||
"icons": [
|
||||
{ "src": "dist/img/icon-192.png", "sizes": "192x192", "type": "image/png" },
|
||||
{ "src": "dist/img/icon-512.png", "sizes": "512x512", "type": "image/png" }
|
||||
|
||||
@@ -4,7 +4,7 @@ require_once BASE_PATH . '/includes/auth_validate.php';
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
@@ -96,7 +96,7 @@ if($_SERVER["REQUEST_METHOD"] === "POST" && !isset($_POST["edit"]) && !isset($_P
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
@@ -29,7 +29,7 @@ $total_pages = $db->totalPages;
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
@@ -51,7 +51,7 @@ if($_SERVER["REQUEST_METHOD"] === "POST" && !isset($_POST["edit"])) {
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||
@@ -27,7 +27,7 @@ $total_pages = $db->totalPages;
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<title>Qrcode Generator</title>
|
||||
<title>QRForge</title>
|
||||
<head>
|
||||
<?php include './includes/head.php'; ?>
|
||||
</head>
|
||||
|
||||