Skip to content
Merged
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
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@
<p><i>Turn visibility signals into growth decisions from one open-source workspace.</i></p>
</div>

<div align="center">
<h3>Join the OpenCMO community</h3>
<img src="assets/community-qr.png" alt="OpenCMO WeChat group QR code" width="240" />
<p><i>Questions, ideas, or feedback? Scan with WeChat to join our group chat.</i></p>
</div>

---

## Real Production Examples
Expand Down
6 changes: 6 additions & 0 deletions README_es.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@
<p><i>Un solo workspace para monitoreo, reportes, aprobaciones y contexto competitivo.</i></p>
</div>

<div align="center">
<h3>Únete a la comunidad de OpenCMO</h3>
<img src="assets/community-qr.png" alt="Código QR del grupo de WeChat de OpenCMO" width="240" />
<p><i>¿Preguntas, ideas o comentarios? Escanea el QR con WeChat para unirte a nuestro grupo.</i></p>
</div>

---

## Ejemplos de Produccion Reales
Expand Down
6 changes: 6 additions & 0 deletions README_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@
<p><i>監視、レポート、承認、競合文脈を1つの画面で確認できます。</i></p>
</div>

<div align="center">
<h3>OpenCMO コミュニティに参加</h3>
<img src="assets/community-qr.png" alt="OpenCMO WeChat グループQRコード" width="240" />
<p><i>ご質問・ご意見・フィードバックは、WeChat でQRを読み取ってグループにご参加ください。</i></p>
</div>

---

## 本番環境の実例
Expand Down
6 changes: 6 additions & 0 deletions README_ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@
<p><i>모니터링, 리포트, 승인, 경쟁 맥락을 하나의 화면에서 봅니다.</i></p>
</div>

<div align="center">
<h3>OpenCMO 커뮤니티 참여</h3>
<img src="assets/community-qr.png" alt="OpenCMO WeChat 그룹 QR 코드" width="240" />
<p><i>질문, 아이디어, 피드백이 있으신가요? WeChat으로 QR을 스캔해 그룹에 참여하세요.</i></p>
</div>

---

## 실제 프로덕션 사례
Expand Down
6 changes: 6 additions & 0 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@
<p><i>在一个开源工作区里,把可见性信号变成增长决策。</i></p>
</div>

<div align="center">
<h3>加入 OpenCMO 交流群</h3>
<img src="assets/community-qr.png" alt="OpenCMO 微信交流群二维码" width="240" />
<p><i>有任何问题、想交流意见?用微信扫码进群沟通。</i></p>
</div>

---

## 真实生产示例
Expand Down
Binary file added assets/community-qr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 10 additions & 2 deletions frontend/public/contact-qr.README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
Real WeChat QR is at `contact-qr.png` (480x480, auto-cropped to the QR + quiet zone).
To swap: overwrite `contact-qr.png` with a new image, or change `QR_ASSET` in
The asset `contact-qr.png` is now the OpenCMO WeChat GROUP QR card (portrait,
dark background that already includes a title and the QR with quiet zone).

To swap it later, overwrite BOTH of these with the new exported PNG:
- `frontend/public/contact-qr.png`
- `assets/community-qr.png` (repo root, used by the READMEs)

The widget renders the card full-bleed and undistorted (`w-full h-auto`), so
export the new image at the same portrait aspect ratio. If you change the file
name, also update `QR_ASSET` in
`frontend/src/components/FloatingContactQR.tsx`.
Binary file modified frontend/public/contact-qr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions frontend/src/components/FloatingContactQR.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -180,14 +180,14 @@ export function FloatingContactQR() {
<p className="mt-2 text-sm font-semibold leading-5 text-white">
{t("contactQR.subheading")}
</p>
<div className="mt-4 overflow-hidden rounded-2xl bg-white p-2">
<div className="mt-4 overflow-hidden rounded-2xl ring-1 ring-white/10">
<img
src={QR_ASSET}
alt={t("contactQR.imageAlt")}
width={240}
height={240}
height={337}
loading="lazy"
className="block h-[160px] w-full rounded-xl sm:h-[200px]"
className="block w-full h-auto"
/>
</div>
</div>
Expand Down
8 changes: 4 additions & 4 deletions frontend/src/i18n/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2013,10 +2013,10 @@ export const en = {
"monitors.addAnotherDesc": "Add another URL, locale, or schedule for this project without leaving the page.",

// Floating contact QR widget
"contactQR.pillLabel": "Add me on WeChat",
"contactQR.heading": "Scan to connect on WeChat",
"contactQR.subheading": "Scan the QR with WeChat to message us directly.",
"contactQR.imageAlt": "WeChat contact QR code",
"contactQR.pillLabel": "Join our group",
"contactQR.heading": "Join the OpenCMO group",
"contactQR.subheading": "Questions or feedback? Scan with WeChat to join our group chat.",
"contactQR.imageAlt": "OpenCMO WeChat group QR code",
"contactQR.close": "Close",

// Unlock custom plan CTA + modal
Expand Down
8 changes: 4 additions & 4 deletions frontend/src/i18n/locales/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1059,10 +1059,10 @@ export const es: Partial<Record<TranslationKey, string>> = {
"verify.missingUser": "Falta contexto de verificación",
"verify.missingUserBody": "Vuelve a registrarte para recibir un código nuevo.",
// Floating contact QR widget
"contactQR.pillLabel": "Agrégame en WeChat",
"contactQR.heading": "Conectar en WeChat",
"contactQR.subheading": "Escanea el QR con WeChat para escribirnos directamente.",
"contactQR.imageAlt": "Código QR de contacto en WeChat",
"contactQR.pillLabel": "Unirse al grupo",
"contactQR.heading": "Únete al grupo de OpenCMO",
"contactQR.subheading": "¿Preguntas o comentarios? Escanea el QR con WeChat para unirte a nuestro grupo.",
"contactQR.imageAlt": "Código QR del grupo de WeChat de OpenCMO",
"contactQR.close": "Cerrar",

// Unlock custom plan CTA + modal
Expand Down
8 changes: 4 additions & 4 deletions frontend/src/i18n/locales/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1122,10 +1122,10 @@ export const ja: Partial<Record<TranslationKey, string>> = {
"verify.missingUser": "確認情報が不足しています",
"verify.missingUserBody": "もう一度サインアップしてコードを取得してください。",
// Floating contact QR widget
"contactQR.pillLabel": "WeChatで追加",
"contactQR.heading": "WeChatで連絡",
"contactQR.subheading": "WeChatでQRをスキャンすると、すぐにメッセージを送れます。",
"contactQR.imageAlt": "WeChat連絡QRコード",
"contactQR.pillLabel": "グループに参加",
"contactQR.heading": "QRでグループに参加",
"contactQR.subheading": "ご質問・ご意見は、WeChatでQRを読み取ってグループにご参加ください。",
"contactQR.imageAlt": "OpenCMO WeChatグループQRコード",
"contactQR.close": "閉じる",

// Unlock custom plan CTA + modal
Expand Down
8 changes: 4 additions & 4 deletions frontend/src/i18n/locales/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1059,10 +1059,10 @@ export const ko: Partial<Record<TranslationKey, string>> = {
"verify.missingUser": "인증 정보가 없습니다",
"verify.missingUserBody": "새 코드를 받으려면 다시 가입해 주세요.",
// Floating contact QR widget
"contactQR.pillLabel": "위챗으로 추가",
"contactQR.heading": "위챗으로 연결하기",
"contactQR.subheading": "위챗으로 QR을 스캔하면 바로 메시지를 보낼 수 있어요.",
"contactQR.imageAlt": "위챗 연락 QR 코드",
"contactQR.pillLabel": "그룹 참여",
"contactQR.heading": "QR로 그룹 참여",
"contactQR.subheading": "질문이나 피드백이 있으신가요? WeChat으로 QR을 스캔해 그룹에 참여하세요.",
"contactQR.imageAlt": "OpenCMO WeChat 그룹 QR 코드",
"contactQR.close": "닫기",

// Unlock custom plan CTA + modal
Expand Down
8 changes: 4 additions & 4 deletions frontend/src/i18n/locales/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1991,10 +1991,10 @@ export const zh: Partial<Record<TranslationKey, string>> = {
"verify.missingUser": "缺少验证上下文",
"verify.missingUserBody": "请重新走一遍注册流程以获取新的验证码。",
// Floating contact QR widget
"contactQR.pillLabel": "加我微信",
"contactQR.heading": "扫码加我微信",
"contactQR.subheading": "用微信扫码即可与我们直接沟通。",
"contactQR.imageAlt": "微信联系二维码",
"contactQR.pillLabel": "进群交流",
"contactQR.heading": "扫码进群交流",
"contactQR.subheading": "有任何问题、想交流意见?用微信扫码加入我们的群聊。",
"contactQR.imageAlt": "OpenCMO 微信交流群二维码",
"contactQR.close": "关闭",

// Unlock custom plan CTA + modal
Expand Down
Loading