mirror of
https://github.com/jhbruhn/respira.git
synced 2026-01-27 02:13:41 +00:00
Controller Software for the Brother PP-1 SKiTCH embroidery machine.
Implemented comprehensive responsive design improvements for tablet support and simplified typography from 12 different font sizes to a clean 5-level hierarchy using only standard Tailwind classes. Responsive improvements: - Canvas height now adapts: 400px (mobile) → 500px (tablet) → 600px (desktop) - Header stacks vertically on tablets, side-by-side on desktop (1024px+) - WorkflowStepper scales appropriately for smaller screens - Canvas overlays are more compact on mobile/tablet - All components use responsive spacing and padding Typography system redesign: - Reduced from 12 sizes to 5 levels (Display, Heading, Subheading, Body, Label) - Removed arbitrary pixel values (text-[7px], text-[9px], text-[10px], etc.) - All text now uses standard Tailwind classes (text-xs, text-sm, text-base, text-lg, text-xl) - Minimum text size is now 12px (text-xs) for better accessibility - Buttons upgraded to text-sm (14px) for improved touch targets - Consistent responsive scaling for top-level headers only Added docs/TYPOGRAPHY_SYSTEM.md with usage guidelines and component mapping. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .github | ||
| build | ||
| docs | ||
| electron | ||
| public | ||
| src | ||
| .gitignore | ||
| eslint.config.js | ||
| forge.config.js | ||
| index.html | ||
| LICENSE.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.app.json | ||
| tsconfig.electron.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.electron.mts | ||
| vite.config.mts | ||
Brother Embroidery Machine Web Controller
A modern web application for controlling Brother embroidery machines via WebBluetooth.
Features
- WebBluetooth Connection: Connect directly to Brother PP1 embroidery machines from your browser
- Pattern Upload: Load and upload PEN format embroidery files
- Pattern Visualization: Preview embroidery patterns on an interactive canvas with color information
- Real-time Monitoring: Monitor sewing progress, position, and status in real-time
- Machine Control: Start mask trace, start sewing, and manage patterns
Requirements
- Modern browser with WebBluetooth support (Chrome, Edge, Opera)
- HTTPS connection (required for WebBluetooth API)
- Brother PP1 compatible embroidery machine with BLE
Getting Started
Installation
npm install
Development
npm run dev
The application will be available at http://localhost:5173
Note: WebBluetooth requires HTTPS. For local development, you can use:
localhost(works with HTTP)- A reverse proxy with SSL
- Vite's HTTPS mode:
npm run dev -- --https
Build for Production
npm run build
The built files will be in the dist directory.
Preview Production Build
npm run preview
Usage
-
Connect to Machine
- Click "Connect to Machine"
- Select your Brother embroidery machine from the browser's Bluetooth device picker
- Machine information and status will be displayed
-
Load Pattern
- Click "Choose PEN File" and select a
.penembroidery file - Pattern details and preview will be shown on the canvas
- Different colors are displayed in the preview
- Click "Choose PEN File" and select a
-
Upload to Machine
- Click "Upload to Machine" to transfer the pattern
- Upload progress will be shown
- Pattern information will be retrieved from the machine
-
Start Mask Trace (optional)
- Click "Start Mask Trace" to trace the pattern outline
- Confirm on the machine when prompted
-
Start Sewing
- Click "Start Sewing" to begin the embroidery process
- Real-time progress, position, and status will be displayed
- Follow machine prompts for color changes
-
Monitor Progress
- View current stitch count and completion percentage
- See real-time needle position
- Track elapsed time
Project Structure
web/
├── src/
│ ├── components/ # React components
│ │ ├── MachineConnection.tsx
│ │ ├── FileUpload.tsx
│ │ ├── PatternCanvas.tsx
│ │ └── ProgressMonitor.tsx
│ ├── hooks/ # Custom React hooks
│ │ └── useBrotherMachine.ts
│ ├── services/ # BLE communication
│ │ └── BrotherPP1Service.ts
│ ├── types/ # TypeScript types
│ │ └── machine.ts
│ ├── utils/ # Utility functions
│ │ └── penParser.ts
│ ├── App.tsx # Main application component
│ ├── App.css # Application styles
│ └── main.tsx # Entry point
├── public/ # Static assets
├── package.json
├── tsconfig.json
└── vite.config.ts
Technology Stack
- React 18: UI framework
- TypeScript: Type safety
- Vite: Build tool and dev server
- WebBluetooth API: BLE communication
- HTML5 Canvas: Pattern visualization
Protocol
The application implements the Brother PP1 BLE protocol:
- Service UUID:
a76eb9e0-f3ac-4990-84cf-3a94d2426b2b - Write Characteristic:
a76eb9e2-f3ac-4990-84cf-3a94d2426b2b - Read Characteristic:
a76eb9e1-f3ac-4990-84cf-3a94d2426b2b
See ../emulator/PROTOCOL.md for detailed protocol documentation.
PEN Format
The application supports PEN format embroidery files:
- Binary format with 4-byte stitch records
- Coordinates in 0.1mm units
- Supports multiple colors and color changes
- Includes jump stitches and flags
Browser Compatibility
WebBluetooth is supported in:
- Chrome 56+
- Edge 79+
- Opera 43+
Not supported in:
- Firefox (no WebBluetooth support)
- Safari (no WebBluetooth support)
License
MIT