Pitch: Tolgee Apps — from POC to production
1. Problem
Tolgee cannot be extended without forking or upstreaming. Every customer-specific need — a semantic back-translation check, glossary enforcement, linking keys to an external system — either becomes a feature request competing for core capacity, or doesn't happen at all. Competitors (Crowdin Apps, Atlassian Connect ecosystem) let third parties build on the platform; we have no story.
The hackathon produced a working plugin system POC (jancizmar/tolgee-apps-poc, architecture in docs/dev-notes/TOLGEE_APPS_ARCHITECTURE.md): manifest-registered apps render sandboxed iframes across the product, call the REST API with signed short-lived JWTs, and react to webhooks. Three example apps (dev-plugin, back-translate, glossary-keeper) were built against it with an SDK, CLI, and generator. The baseline problem now: this all lives on one giant unreviewed branch (~275 files). Nobody but the author can vouch for it, the security surface (iframes, tokens, SSRF, scope escalation) has never had focused review, and it can't merge as-is.
2. Appetite
4 weeks — two cycles worth of calendar time, one developer.
- Weeks 1–2 — implementation: extract the POC into ~9 vertically-integrated, UI-testable scopes (each ≈ one PR), merged to
main behind a tolgee.apps.enabled flag, each with e2e proof that an SDK-built app works against it.
- Weeks 3–4 — team review: reviewers work through the per-scope PRs; the developer addresses findings, hardens security per review feedback, and finishes docs.
3. Solution
The engine gives an app author three capabilities, delivered in this order, each proven end-to-end in the UI before the next starts:
Foundation — register & enable. Org settings → Apps: admin pastes a manifest URL, Tolgee fetches + validates it (SSRF-guarded, HTTPS-only), shows the parsed modules, stores the install. Project settings → Apps: project admin toggles the app per project. Disabled = invisible everywhere.
Pillar 1 — apps use the REST API. An enabled app's project-dashboard-page module appears in the project sidebar; clicking mounts a sandboxed iframe. postMessage handshake delivers a Tolgee-signed JWT (install/org/project/user claims, short TTL); the app calls /v2/... with it. Enforcement is scope-cap ∩ user-role. Proven by an SDK example app that reads and writes a translation from its page, asserted by Cypress.
Pillar 2 — apps enhance the UI. Same iframe host reused across: translation tools panel (receives live selection), key-edit dialog tab, key/translation action decorators (static + dynamic via the app's decoratorsUrl, count badges), and — nice-to-have — modals with five trigger surfaces including keyboard shortcuts.
Pillar 3 — apps react to webhooks. Manifest webhooks.events (validated against ActivityType) auto-provisions app-managed webhook configs. Demoed as the back-translate loop: edit a translation → webhook fires → app's decorator badge updates.
Growing alongside every scope: @tolgee/apps-sdk (context, selection, API helpers), the e2e suite (a real SDK app per scope), and the docs section in the documentation repo. UI is not redesigned — the POC's UI, already user-validated in the hackathon, serves as the mockup (deliberate deviation from our "Figma during shaping" rule).
5. No-gos
- No ZIP-based plugin delivery, no marketplace/directory, no app discovery UI.
6. Success criteria
- The time to deliver a prototype of customer specific feature is shorter
- User's understand apps and create their own
- We have 20 registered user apps in 2 months
Pitch: Tolgee Apps — from POC to production
1. Problem
Tolgee cannot be extended without forking or upstreaming. Every customer-specific need — a semantic back-translation check, glossary enforcement, linking keys to an external system — either becomes a feature request competing for core capacity, or doesn't happen at all. Competitors (Crowdin Apps, Atlassian Connect ecosystem) let third parties build on the platform; we have no story.
The hackathon produced a working plugin system POC (
jancizmar/tolgee-apps-poc, architecture indocs/dev-notes/TOLGEE_APPS_ARCHITECTURE.md): manifest-registered apps render sandboxed iframes across the product, call the REST API with signed short-lived JWTs, and react to webhooks. Three example apps (dev-plugin, back-translate, glossary-keeper) were built against it with an SDK, CLI, and generator. The baseline problem now: this all lives on one giant unreviewed branch (~275 files). Nobody but the author can vouch for it, the security surface (iframes, tokens, SSRF, scope escalation) has never had focused review, and it can't merge as-is.2. Appetite
4 weeks — two cycles worth of calendar time, one developer.
mainbehind atolgee.apps.enabledflag, each with e2e proof that an SDK-built app works against it.3. Solution
The engine gives an app author three capabilities, delivered in this order, each proven end-to-end in the UI before the next starts:
Foundation — register & enable. Org settings → Apps: admin pastes a manifest URL, Tolgee fetches + validates it (SSRF-guarded, HTTPS-only), shows the parsed modules, stores the install. Project settings → Apps: project admin toggles the app per project. Disabled = invisible everywhere.
Pillar 1 — apps use the REST API. An enabled app's
project-dashboard-pagemodule appears in the project sidebar; clicking mounts a sandboxed iframe. postMessage handshake delivers a Tolgee-signed JWT (install/org/project/user claims, short TTL); the app calls/v2/...with it. Enforcement is scope-cap ∩ user-role. Proven by an SDK example app that reads and writes a translation from its page, asserted by Cypress.Pillar 2 — apps enhance the UI. Same iframe host reused across: translation tools panel (receives live selection), key-edit dialog tab, key/translation action decorators (static + dynamic via the app's
decoratorsUrl, count badges), and — nice-to-have — modals with five trigger surfaces including keyboard shortcuts.Pillar 3 — apps react to webhooks. Manifest
webhooks.events(validated againstActivityType) auto-provisions app-managed webhook configs. Demoed as the back-translate loop: edit a translation → webhook fires → app's decorator badge updates.Growing alongside every scope:
@tolgee/apps-sdk(context, selection, API helpers), the e2e suite (a real SDK app per scope), and the docs section in the documentation repo. UI is not redesigned — the POC's UI, already user-validated in the hackathon, serves as the mockup (deliberate deviation from our "Figma during shaping" rule).5. No-gos
6. Success criteria