qrcode generation standalone (doesn't depend on external services)