KnitCalc is a knitting calculator designed to help knitters achieve accurate gauge conversions, precise yarn estimations, and efficient project planning. It simplifies complex calculations by converting sample swatches into target stitch, row, and yarn-length estimates, ensuring projects are executed with precision.
Key Features:
Gauge Conversion: Quickly convert sample swatch measurements into target stitches per centimeter.
Yarn Estimation: Calculate the exact amount of yarn needed for a project based on swatch data.
Project Notes & Photos: Save project details and attach photos directly within the app for easy reference.
Multi-Language Support: Available in both Russian and English, with seamless language switching.
Cloud Syncing: Sync projects across devices using Firebase, ensuring continuity whether offline or online.
Audience & Benefit:
Ideal for hobbyist knitters, crafting enthusiasts, and professionals seeking precision. KnitCalc empowers users to plan and execute knitting projects with confidence, eliminating guesswork and reducing errors in yarn usage and stitch counts. Its intuitive design ensures that even less experienced knitters can achieve professional-level accuracy.
Available via winget for easy installation on Windows systems.
README
KnitCalc
KnitCalc is a cross-platform calculator for knitting. It converts a sample
swatch into target stitch, row, and yarn-length estimates. The interface is
available in Russian and English.
Installation
The web app runs at . Native builds for
every platform are attached to GitHub Releases;
package managers are served from this repository directly:
# Windows (Scoop; this repo doubles as the bucket)
scoop bucket add knitcalc https://github.com/dmezhnov/knitcalc
scoop install knitcalc
# macOS (Homebrew; this repo doubles as the tap — the build is unsigned)
brew tap dmezhnov/knitcalc https://github.com/dmezhnov/knitcalc
brew install --cask --no-quarantine knitcalc
# Linux
sudo snap install knitcalc # Snap Store
yay -S knitcalc-bin # AUR
On Linux, Windows and macOS alike the release assets can also be installed with
the mise version manager, which puts knitcalc on PATH
and, for the current user, into the place the platform launches apps from: the
application menu on Linux, ~/Applications on macOS, the Start menu on Windows.
This repository doubles as its own mise plugin, so no entry in mise's registry
is involved:
mise plugin install knitcalc https://github.com/dmezhnov/knitcalc
mise use -g knitcalc@latest
Without installing a plugin the same builds are reachable through mise's
github backend — add this to ~/.config/mise/config.toml and run
mise install. This path runs no plugin hooks, so it only puts knitcalc on
PATH — no menu entry; on Linux one can be added afterwards with the install.sh
that ships inside the installed directory:
Both mise paths install the plain Linux tarball, which links the system GTK 3
stack rather than carrying a runtime of its own (the AppImage, Snap and Flatpak
builds do, and the .deb declares GTK as a dependency); if it is missing, the
plugin's install hook lists the libraries and the package to install. On NixOS
that means nix-ld — with these libraries runs from any shell:
Linux users can also take the AppImage (with zsync delta updates) from the
release assets, or add the apt repository hosted on the GitHub Pages site —
setup commands for it and the remaining channels (winget, Chocolatey,
IzzyOnDroid, openSUSE Build Service, nixpkgs) are collected in
packaging/README.md. Android APKs (universal and
per-ABI) ship with every release.
Features
Multiple product types, selected from a dropdown. Each type provides its own
inputs and calculations.
Numeric inputs for the sample swatch (size, stitch and row counts) plus
per-type target parameters.
Live calculations from the swatch gauge — starting with stitches and rows per
centimeter — refreshed on every input change.
Photo attachments on saved projects, stored inline with the project data.
Optional account (email/password or Google sign-in) that syncs projects
between devices via Firebase; the app is fully functional without it
(see the privacy policy).
Built-in update checks matched to the install channel: self-update for
manual installs, the package manager or store otherwise.
Runtime language switch between Russian and English.
Release builds for Android, Linux, Web, Windows, macOS, and unsigned iOS.
Requirements
mise for project tasks and depends.
The project pins tool versions in mise.toml.
Setup
Install project tools and hooks:
mise install
Run the app:
mise dev
Quality Checks
Run linters:
mise lint
Format files supported by Trunk:
mise format
Run Flutter tests:
mise test
The release workflow runs mise lint before mise test. If linting
fails, the workflow stops before tests and builds.
Builds
Build one target with:
mise build
Supported targets:
apk
apk-split
appbundle
web
linux
windows
macos
ios
On NixOS, the Linux build and mise dev wrap themselves in an ad-hoc
nix-shell that provides the GTK toolchain; other distros and CI use the
system toolchain directly. Windows, macOS, and iOS builds must be run on their
native GitHub Actions runners or on matching local machines.
Examples:
mise build apk
mise build web
mise build linux
The Web build uses --base-href /knitcalc/ for GitHub Pages.
Release Flow
Publishing is driven by the test branch:
mise publish "1.1.1+3" "Release commit message"
mise publish writes the given version into pubspec.yaml, commits all
working-tree changes, pushes to origin/test, and streams the release run
until it finishes. The part of the version before + is the public app
version; the number after + is the platform build number and should
increase for every release.
On push to test, GitHub Actions:
Runs Trunk linting, then Flutter analysis and tests.
Builds all supported targets — including per-ABI APKs, the AppImage with
its .zsync, and a .deb plus a signed apt repository.
Merges into main, renders the package-manager manifests that live on
main (Scoop bucket, Homebrew cask, flatpak metainfo), and recreates the
release/ folder with the current version's artifacts.
Creates a version tag and GitHub Release.
Publishes to the external channels: winget, Chocolatey, the Snap Store,
and the AUR.
Deploys the web build (which carries the apt repository) to GitHub Pages.
A pre-commit hook blocks commits that reuse an already-published git tag.
Outputs
The iOS artifact is unsigned because signed iOS releases require an Apple
Developer Program account, certificates, and provisioning profiles.
The GitHub Pages site is published at:
https://dmezhnov.github.io/knitcalc/
License
This project is licensed under the MIT License. See LICENSE.