Thanks to visit codestin.com
Credit goes to github.com

Skip to content

HHSOLL/freestyle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

244 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FreeStyle

FreeStyle is currently narrowed to two product-facing pages while the fitting workflow is rebuilt:

  • / implements the supplied Home reference as code-native UI.
  • /app/closet implements the supplied Closet reference as code-native UI.

Canvas, Community, Profile, Login, Share, and Lab web pages are intentionally removed until the fitting experience is ready. The merchant-embeddable fitting product is built separately in apps/widget and packages/widget-sdk; it must call the backend control plane directly and must not depend on /app/closet.

Design Truth

The product UI follows the reference images in docs/reference/:

  • freestyle-design-system.png
  • freestyle-home.png
  • freestyle-closet.png
  • freestylelogodesign.png
  • logomark.png

The screenshots are design specifications, not rendered page assets. Home and Closet are built from React, CSS modules, SVG icons, generated Home imagery, the local runtime-3d Closet mannequin/model plane, and code-native product artwork so the UI can become interactive without reintroducing the old design. The reference-sized surfaces scale to the browser viewport instead of requiring page scrolling.

Active Web Routes

/              Home reference surface
/app           redirects to /app/closet
/app/closet    Closet reference surface
/internal/unreal-stream  internal Unreal/render-cache QA only

Retired product routes return 404 unless explicitly listed in apps/web/route-map.mjs as a compatibility redirect to Closet. The internal route is not public navigation and is production-gated by INTERNAL_TOOLS_ENABLED=true.

Private personal deployments can be hidden behind an app-level Basic Auth gate by setting PRIVATE_DEPLOYMENT_ENABLED=true with PRIVATE_DEPLOYMENT_USERNAME and PRIVATE_DEPLOYMENT_PASSWORD on the web deployment. Use this alongside Vercel Deployment Protection when available. This only restricts access to the web UI; it does not change the publish gate for generated garments or render-cache assets.

Deployment Policy

Vercel Git auto-deployments are disabled in vercel.json, apps/web/vercel.json, and apps/admin/vercel.json. Pushing or merging main must not publish web or admin deployments automatically. Deploy only after an explicit manual operator action, for example a Vercel Dashboard deploy or a local CLI deploy after npm run check passes. Railway GitHub autodeploy is managed in Railway service settings, not by repo config; keep it disabled there and use Railway's manual "Deploy Latest Commit" operator action for API/worker releases.

Active API Policy

The fitting control plane remains active under /v2/tryon/* and /v2/render-cache/*. Retired public or legacy API surfaces are disabled by default in production unless explicitly re-enabled:

ENABLE_CANVAS_API=false
ENABLE_COMMUNITY_API=false
ENABLE_LAB_API=false
ENABLE_LEGACY_API=false
ENABLE_TRYON_V2_API=true
ENABLE_RENDER_CACHE_API=true

Product URL intake is now an admin-only active-path entrypoint:

POST /v1/admin/product-intake/from-url
GET  /v1/admin/product-intake/:id
POST /v1/admin/product-intake/:id/authoring-plan

It creates ProductEvidenceBundle, BrandGarmentIntakeCandidate, and controlled GarmentAuthoringPlan records. The authoring plan is size-slot aware and must preserve product x color x size x bodyArchetype x qualityTier traceability before handing Musinsa evidence into CLO-local, Blender-template, and Unreal import/capture scripts. It does not publish assets, create public pages, or make Pixel Streaming the default Closet runtime.

Merchant widget configuration remains active under:

GET  /v1/widget/config
POST /v1/widget/events
GET  /widget/sdk.js
GET  /widget/frame

The SDK mount API is FreestyleFit.mount({ tenantId, productId, variantId, placement, locale, isolation }), with optional selectedSizeLabel, sizeSlotId, and colorSlug when the merchant PDP has explicit size/color context. The API-served /widget/sdk.js also keeps FreeStyleWidget.init compatibility. Public render-cache lookups default to allowFallback=false; the widget config includes frame_url, preserving tenant/product/variant/size/color/locale query state so iframe embeds follow the server route contract instead of hard-coding an asset path. Trace-aware render-cache artifact paths include size/color slots, while the old untraced artifact route remains compatibility-only. Placeholder generation is limited to internal/development paths and the shared public certified preview gate requires QC, approval, license, source URL, manifest, front/side/back images, approved capture source, and exact product x color x size x bodyArchetype x qualityTier trace metadata before Closet or widget display.

The first Musinsa fitting MVP is fixed in docs/musinsa-fitting-mvp.md: body presets, standing neutral pose, front/side/back rotation, CLO-authored assets, Blender web cleanup, and certified render-cache previews before public Closet display.

Useful Commands

Core verification:

npm run lint
npm run typecheck
npm run test:core
npm run build
npm run check

Local Closet fitting MVP:

npm run authoring:musinsa-set-runtime-pipeline
npm run authoring:musinsa-set-poc:verify
npm run authoring:clo-readiness
npm run authoring:clo-no-manual-slot
npm run authoring:clo-post-export-resume
npm run render-cache:unreal-capture:publish:musinsa-set-poc

Local UI smoke for the private Musinsa POC should use same-origin API rewrites:

HOST=127.0.0.1 PORT=8181 \
ENABLE_RENDER_CACHE_API=true ENABLE_TRYON_V2_API=true \
RENDER_CACHE_STORE_PATH=.data/render-cache.json \
RENDER_CACHE_ARTIFACT_ROOT=.data/render-cache-artifacts \
npm run dev:api

env -u NEXT_PUBLIC_API_BASE_URL \
PORT=3215 BACKEND_ORIGIN=http://127.0.0.1:8181 \
NEXT_PUBLIC_CLOSET_LOCAL_MUSINSA_POC_ENABLED=true \
npm --prefix apps/web run dev

See docs/DEVELOPMENT_GUIDE.md and docs/MAINTENANCE_PLAYBOOK.md for the full CLO/Blender/Unreal operator command catalog. The README keeps only the commands needed to verify the active product path.

Minimal Docs

  • docs/design-system.md
  • docs/musinsa-fitting-mvp.md
  • docs/active-closet-fitting-path.md
  • docs/cleanup-deletion-inventory.md
  • docs/api-surface-audit.md
  • docs/security-cleanup-notes.md
  • docs/closet-viewer-active-path.md
  • docs/env-var-usage-audit.md
  • docs/cloud-cleanup-inventory.md
  • docs/supabase-cleanup-inventory.md
  • docs/DEVELOPMENT_GUIDE.md
  • docs/MAINTENANCE_PLAYBOOK.md
  • docs/TECH_WATCH.md
  • docs/internal-unreal-control-plane.md
  • docs/unreal-editor-smoke.md
  • docs/render-cache-pipeline.md
  • docs/workstation-migration.md
  • docs/commercial-fitting-options.md
  • docs/product-url-asset-intake.md

About

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors