- Стоїть на dev-магазині healthbar-upsell-test, зроблено для магазину Health Bar.
- Період
- 2026
- Обсяг
- 110 комітів, 45 фіч
- Стек
- React Router 7, Shopify App (managed install), Cloudflare Workers, D1, Workflows, KV, Anthropic SDK
Застосунок, що перекладає контент магазину на всі його мови й тримає переклади актуальними — заміна Transcy. Shopify віддає кожне поле разом із digest (хешем оригіналу), тож «що треба переперекласти» — це запит, а не власний детектор змін. Головне рішення: застосунок веде власний облік того, ХТО написав кожен переклад (синк, людина, попередній застосунок), чого Shopify не зберігає — саме це дозволяє синку заповнювати прогалини й ніколи не перетирати людську правку. Прогін — це Cloudflare Workflow, один durable-крок на сторінку ресурсів; планові прогони йдуть через Anthropic Message Batches API за півціни.
Активність45 фіч
Вересень 2026
- 8 верMake the app chargeable, and fix the seven the review foundapp/lib/billing.ts app/routes/app.run-status.tsx
- 7 верForget the fields of content that no longer existsapp/lib/db/fields.test.ts
- 7 верFix what the max review found: uninstall and redact could miss, or hit a live shopmigrations/0026_registered_at.sql
- 7 верMake the app submittable: compliance webhooks, optional write scopes, setup cardapp/routes/webhooks.compliance.tsx migrations/0025_setup_card.sql
- 4 верHold the two sides of "out of date" to the same answerapp/lib/translation/standing.test.ts
- 4 верClose the last five open items, and the 29 a review foundapp/lib/db/batches.ts app/lib/use-dirty-form.ts migrations/0023_last_admin_visit.sql migrations/0024_batched_calls.sql
- 3 верMake the per-language image field, instead of explaining itapp/lib/shopify/image-field.ts app/routes/app.image-field.tsx
- 3 верSay what the app could not read, and what it did readapp/lib/translation/gaps.ts migrations/0022_unreadable_sources.sql
- 3 верSay it in the merchant's words, not the API'smigrations/0021_translation_model.sql
- 3 верMake the two protective rules real settingsmigrations/0020_rules_are_settings.sql
- 3 верSuggest products instead of making somebody guess a titleapp/routes/app.products.tsx
- 3 верSend alerts without asking anybody for a key or an addressmigrations/0019_shop_email.sql
- 3 верLet the picker reach past the newest two dozen filesapp/routes/app.images.tsx
- 2 верBound every batch by the text it carries, not just by row countapp/lib/db/chunk.test.ts
- 2 верSettings, against the mockup line by lineapp/lib/translation/resource-types.test.ts
- 2 верA language chip is a link the router owns, and approving is not a writemigrations/0018_approval_is_not_a_write.sql
- 2 верFix the crash on a checkbox, and the rules that did not line upmigrations/0017_metafield_labels.sql
- 2 верFinish the artifact: the side panel, the scope switches, and the restmigrations/0016_excluded_types.sql
- 2 верMake the screens look like the mockups, checked in a real adminapp/components/admin-ui.tsx
- 2 верClose the gaps: the bars, the per-field actions, and settings that decide somethingapp/lib/shopify/admin-links.test.ts app/lib/shopify/admin-links.ts
- 2 верSend the alerts, and finish the per-language imagesapp/lib/alerts/conditions.test.ts app/lib/alerts/conditions.ts app/lib/alerts/send.ts app/lib/db/alerts.ts migrations/0015_alerts_sent.sql
- 2 верRebuild the four screens on the ownership indexapp/lib/translation/glossary-suggest.test.ts app/lib/translation/glossary-suggest.ts migrations/0014_glossary_upgrades.sql
- 2 верSay how it should sound, and record what it costapp/lib/translation/diff.test.ts app/lib/translation/diff.ts app/lib/translation/formality.test.ts app/lib/translation/formality.ts app/lib/translation/pricing.ts
- 2 верGroup content by the object it renders on, not by Shopify's bucketapp/lib/db/fields.ts app/lib/db/ownership.ts app/lib/shopify/ownership.ts app/lib/sync/index-store.ts app/lib/translation/ownership.test.ts
- 1 верAnswer the nine UX findings that were left openapp/lib/review-list.ts app/lib/translation/sanitize.test.ts app/lib/translation/sanitize.ts
Серпень 2026
- 31 серAnswer the first five UX findings, and the search trapmigrations/0011_adoption_record.sql
- 31 серFinish the four parts of the rebuild that were done differentlyapp/lib/use-action-toast.ts
- 31 серTest the pure core, and fix what the first run of it foundapp/lib/db/translations.test.ts app/lib/translation/engines/llm.test.ts app/lib/translation/html.test.ts vitest.config.ts
- 31 серHousekeeping the review found, and two scopesmigrations/0009_per_shop_engine.sql migrations/0010_drop_dead_schedule_cron.sql
- 31 серRebuild the merchant screens rather than tidy themapp/lib/labels.ts app/lib/shopify/custom-data.ts app/routes/app.settings.tsx app/routes/app.translations.$resourceId.tsx
- 31 серEvery way a shop stopped being synced, and nothing said somigrations/0006_run_failure_counts.sql migrations/0007_run_warnings.sql migrations/0008_opt_in_types.sql
- 31 серThe database layer: close the hole in the never-overwrite ruleapp/lib/sync/field-status.ts
- 31 серBand 1 of the review: seven things wrong on a normal dayapp/lib/db/chunk.ts migrations/0005_glossary_locale_sentinel.sql
- 31 серGive the email-template flag a switch, and drop a column that liedmigrations/0004_drop_dead_engine_column.sql
- 31 серShow image translations as images, not as a raw GIDapp/lib/shopify/files.ts
- 31 серPut the client's last two decisions into the codeapp/lib/db/email-templates.ts migrations/0003_email_baseline.sql
- 28 серAdd real translation engines behind the existing interfaceapp/lib/translation/engines/anthropic.ts app/lib/translation/engines/llm.ts app/lib/translation/engines/workers-ai.ts
- 27 серAdopt existing translations, and stop hiding failed runsapp/lib/sync/import-existing.ts
- 27 серAdd the translations and glossary screensapp/routes/app.glossary.tsx app/routes/app.translations.tsx
- 27 серFix three silent gaps found reviewing the syncapp/lib/db/shops.ts
- 27 серAdd 12-hour scheduler and a webhook that never translatesapp/lib/sync/process-resource.ts app/routes/webhooks.app.products_update.tsx migrations/0002_scheduling.sql workers/scheduler.ts
- 27 серClassify all 30 translatable resource typesapp/lib/translation/resource-types.ts
- 27 серAdd D1 data model and the never-overwrite ruleapp/lib/db/translations.ts migrations/0001_initial.sql
- 27 серAdd MyMemory engine for testing the pipelineapp/lib/translation/engines/mymemory.ts app/lib/translation/html.ts
- 27 серScaffold translation app on Cloudflare Workers.graphqlrc.ts app/entry.server.tsx app/globals.d.ts app/lib/shopify/translatable.ts app/lib/translation/engines/passthrough.ts