Stitchlet is a private, self-hosted crochet project companion designed to run on your own hardware (mini-PC, NAS, home server, or local computer). It keeps all of your pattern PDFs, progress photos, stitch counters, and notes local, cozy, and completely under your control. No surprise cloud subscriptions, no telemetry, just your projects.
- 📱 Cozy, Responsive UI – Sleek charcoal-themed dashboard with grid and list views, optimized for both desktop monitors and amigurumi-friendly mobile screens.
- 🔍 Smart Dashboard – Reactive searching, status filtering (Active, Paused, Finished, Frogged), and sorting (updated date, project title, status) to organize large libraries instantly.
- 📄 In-App PDF Viewer – Upload pattern PDFs, view them in an embedded full-screen modal directly inside your project page, or download them at any time.
- 📸 Progress Photos – Keep visual records of your work. Upload and replace cover photos with responsive, square CSS crops.
- ⏱️ Active Counters – Add multiple round or row counters per project with custom names, target values, completion states, and large tap targets designed to be used while actively crocheting.
- 🧶 Material Checklists – Quick metadata fields for yarn type, yarn weight, hook size, colors, and finished dimensions, plus custom list sections for assembly details and yarn substitutions.
- 💾 One-Click Backup & Restore – Download a compressed ZIP archive containing your SQLite database and all uploaded media files directly from the UI settings.
- 📶 Progressive Web App (PWA) – Installable as a standalone app with Network-First Service Worker asset caching, allowing the app shell to launch instantly and work offline.
Docker is the easiest way to deploy Stitchlet on a home server or NAS (such as Unraid, Synology, or TrueNAS).
Create a docker-compose.yml file:
services:
stitchlet:
image: pinkpixeldev/stitchlet:latest
container_name: stitchlet
ports:
- "6497:6497"
volumes:
- ./data:/app/data
- ./uploads:/app/uploads
- ./backups:/app/backups
environment:
- NODE_ENV=production
- PORT=6497
restart: unless-stoppedRun the container:
docker compose up -dOpen your browser and navigate to:
http://localhost:6497Three folders are created in your compose directory to persist all library data outside the container:
data/– Houses your SQLite database file (stitchlet.db).uploads/– Stores pattern PDFs and progress photos.backups/– Temporary staging directory for exported archives.
If you prefer to run Stitchlet natively on your machine:
- Node.js v22+
- npm
-
Install dependencies:
npm install
-
Start the development environment (runs Vite and Hono concurrently):
npm run dev
-
Open:
http://localhost:6497
The Vite development server hosts the frontend on port 6497 and proxies backend API calls to Hono on port 6498.
For full PWA installability, browsers require that the app is accessed over localhost or served via HTTPS:
- Home Wi-Fi only: Access Stitchlet on your local network using the host IP (e.g.
http://192.168.1.50:6497). - Private Remote Access (Tailscale): If you want to use your counters and view patterns while away from home, Tailscale is recommended. Run
tailscale serveon your host to securely route HTTPS traffic within your private tailnet without opening router ports. - Domain Routing: Use a reverse proxy like Caddy to configure SSL certificates for your host domain.
Because Stitchlet is private and local, you are in charge of your data.
- Via UI Settings: Navigate to Settings > Backup & Restore and click Export Backup. This will compile a zip file of your SQLite database and all uploaded project media.
- Restoring: Choose the exported ZIP file inside settings. Stitchlet will automatically unpack the files, close existing SQLite connections, overwrite files, and trigger a server reboot sequence.
- Automated Host Backups: Simply back up the mounted
./dataand./uploadsdirectories using your home server's backup scheduler.
Apache 2.0
Made with 💖 by Pink Pixel