Svelte Commerce
SvelteKit으로 만든 독립형 오픈소스 스토어프론트, 26개 상거래 백엔드와 헤드리스 연동, MIT 라이선스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AR menu proof of concept: scan a QR code, see a chocolate cake on your table at real size (model-viewer, GLB + USDZ)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Scan the QR code with a phone, pick a dish and tap View on your table. The dish appears on your table at its real size. Walk around it and lean in.
| Dish | Real size |
|---|---|
| Chocolate ring cake | 26 cm across, 11 cm tall, on a 32 cm plate |
| Tiramisu | a layered slice in a 16 cm tray, 7 cm tall (AI-generated model) |
| Pumpkin gnocchi | 23 cm bowl, 7 cm tall to the top of the food (AI-generated from photos of the real dish) |
Each dish has its own link: …/ar-menu-poc/#cake, …/ar-menu-poc/#tiramisu, …/ar-menu-poc/#gnocchi.
Live: https://pmtchakanyuka-star.github.io/ar-menu-poc/
| Piece | What it is |
|---|---|
index.html | The menu page. One tab per dish (the DISHES list in the script). It uses Google's <model-viewer> for the 3D preview and the AR hand-off. ar-scale="fixed" locks each dish to its real size. |
models/*.glb | glTF 2.0 models for the web preview and Android: WebXR in Chrome, with Scene Viewer as the fallback. |
models/*.usdz | USDZ models for iPhone and iPad (AR Quick Look). |
models/*-thumb.webp | Menu tab pictures: renders of the models. |
tools/calib/detect_edges.py | Finds the plate rim, the edge of the glaze pool and the cake's top outline in the reference photo. |
tools/calib/fit_camera.py | Fits a camera and the cake's profile to those edges, plus a few hand-measured points on the hole and base, then scales the result so the base is 26 cm. |
tools/build_cake.py | Builds the shape and projects the photo onto it as texture. Writes both model files. |
tools/build_ai_model.py | Turns an AI-generated 3D model (Higgsfield → Tripo H3.1, downloaded into the git-ignored tools/ai/) into a menu model: real size, welded and decimated to 130k triangles, a fresh UV atlas with the full-detail texture baked onto it, matte food. Writes both model files. Used for the gnocchi and the tiramisu. |
media/hero.* | The looping hero clip (Higgsfield Seedance from a photo of the gnocchi at the café, WebM + MP4, ~0.2 MB) and its poster. It starts only after the first dish has loaded, never with reduced motion or data saver, and has a pause button. |
tools/build_tiramisu.py | The earlier, photo-built tiramisu (no longer used on the menu). |
tools/build_gnocchi.py | The earlier gnocchi: fits a camera to the overhead photo and textures a height field with it (no longer used on the menu). |
tools/model_io.py | The glTF and USDZ writers both builders share. |
tools/preview.html | Dev-only full-window render of one model (?src=tiramisu). |
tools/make_qr.py | Writes qr.png / qr.svg. |
| Cake | 26 cm across the base, 11 cm tall (31.6 cm plate) |
| Triangles | ~101k |
| Textures | colour 2048×1024, bump 2048×1024, roughness 1024×512 (JPEG) |
| Files | cake.glb 4.4 MB · cake.usdz 3.3 MB |
Both files are validated. The Khronos glTF Validator reports 0 errors and 0 warnings, and all 28 OpenUSD validators pass for the USDZ, including the usdz packaging rules.
tools/build_tiramisu.py.| Slice | 11 × 9 cm, 4 cm tall (16 cm tray) |
| Triangles | ~113k |
| Files | tiramisu.glb 4.2 MB · tiramisu.usdz 3.1 MB |
Both files pass the same checks as the cake's: 0 glTF Validator errors or warnings, and all 28 OpenUSD validators.
tools/gnocchi/camera.json.One photo can't see everything: the sides of gnocchi facing away from the overhead camera are stretched a little. Projecting the side photos onto those faces is the next step.
| Bowl | 23 cm across, 5.3 cm tall |
| Triangles | ~127k |
| Textures | colour 4096×4096, bump 2048×2048, roughness 1024×1024 (JPEG) |
| Files | gnocchi.glb 5.6 MB · gnocchi.usdz 4.1 MB |
The reference photo isn't in the repo, because it shows more than the cake. Put it at
tools/calib/reference.jpg, then:
python -m venv .venv
.venv/Scripts/python -m pip install -r requirements.txt # macOS/Linux: .venv/bin/python
.venv/Scripts/python tools/calib/detect_edges.py
.venv/Scripts/python tools/calib/fit_camera.py # writes fit_overlay.png - check the fit by eye
.venv/Scripts/python tools/build_cake.py
.venv/Scripts/python tools/make_qr.py
To use a different real size, change CAKE_BASE_DIAMETER in tools/calib/fit_camera.py.
The tiramisu photos aren't in the repo either (people in the background). Put them in
tools/tiramisu/ref/ as front.jpg (from the front, a little above), corner.jpg
(from the front left corner), top.jpg (straight down) and, for reference only,
low.jpg and corner2.jpg. Then:
.venv/Scripts/python tools/build_tiramisu.py
The photo crops it uses (the corners of each face, the top's crop) are listed at the top of the script.
For the gnocchi, put the overhead photo at tools/gnocchi/ref/overhead.jpg (side.jpg was used
only to measure the bowl's profile). Then:
.venv/Scripts/python tools/build_gnocchi.py
Delete tools/gnocchi/camera.json to refit the camera, for example with a new photo.
Rebuild them with:
.venv/Scripts/python tools/build_ai_model.py tools/ai/gnocchi.glb gnocchi --width 0.23 --glaze
.venv/Scripts/python tools/build_ai_model.py tools/ai/tiramisu.glb tiramisu --width 0.16
The extra Python packages are trimesh, fast-simplification, xatlas and embreex.