Skip to content

refactor(marketing): Source of Truth architecture for pricing - #27

Merged
tomymaritano merged 1 commit into
mainfrom
refactor/sot-architecture
Jan 1, 2026
Merged

refactor(marketing): Source of Truth architecture for pricing#27
tomymaritano merged 1 commit into
mainfrom
refactor/sot-architecture

Conversation

@tomymaritano

Copy link
Copy Markdown
Collaborator

Summary

  • Migrates landing page components to consume getProductConfig() instead of hardcoded values
  • Fixes critical bug: Audience.astro showed "$79 one-time" (wrong) — now shows "Free forever"
  • Documents the golden rule for pricing changes in CLAUDE.md

Architecture

product-config/facade.ts (SoT)
        ↓
   Marketing pages consume via import
        ↓
   Legal pages: semi-manual, checklist before merge

Changes

File Change
Hero.astro Uses config.trialDays for trial copy
Audience.astro Fixes pricing signals, uses config.trialDays
CLAUDE.md Documents golden rule for pricing changes

Golden Rule (now documented)

If the business model changes, one PR must touch:

  1. product-config/facade.ts — Update SoT
  2. Marketing pages — Auto-updated via import
  3. terms.astro + privacy.astro — Align vocabulary manually

Test plan

  • Marketing site builds successfully
  • Verify landing page shows "Free forever" instead of "$79"

🤖 Generated with Claude Code

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@tomymaritano
tomymaritano force-pushed the refactor/sot-architecture branch from 8b7a276 to 5dbc2e7 Compare January 1, 2026 21:43
Migrates Hero.astro and Audience.astro to use getProductConfig() instead
of hardcoded pricing/trial values. Fixes incorrect "$79 one-time" display
(now shows "Free forever" to match Freemium model).

Changes:
- Hero.astro: Uses config.trialDays for trial copy
- Audience.astro: Fixes pricing signals, uses config.trialDays
- CLAUDE.md: Documents golden rule for pricing changes

Source of Truth: packages/product-config/src/facade.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@tomymaritano
tomymaritano force-pushed the refactor/sot-architecture branch from 5dbc2e7 to 4507485 Compare January 1, 2026 21:45
@tomymaritano
tomymaritano merged commit c280b73 into main Jan 1, 2026
3 checks passed
@tomymaritano
tomymaritano deleted the refactor/sot-architecture branch January 1, 2026 21:46
tomymaritano added a commit that referenced this pull request Aug 22, 2026
…tach (#570)

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

Build & Publish **#27** ([run
32590544551](https://github.com/dripnex/app/actions/runs/32590544551))
built signed mac/win/linux installers, then the run went red.
[v0.16.1](https://github.com/dripnex/app/releases/tag/v0.16.1) notes
exist; assets were empty.

**Job that made #27 red:** `sync-develop` / Create sync PR
```
pull request create failed: GraphQL: GitHub Actions is not permitted to create or approve pull requests (createPullRequest)
```
Tomás: Settings → Actions → General → Workflow permissions → enable
**Allow GitHub Actions to create and approve pull requests**. That is
not why binaries are missing.

**Why assets were empty (all three `build` jobs + `publish`
succeeded):** `workflow_run` uses **develop**'s YAML (default branch),
which lacked the stamp step already on `main`. Tree version is still
`0.15.2` (tag-without-bump). electron-builder packaged
`Dripnex-0.15.2.*` and skipped upload onto the already-published
`v0.15.2`:
```
GitHub release not created  reason=existing type not compatible with publishing type tag=v0.15.2 version=0.15.2 existingType=release publishingType=draft
```
Signing/notary is fine (`notarization successful`; `CSC_*` / `APPLE_*`
present). Not a flake.

This PR (develop — the file `workflow_run` actually runs):

1. Stamp `package.json` from the tag before packaging (same step as
`main` / #540).
2. Re-draft the target GitHub Release so `--publish always` can attach
assets on retry.

No product code. AuthGate untouched. No store. No iOS.

### Retry (Tomás — cloud agent token cannot `workflow_dispatch`, HTTP
403)

v0.16.1 is already converted back to **draft** so electron-builder can
upload. Either:

```bash
# fastest: main already has the stamp step
gh workflow run "Build & Publish" --ref main -f tag=v0.16.1
```

```bash
# or this branch (stamp + auto re-draft)
gh workflow run "Build & Publish" --ref cursor/fix-v0161-build-assets-f239 -f tag=v0.16.1
```

Actions UI: Run workflow → branch `main` or
`cursor/fix-v0161-build-assets-f239` → tag `v0.16.1`.

`sync-develop` will fail again on the retry until the Actions PR setting
above is enabled. Installers still attach before that job.

## Type of Change

- [x] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update

## Related Issues

Unblocks empty v0.16.1 assets after promotion #569 / Build #27.

## Checklist

- [x] I've read CONTRIBUTING.md
- [x] Workflow-only change (no product tests)
- [x] PR targets `develop` branch (not `main`)

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-3629b701-130d-4cce-99f3-8e22cf2ff239?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-3629b701-130d-4cce-99f3-8e22cf2ff239&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant