- 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.
62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
# 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
|
|
```bash
|
|
# 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/`.
|
|
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
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, multipart `file`) -> `{ 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`).
|