Skip to content

[OpenSpec] contribution-landing-page-action #437

Description

@github-actions

⚠️ OpenSpec-managed issue — this content is automatically synced
from the openspec/ directory. Manual edits will be overwritten on next sync.

Artifacts

Summary

Adds the phase 0 platform prerequisite from the pipelinq marketing programme
(pipelinq/docs/Technical/marketing-architecture.md, phase 0): a same-instance
cross-app command that lets a contributing app (pipelinq first) ask Portaliq
to provision a draft CMS landing page with a bound lead-capture form, plus the
return path — Portaliq notifying the contributing app when a visitor submits
that form, carrying UTM first/last-touch attribution. Publishing stays an
editor's own action in the CMS; this change only ever creates draft pages.

Specs

Tasks

  • Implement
  • Test
  • Implement
  • Test
  • Implement
  • Test
  • Implement
  • Test
  • All tasks checked off
  • openspec validate passes
  • Manual testing against acceptance criteria (static: phpcs/phpmd/psalm/phpstan/eslint/prettier/stylelint all green; PHPUnit written and syntax-verified but NOT executed — this worktree's bootstrap needs a live Nextcloud server tree it is not nested under, see the PR description)
  • Code review against spec requirements
  • PHPUnit unit tests for new/changed business logic (tests/Unit/) — written, php -l clean, not executed in this environment (see Verification)
  • Newman/Postman tests for new/changed API endpoints — N/A, this change adds no new HTTP endpoint (same-instance event dispatch + the existing anonymous-create route)
  • Browser tests (Playwright MCP) for UI changes — tests/e2e/site-form-submission.spec.ts written, verified with --list only (no live instance reachable in this environment)
  • All tests pass (composer test, npm run test:unit) — NOT confirmed; npm run test:unit does not exist in this repo (its real per-file JS checks pass, see PR description), and composer test:unit/PHPUnit could not run here
  • Feature documentation updated in docs/ (docs/operations/landing-page-contribution.md)
  • Screenshot captured and committed to docs/images/ — N/A, this change's user-facing surface is a form on a dynamically-created landing page with no fixed screenshot subject; the docs page shows the request/response contract instead
  • Dutch (nl_NL) and English (en_US) translation strings added — N/A, no new translatable strings were added to any l10n/ catalogue; FormBlock.vue's default labels are Dutch (matching this app's existing site-renderer convention of author-supplied, not catalogue-driven, public copy) and are always overridable by the authored form object

Design

See design.md for technical design details.


Synced from openspec/changes/contribution-landing-page-action by OpenSpec workflow
App: portaliq

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions