feat: migrate imphnen-backend-qr into workspace as imphnen-qr crate

Ports the Go QR campaign overlay service to a self-contained Rust crate
nested at /v1/qr/... in the gateway.

Features:
- Auth: register, login, Google OAuth, JWT refresh (bcrypt compat with Go DB)
- Users: profile management + admin CRUD (list/role/delete)
- Campaigns: create (auto-generates QR PNG via qrcode crate), list,
  activate, delete; process-image endpoint overlays active campaign QR
  onto uploaded images (bottom-right corner, image crate)
- QR pool connects to imphnen_qr database via QR_DATABASE_URL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
maulanasdqn
2026-04-02 16:03:39 +07:00
co-authored by Claude Sonnet 4.6
parent 5715e75593
commit 4bba182ea3
51 changed files with 1942 additions and 0 deletions
+9
View File
@@ -33,6 +33,15 @@ RETRY_ATTEMPTS=3
RETRY_DELAY=1
GOOGLE_REDIRECT_URL=http://localhost:8000/api/v1/auth/google/callback
# QR campaign service
QR_DATABASE_URL=postgres://imphnen_qr@127.0.0.1:5432/imphnen_qr?sslmode=disable
QR_JWT_SECRET=your-qr-jwt-secret-at-least-32-chars
QR_JWT_EXPIRY_MINUTES=15
QR_JWT_REFRESH_EXPIRY_DAYS=7
QR_GOOGLE_CLIENT_ID=your-google-client-id
QR_GOOGLE_CLIENT_SECRET=your-google-client-secret
QR_GOOGLE_REDIRECT_URL=http://localhost:8080/v1/qr/auth/google/callback
# Hackathon feature
HACKATHON_JWT_SECRET=your-hackathon-jwt-secret-at-least-32-chars
HACKATHON_JWT_EXPIRY_HOURS=168