Appearance
API and server middleware ​
Backend calls use Axios with baseURL from API_BASE_URL. Additional routes are handled by Nuxt server middleware that proxy or implement handlers (e.g. to S3, Stripe, Typesense).
Server middleware ​
| Path | Handler | Purpose |
|---|---|---|
| /api | ~/api/index.js | Main API proxy/router (e.g. browser-os, backend API proxy) |
| /driveapi | ~/api/drive-api.js | Google Drive API proxy (refresh token, etc.) |
| /s3 | ~/api/s3.js | AWS S3 proxy (presign, upload/download) |
| /box | ~/api/box.js | Box API proxy (user, revoke, refresh token) |
| /zip | ~/api/zip-viewer.js | Zip viewer / stream |
| /convert | ~/api/media-converter | Media conversion |
| /apple-app-site-association | ~/api/universal-link.js | Apple universal links |
| /stripe | ~/api/payments.js | Stripe payments (checkout, webhooks) |
| /phone-number | ~/api/phone-number.js | Phone number (e.g. Twilio) |
| /generate-image | ~/api/generate-image.js | Image generation (e.g. OpenAI) |
| /typesense | ~/api/typesense.js | Typesense search proxy |
API directory ​
| File | Purpose |
|---|---|
| api/index.js | Main /api handler; routes to shared or backend |
| api/shared/index.js | Shared API helpers or routes |
| api/drive-api.js | Drive proxy implementation |
| api/s3.js | S3 presign and request handling |
| api/box.js | Box proxy implementation |
| api/payments.js | Stripe integration |
| api/phone-number.js | Phone number service |
| api/generate-image.js | Image generation service |
| api/typesense.js | Typesense client and search |
| api/zip-viewer.js | Zip streaming/viewing |
| api/universal-link.js | Apple app-site-association response |
| api/media-converter/index.js | Media conversion pipeline |