Open-source, self-hosted QR code generator. Register, design QR codes, download them as PNG/SVG, and point them wherever you want. Qurl codes are dynamic: they resolve through your own server, so targets, expiry, and special permissions stay under your control.
⚠️ Early development. Qurl is in active MVP development — see the roadmap. Things will change and break until the first release.
- Dynamic QR codes — a code points to
your-host/r/<slug>and redirects from there, so you can change the target, expire it, or keep it permanent later. - QR designer — colors, logo, export as PNG and SVG.
- vCard generator — build a digital business card and download the
.vcf. - Landing pages — branded pages with configurable action buttons (save contact, call, email, website, …) instead of a bare redirect.
- Accounts & roles — registration, login, and a premium tier for special rights (e.g. permanent codes).
- Self-hosted & i18n — runs on your own infrastructure, German + English UI.
- Backend: PHP / Symfony 7
- Database: PostgreSQL + Doctrine ORM & Migrations
- Frontend: Twig + Symfony UX (Turbo, Stimulus, Live Components) + Bootstrap
- QR generation: endroid/qr-code (server-side)
- Auth: Symfony Security (session-based, role-based permissions)
- Deploy: Docker / Portainer (git-linked compose stack)
Planning and progress are public on the Qurl project board. The current scope is tracked under the MVP milestone.
The application is still being scaffolded (see issues #1–#2). These steps describe the intended workflow.
git clone https://github.com/tom-schorn/Qurl.git
cd Qurl
cp .env.example .env.local # adjust DB credentials etc.
docker compose up -d # app + PostgreSQLQurl ships a compose.yaml in the repo root. In Portainer, create a Stack from a
Git repository pointing at this repo and compose.yaml, then provide the required
environment variables (database credentials, ADMIN_EMAIL, ADMIN_PASSWORD). The
first start bootstraps the admin account from those variables.
See .env.example for all required variables.
Contributions are welcome! Please read CONTRIBUTING.md and our Code of Conduct before opening an issue or pull request.
Qurl is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE. This means if you run a modified version as a network service, you must make your source changes available under the same license.