Settings and production notes

QR Pro is local-first and production-ready with the right environment.

The local app uses SQLite through Prisma. For production, set `DATABASE_URL` to a managed Postgres database, set `NEXT_PUBLIC_APP_URL` to the public app URL, and set `IP_HASH_SALT` to a private random value.

Dynamic QR behavior

Dynamic projects encode `/r/:slug`. Editing the project updates the stored destination and keeps the slug stable so printed QR codes continue to work.

Analytics behavior

Each `/r/:slug` visit creates a scan event with timestamp, referrer, hashed IP, browser, OS, and device category. Raw IP addresses are not stored.

External services

No paid services are required for local use. Production deployment needs only hosting and a database. Geo country/region lookup is omitted until a privacy-safe external provider is configured.