Go to file
Arda Samadi bac93568f5 feat(upload): convert HEIC/HEIF to JPEG on the client before preview/upload
Most browsers (everything but Safari/WebKit) can't decode HEIC in <img> or
canvas, so picking an iPhone HEIC photo broke the preview and the crop editor,
and could reach the backend in a format it couldn't process. Convert HEIC/HEIF
to JPEG right after selection via heic2any (dynamically imported, browser-only).

- new util app/utils/convert-heic.ts: isHeic() detection (MIME or extension
  when iOS reports no type) + convertHeicToJpeg()/convertHeicFiles(); never
  throws — falls back to the original file on failure.
- wired into the product image picker (store.add.manual) and the store
  logo picker (StoreForm).
- adds heic2any dependency.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 16:43:30 +03:30
app feat(upload): convert HEIC/HEIF to JPEG on the client before preview/upload 2026-06-23 16:43:30 +03:30
docs first 2026-04-29 01:44:16 +03:30
k8s first 2026-04-29 01:44:16 +03:30
public feat(notifications): web push opt-in + unread nav badges 2026-06-17 14:02:56 +03:30
scripts first 2026-04-29 01:44:16 +03:30
src/api/types first 2026-04-29 01:44:16 +03:30
.dockerignore first 2026-04-29 01:44:16 +03:30
.env.development first 2026-04-29 01:44:16 +03:30
.env.example first 2026-04-29 01:44:16 +03:30
.env.production first 2026-04-29 01:44:16 +03:30
.eslintrc.cjs first 2026-04-29 01:44:16 +03:30
.gitignore first 2026-04-29 01:44:16 +03:30
bun.lock first 2026-04-29 01:44:16 +03:30
components.json first 2026-04-29 01:44:16 +03:30
DEPLOYMENT.md first 2026-04-29 01:44:16 +03:30
docker-compose.yml first 2026-04-29 01:44:16 +03:30
Dockerfile first 2026-04-29 01:44:16 +03:30
Dockerfile.dev first 2026-04-29 01:44:16 +03:30
generate-types.ps1 first 2026-04-29 01:44:16 +03:30
generate-types.sh first 2026-04-29 01:44:16 +03:30
openapi-generator-cli.jar first 2026-04-29 01:44:16 +03:30
package-lock.json feat(upload): convert HEIC/HEIF to JPEG on the client before preview/upload 2026-06-23 16:43:30 +03:30
package.json feat(upload): convert HEIC/HEIF to JPEG on the client before preview/upload 2026-06-23 16:43:30 +03:30
postcss.config.js first 2026-04-29 01:44:16 +03:30
README.md first commit 2026-04-29 01:42:54 +03:30
tailwind.config.ts first 2026-04-29 01:44:16 +03:30
tsconfig.json first 2026-04-29 01:44:16 +03:30
vite.config.ts first 2026-04-29 01:44:16 +03:30

Welcome to Remix - yay!

Development

Run the dev server:

npm run dev

Deployment

First, build your app for production:

npm run build

Then run the app in production mode:

npm start

Now you'll need to pick a host to deploy it to.

DIY

If you're familiar with deploying Node applications, the built-in Remix app server is production-ready.

Make sure to deploy the output of npm run build

  • build/server
  • build/client

Styling

This template comes with Tailwind CSS already configured for a simple default starting experience. You can use whatever css framework you prefer. See the Vite docs on css for more information.