|
Some checks failed
CI / Lint, test, build (push) Has been cancelled
Editor right panel now renders:
- A target-export-format dropdown (PES / DST / EXP / JEF / SVG) above the
Stitch Type select.
- Per-option format support suffix on each stitch type in the dropdown
('✓ DST' / '⚠ DST' / '✕ DST') driven by getStitchFormatSupport.
- A format-compat warning row when the chosen stitch type has 'limited'
support for the target format (cross-stitch on DST, zigzag on EXP, etc).
Backed by src/lib/formatCompatibility.ts (single source of truth for the
stitch-type × format support matrix). Editor owns the targetExportFormat
state so future sync with ExportDialog lands in one place. Defaults to
PES to match ExportDialog's default (#376 sync).
|
||
|---|---|---|
| .forgejo/workflows | ||
| .gsd | ||
| .worktrees | ||
| deploy | ||
| docker | ||
| docs/plans | ||
| public | ||
| scripts | ||
| src | ||
| tests | ||
| .dockerignore | ||
| .env.development | ||
| .env.example | ||
| .env.production | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .wild-instance-id | ||
| .wild-job-id | ||
| .wild-stub.log | ||
| components.json | ||
| docker-compose.actors.yml | ||
| docker-compose.yml | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| eslint.config.js | ||
| IMPLEMENTATION_PLAN.md | ||
| index.html | ||
| lefthook.yml | ||
| nginx.conf | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
ThreadCraft — Embroidery Digitizing for Brother Entrepreneur
A web-based embroidery digitizing application designed for the Brother Entrepreneur PR-10 10-needle machine. Upload artwork, auto-digitize or manually edit stitch paths, manage thread colors, and export PES files ready for production.
Tech Stack
- React 19 + TypeScript
- Vite 7
- Tailwind CSS v3 + shadcn/ui components
- Framer Motion (animations)
- Fabric.js (canvas rendering)
- React Router v7
- Vitest (unit tests)
Getting Started
git clone https://forgejo.tail018ac4.ts.net/Mark/Kimi_Agent_Brother_10_Digitizing_App.git
cd "Kimi_Agent_Brother_10_Digitizing_App"
npm install
npm run dev
The app talks to the easystitch-service backend (separate repo:
Mark/easystitch-service, runs FastAPI on :8080) for auto-digitize,
thread catalog/resolve, and PES/DST export. In dev, requests are proxied
to the service via the Vite dev server (/api/easystitch — see
vite.config.ts); in production, set VITE_EASYSTITCH_API_URL to the
service URL at build time or deploy behind the bundled nginx proxy
(which forwards /api/easystitch/* to the EASYSTITCH_UPSTREAM
container).
Note: This repo also contains a small Express stub at
api/(port:3001, only/healthand a 501 for/auth/register). It has no callers in the front-end and is not the digitize/export backend. It's tracked for removal in #113.
Project Structure
src/
components/
ui/ — shadcn/ui components (50+)
workspace/ — Main digitizing interface (canvas, toolbar, panels)
editor/ — Node-based stitch path editor
gallery/ — Design library with folders
help/ — Documentation pages
Navbar.tsx — App navigation
Layout.tsx — Page wrapper
Footer.tsx — Page footer
pages/
Home.tsx — Landing page with hero + features
Workspace.tsx — Full-screen digitizing workspace
Editor.tsx — Advanced path editor
Gallery.tsx — Design management
Help.tsx — Stitch pattern reference
lib/
easystitch-client.ts — Typed client for the easystitch-service v1 API
digitize-adapters.ts — Service <-> workspace shape conversions
stitch-adapters.ts — Workspace -> service stitch conversion for export
region-classifier.ts — Stitch-type classification from geometry
canvas/ — Canvas renderers (satin/fill)
hooks/
useAsyncState.ts — Async state machine with abort support
tests/ — Shared test fixtures
api/is an unused Express stub (see #113). The real backend isMark/easystitch-serviceand is not part of this repo.
Scripts
| Command | Description |
|---|---|
npm run dev |
Start dev server (port 3000) |
npm run build |
Production build |
npm run lint |
Run ESLint |
npm test |
Run the Vitest test suite |
npm run preview |
Preview production build |
Pages
- Home — Marketing landing with hero video, feature cards, how-it-works
- Workspace — Full-screen digitizing: upload → auto-digitize → edit → export
- Editor — Node-based Bezier path editor for manual stitch creation
- Gallery — Organize designs into folders, search, favorites
- Help — Stitch type reference and machine compatibility guide
CI
The repo runs Forgejo Actions (.forgejo/workflows/ci.yml): install →
typecheck → lint → test → build → docker image build → smoke test. CI
requires a self-hosted runner registered for the repo (localhost-kab10-runner).
Notes
- Auto-digitize, thread catalog/resolve, and PES/DST export call the easystitch-service v1 API (no longer simulated).
- Tests live alongside source (
*.test.ts/*.test.tsx).