Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,18 @@ apps/web/lib/copy/ — Markdown versions of key pages for "Machine" view

## Deployment

- Public Vercel project: repo `recoupable/marketing`, root directory `apps/web`
- Internal Vercel project: optional separate project with root directory `apps/ops`
- Keep public and internal apps as separate deployments, even though they live in
the same repo
- **Public site deploys to: `https://recoupable.com`** — Vercel project points at repo `recoupable/marketing`, root directory `apps/web`
- **Internal ops app:** optional separate Vercel project with root directory `apps/ops` (not public-facing)
- Keep public and internal apps as separate deployments, even though they live in the same repo

## Why Two Apps?

`apps/web` and `apps/ops` are two separate Next.js apps in the same workspace because they serve completely different audiences and have different deployment/access requirements:

- **`apps/web`** — The public-facing marketing site at `recoupable.com`. SEO-optimized, publicly accessible, handles the blog, landing pages, and subscriber/lead capture.
- **`apps/ops`** — Internal marketing operations tooling. Private workflows, CRM automation, and reporting dashboards not meant for the public. Deployed as a separate Vercel project so it can be access-controlled independently.

They share the same repo for convenience (shared brand context, content files, transcripts) but are deployment/runtime independent, while sharing workspace tooling (pnpm workspaces, shared configs).

## Transcripts folder

Expand Down
10 changes: 5 additions & 5 deletions apps/ops/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@
"lint": "next lint --fix"
},
"dependencies": {
"next": "16.0.10",
"next": "16.2.1",
"react": "^19.2.1",
"react-dom": "^19.2.1"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.13",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.2.1",
Comment on lines +20 to +21
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify React runtime/types alignment in all workspace manifests
fd package.json apps -x sh -c '
  echo "== $1 ==";
  rg -n "\"react\"|\"react-dom\"|\"@types/react\"|\"@types/react-dom\"" "$1";
  echo
' sh {}

Repository: recoupable/marketing

Length of output: 364


Update @types/react and @types/react-dom to 19.x across all workspace apps.

React/react-dom are at 19.2.1, but their type packages remain at 18.x in both apps/ops and apps/web. This mismatch causes JSX and hook typing errors.

Proposed fix
   "devDependencies": {
     "@types/node": "^20",
-    "@types/react": "^18",
-    "@types/react-dom": "^18",
+    "@types/react": "^19",
+    "@types/react-dom": "^19",
     "eslint": "^9",
     "eslint-config-next": "16.2.1",
     "typescript": "^5"
   }

Apply this update to both apps/ops/package.json and apps/web/package.json.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/ops/package.json` around lines 20 - 21, Update the mismatched type
packages by bumping the devDependencies for `@types/react` and `@types/react-dom` to
a 19.x range (e.g., "^19.0.0" or matching React 19.2.1) in both package.json
files for the workspace apps that use React (look for the entries "@types/react"
and "@types/react-dom" in each app's package.json); run a fresh install
afterward to ensure lockfile updates and verify JSX/hook type errors are
resolved.

"typescript": "^5"
}
}
10 changes: 5 additions & 5 deletions apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"geist": "^1.3.1",
"gray-matter": "^4.0.3",
"lucide-react": "^0.471.0",
"next": "16.0.10",
"next": "16.2.1",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"rehype-highlight": "^7.0.2",
Expand All @@ -29,10 +29,10 @@
"@tailwindcss/postcss": "^4.1.17",
"@tailwindcss/typography": "0.5.0-alpha.3",
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.13",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.2.1",
"postcss": "^8",
"prettier": "3.3.3",
"tailwindcss": "^4.1.17",
Expand Down
Loading