← Back to list
Bead Grid Helper (一格格拼豆)

Bead Grid Helper (一格格拼豆)

ReleasedWeChat Mini Programs

Stack: Taro 4 · Vue 3 · TypeScript · Tencent CloudBase · Vitest · GitHub Actions

Turn a bead pattern into something you can tick off, one cell at a time. Bead Grid Helper is a WeChat mini program for perler-bead crafters. You import a pattern image, lay a grid over it, then work through the pattern in an editor that remembers where you stopped. When it is finished, you can send it to a friend as a small gift.

From a pattern image to a finished bead piece
From a pattern image to a finished bead piece

Highlights

  • Grid aligned by you, not guessed

    Enter rows and columns, drag the four edges to frame the pattern, then fine-tune the four corners for perspective with a local magnifier. The grid is its own logical layer on top of the image, so a slightly crooked photo still works.

  • Three ways to build

    Free browsing, row by row with a "next cell" hint, or colour by colour. Progress is stored as a compact bit set, with undo, and picks up where you left off.

  • A colour system you can correct

    Similar colours are grouped for you, and you can merge, split, hide the background, move single cells between groups, and undo each step. Groups bind to MARD 221, MARD 291 or Hama Midi codes, or to your own palette, and feed a bead shopping list.

  • Share it as a gift

    A gift card with your name and avatar goes to a friend, who taps tiles to reveal the pattern. Finished pieces live in a collection board you can rearrange.

Import and align the grid

Pick a clear pattern image and type its rows and columns. The calibration page then lays a grid over it: drag the four edges to frame the numbered area, nudge the four corners for perspective, and check the fit in the magnifier. Full-screen and landscape modes help on large patterns. The grid is a separate logical layer, so the image itself is never cut up.

Import: pick an image and enter rows and columns (sample pattern)
Import: pick an image and enter rows and columns (sample pattern)
Calibration: drag edges and corners, check the fit in the magnifier (sample pattern)
Calibration: drag edges and corners, check the fit in the magnifier (sample pattern)

Build it cell by cell

The editor keeps the pattern as a zoomable, pannable image with the aligned grid over it. Switch between browsing the whole pattern and building row by row or by colour, with the active row and total progress always in view. Ticked cells can be shown as a colour fill, a cross, a slash, a tick or a heart. Pinch-zoom stays smooth because gesture state is kept local until the gesture ends.

Build by colour: only the current colour, finished cells marked with hearts (sample pattern)
Build by colour: only the current colour, finished cells marked with hearts (sample pattern)
Build by row: the current row is highlighted with its progress (sample pattern)
Build by row: the current row is highlighted with its progress (sample pattern)
The editor: aligned grid, total progress, view modes and colour groups (sample pattern)
The editor: aligned grid, total progress, view modes and colour groups (sample pattern)

Manage colours

The colour page groups similar colours, lets you calibrate, merge or split them, and binds each group to a palette code. The sample pattern below happens to have a single colour, so only one group shows.

The colour page: calibrate, merge and palette settings (sample pattern)
The colour page: calibrate, merge and palette settings (sample pattern)

Share and collect

"Share" turns a piece into a gift card: the recipient sees your chosen name and avatar, taps tiles to uncover the pattern, and can keep it as their own project or start a new one. A cloud function stores the share snapshot, and text and images pass content-safety checks before anything is saved or shown.

The gift card: name, avatar and preview, ready to send (sample pattern)
The gift card: name, avatar and preview, ready to send (sample pattern)
What a friend sees: tap tiles to reveal the gift (sample pattern)
What a friend sees: tap tiles to reveal the gift (sample pattern)

Finished pieces and gifts you have received are pinned to a felt board in the collection room. You can filter by "mine" or "received", change the felt colour, toggle the labels, and drag pieces around; each piece keeps its completion date.

The collection room: finished pieces and gifts pinned to a felt board
The collection room: finished pieces and gifts pinned to a felt board

How it works

The app is local-first. Projects, progress and the pattern image stay on the device, and a project stays active for 72 hours, extendable by watching a rewarded ad (the first import is free, and ads are wired in but off until the ad slot is approved). Only sharing touches the cloud: one CloudBase function stores share snapshots, sends expiry reminders as WeChat subscription messages on an hourly schedule, and runs text and image safety checks. Pages only orchestrate; grid, calibration, progress and colour logic sit in a platform-independent core layer with unit tests.

Architecture: the mini program, on-device storage, the cloud function and WeChat services
Architecture: the mini program, on-device storage, the cloud function and WeChat services

Engineering notes

  • A debugging case I like to talk about: pinch-zoom was laggy, and I traced it through three layers (full-grid redraws, a deep watcher on a huge array, and whole-state replacement on every touch move). The fix keeps gesture state local until the gesture ends.
  • A product call backed by data: automatic row and column detection got only 3 of 13 test cases right, so I shelved it and hid the entry point instead of shipping a feature that guesses wrong. The code and the regression script are still there.
  • Honest colours: the palettes are third-party screen approximations, labelled as such, and the UI says "suggested" rather than "exact".
  • Content safety: a pattern image is pre-screened on the device before upload, and the cloud checks images and text again before saving. This was added after WeChat's platform review, and the newest hardening is in the codebase but not deployed yet.
  • Tested and checked in CI: about 250 test cases cover grid, calibration, progress, colour, palettes, sharing and the cloud function, and GitHub Actions runs tests, type checks and the build on every push.

Status

Released on WeChat: it passed verification on 12 Aug 2026, version 0.1.6 went out on 26 Aug 2026, and it has reached about 100 cumulative users through organic traffic alone, with no promotion. Next up: deploying the latest safety work and re-testing on real devices, turning on rewarded ads once the ad slot is ready, and reconsidering automatic recognition later. The source is private, so this page uses screenshots in place of code; every screenshot uses a sample pattern with no personal data.

The source code for this project is private, so screenshots and notes are shown here instead. Happy to walk through the code on request.