Lusion docs
Publish 3D models as WebAR experiences with a QR code. Guests open them in the browser — no app install. This guide covers a full production run from sign-in to phone AR.
Overview
Lusion is a WebAR publishing platform for food and product (object) models.
- Sign in and upload a 3D model (GLB for Android/web, USDZ for best iOS).
- We store files in Firebase Storage and metadata in Firestore.
- Share a QR code or link.
- Guests open it in a browser: iOS Quick Look (USDZ), Android Scene Viewer (GLB), or desktop web 3D.
Live site: lusion.app. Health check: /health should return { "status": "healthy" } before demos.
Quality bar
Dish on iPhone 15 Pro, full orbit, publishable GLB ≤ 12 MB, looks good on mid-range Android Scene Viewer. Optional: USDZ ≤ 12 MB for iOS Quick Look.
Prefer smaller files (about 2–6 MB) for marketing and menus — 12 MB is the hard upload limit, not the ideal size.
Quick start (full run)
Printable checklist for your first end-to-end test.
Preflight
- https://lusion.app/health returns healthy (200)
- You can open /login and sign in
- You have a GLB ≤ 12 MB (and ideally USDZ ≤ 12 MB)
- Optional thumbnail image ≤ 5 MB
- A phone for AR (Android mid-range and/or iPhone)
Run
- Sign in at /login (Google or email)
- Dashboard → Models → New Model (or Upload Model)
- Fill name, category, optional description/price, capture mode
- Attach GLB (required for Android bar), optional USDZ + thumbnail
- Submit and wait for success
- Open Preview /ar/<id> on desktop
- Show QR from the model actions; scan on a phone
- Confirm Analytics shows new events after opens
Pass criteria
- Guest can open AR without logging in
- Mid Android Scene Viewer path works with GLB
- QR and smart AR link work from a second device
Sign in
Open /login. Use Continue with Google or email and password.
- Google uses a popup, or a full-page redirect if popups are blocked.
- After Firebase sign-in, the app creates a server session via
POST /api/auth/session. - You should land on the dashboard overview.
New accounts: /register. Passwords must be at least 8 characters.
Upload a model
Path: Dashboard → New Model.
| Field | Required | Notes |
|---|---|---|
| Name | Yes | Dish or product name |
| GLB file | For Android bar | ≤ 12 MB — Scene Viewer / web |
| USDZ file | Recommended | ≤ 12 MB — best iOS Quick Look |
| Thumbnail | No | PNG/JPG/WebP ≤ 5 MB |
| Capture mode | No | Turntable, Orbit, or Other |
After upload, the model appears in Models. Status Full AR means both GLB and USDZ are present; Partial means only one format.
Preview & AR
From the models list actions (or open the URLs directly):
- Preview 3D / AR —
/ar/<id>web viewer with model-viewer (drag to rotate; AR button on supported devices). - Smart AR link —
/ar-start/<id>detects device and routes to iOS Quick Look, Android Scene Viewer, or the web viewer. Also records an analytics event.
Guests do not need an account. Only the QR or smart link is required.
Public showcase examples (if Storage files exist): /ar/meze, /ar/baklava, /ar/kebap.
QR codes
In the models table, open Show QR code, or open /qr/<id> directly (PNG image).
The QR encodes the smart AR URL (/ar-start/<id>). Print it on menus or show it on a screen for guests to scan.
Analytics
Open Dashboard → Analytics.
Events are stored when guests open smart AR and related tracking endpoints. After scanning your QR a few times, refresh Analytics to see counts per model and recent activity.
API keys
For automation (scripts, CI, partners), create a key under Dashboard → API Keys. Copy it once (lsn_…).
Use on protected routes:
curl -s -H "X-API-Key: lsn_YOUR_KEY" https://lusion.app/api/dashboard/items # or curl -s -H "Authorization: Bearer lsn_YOUR_KEY" https://lusion.app/api/dashboard/items
Allowed: list/upload/update/delete your models, analytics. Not allowed: creating or revoking API keys (use the dashboard while signed in).
URL reference
| Path | Purpose |
|---|---|
| / | Landing & live demo |
| /login | Sign in |
| /register | Create account |
| /dashboard | Overview |
| /dashboard/models | Your models |
| /dashboard/models/new | Upload |
| /dashboard/analytics | AR / QR events |
| /dashboard/keys | API keys |
| /dashboard/settings | Profile & sign out |
| /docs | This documentation |
| /ar/<id> | Web 3D / AR viewer |
| /ar-start/<id> | Smart device AR entry |
| /qr/<id> | QR PNG |
| /health | Backend health JSON |
| /privacy | Privacy policy |
| /tos | Terms of service |
Prepare models
Create meshes outside Lusion (Polycam, Apple Object Capture, Blender, etc.), then upload.
- Turntable: object rotates; keep the phone fixed; slow full 360°; good diffuse light.
- Orbit: dish fixed; walk a full circle with overlapping views.
- Optimize for web: reduce polygons, shrink textures (512–1K), use Draco when possible so files load quickly on phones.
Capture SOP details for food/object quality live in the product standard above — full orbit and the 12 MB GLB mid-Android bar define a “pass.”
Troubleshooting
| Symptom | What to check |
|---|---|
| Site loads but login/API fail | Open /health — must be healthy. Server env and redeploy if not. |
| Google works, “session failed” | Network tab: POST /api/auth/session should be 200. Server Firebase Admin must match the web project. |
| Unauthorized domain | Firebase Console → Authentication → Authorized domains → add lusion.app |
| Upload rejected for size | GLB/USDZ ≤ 12 MB; thumbnail ≤ 5 MB |
| Android AR weak / fails | Upload a GLB, not USDZ-only |
| iOS AR weak | Add USDZ for Quick Look |
| Models slow to load | Compress GLB further; large files (10–30 MB) will feel slow on mobile |
| Analytics empty | Open /ar-start/<id> on a phone a few times, then refresh Analytics |
| Showcase 3D missing / 402 | Firebase billing must be active; demo files must exist in Storage |
Ready to publish?
Sign in and upload your first dish or product model.
Need help? lusion@lusion.app · Privacy · Terms