- Refactored Pattern Composer UI with new tabs (Specs, Draft, Read, Shelf). - Added support for multiple Yarns and Hooks with integrated color pickers. - Improved Step drafting UX: reordered list/editor, added inline actions. - Fixed Database Backup/Restore: switched to SQL dump/restore for robustness. - Improved Image Uploads: added WebP optimization (with fallback) and preview display. - Updated local dev setup: added live-server proxy config and concurrently script.
Toadstool Cottage Counter
PWA-friendly, cottagecore row counter for crochet/knitting projects. Manage projects and parts, set max stitches, lock/finish, and enjoy a themed experience with install support and offline caching.
Features
- Add projects and parts; rename, delete, minimize, lock, or mark finished.
- Increment/decrement counts, manual set, and per-part max stitch cap.
- Dark/light toggle, focus mode (fullscreen + wake lock), haptic tick on count.
- PWA ready: install prompt, manifest, service worker caching, offline-friendly.
- Themed UI with footer artwork and responsive layout.
Development
# Open locally
open index.html # or use a simple HTTP server for PWA/service worker
# Example dev server
python3 -m http.server 8080
- Service worker requires an HTTP/HTTPS context; use a local server to test install/offline.
- Data is stored in
localStorage; clear it to reset.
Backend (optional sync)
Node + Docker demo backend lives in server/.
# Dev
cd server
npm install
npm run dev # http://localhost:4000
# Docker
docker build -t toadstool-api .
docker run -p 4000:4000 toadstool-api
Docker Compose (app + Postgres)
docker compose up --build
# App/API: http://localhost:4000
# Postgres: localhost:5432 (user/pass/db: toadstool)
API (in-memory, demo):
POST /api/signup{ email, password, displayName? }->{ token, email }POST /api/login{ email, password }->{ token, email }POST /api/logout(Bearer token)GET /api/sync?since=...(Bearer token) ->{ projects, patterns }POST /api/sync(Bearer token){ projects, patterns }GET /api/me,POST /api/me(profile)POST /api/patterns/:id/share->{ token, url },GET /share/:token->{ pattern }POST /api/upload(Bearer token, multipartfile) ->{ url }(resizes/compresses to/uploads)
Replace with real auth/storage before production.
PWA Notes
- Manifest:
assets/site.webmanifest - Service worker:
sw.js - Install button appears when installable (desktop browsers that support
beforeinstallprompt).
Description
Languages
JavaScript
55.8%
CSS
37.6%
HTML
6.6%