toadstoolTally/README.md
chris 84909ff4e0 Revamp Pattern Composer UI, fix Backup/Restore, and improve Image Uploads
- 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.
2025-12-15 21:53:04 -05:00

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`).