From 5d40408718635a82f306d2b6a6f27f75d7687881 Mon Sep 17 00:00:00 2001 From: davidmonterocrespo24 Date: Wed, 13 May 2026 14:27:49 +0200 Subject: [PATCH] =?UTF-8?q?feat(landing):=20licensing=20section=20?= =?UTF-8?q?=E2=80=94=20AGPLv3=20+=20commercial=20option?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a two-card section at the foot of the landing page (before the brand footer) that surfaces Velxio's licensing model: AGPLv3 for the public release, commercial license for teams that need to ship Velxio inside closed-source products. Mirrors the existing .feature-card visual language so it slots into the page without a new design system. Commercial CTA opens a mailto:info@velxio.dev. Open-source CTA links to GitHub via the existing trackVisitGitHub handler so the analytics event still fires. All 9 locales translated. --- frontend/src/i18n/locales/de/common.json | 16 ++++ frontend/src/i18n/locales/en/common.json | 16 ++++ frontend/src/i18n/locales/es/common.json | 16 ++++ frontend/src/i18n/locales/fr/common.json | 16 ++++ frontend/src/i18n/locales/it/common.json | 16 ++++ frontend/src/i18n/locales/ja/common.json | 16 ++++ frontend/src/i18n/locales/pt-br/common.json | 16 ++++ frontend/src/i18n/locales/ru/common.json | 16 ++++ frontend/src/i18n/locales/zh-cn/common.json | 16 ++++ frontend/src/pages/LandingPage.css | 90 +++++++++++++++++++++ frontend/src/pages/LandingPage.tsx | 38 +++++++++ 11 files changed, 272 insertions(+) diff --git a/frontend/src/i18n/locales/de/common.json b/frontend/src/i18n/locales/de/common.json index cec6fd39..96458f67 100644 --- a/frontend/src/i18n/locales/de/common.json +++ b/frontend/src/i18n/locales/de/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio ist kostenlos und quelloffen. Wenn es Ihnen Zeit spart, erwägen Sie, seine Entwicklung zu unterstützen.", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "Spenden via PayPal" + }, + "licensing": { + "label": "Lizenzen", + "title": "Kostenlos, mit kommerzieller Option.", + "subtitle": "AGPLv3 für die Open-Source-Version. Kommerzielle Lizenz für Teams, die Velxio in Closed-Source-Produkte integrieren müssen.", + "opensource": { + "title": "Open Source — AGPLv3", + "desc": "Für immer kostenlos für privaten Gebrauch, Bildung, Forschung und Self-Hosting. Ändern, forken und weiterverteilen — Ihre Änderungen bleiben unter AGPLv3.", + "cta": "Quellcode auf GitHub ansehen →" + }, + "commercial": { + "badge": "Kommerziell", + "title": "Kommerzielle Lizenz", + "desc": "Für Closed-Source-Produkte, proprietäre SaaS oder interne Unternehmensnutzung, bei denen die AGPLv3-Reziprozität mit Ihrem Geschäftsmodell nicht vereinbar ist.", + "cta": "Preise anfragen →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/en/common.json b/frontend/src/i18n/locales/en/common.json index cdea1c47..1cf16992 100644 --- a/frontend/src/i18n/locales/en/common.json +++ b/frontend/src/i18n/locales/en/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio is free and open source. If it saves you time, consider supporting its development.", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "Donate via PayPal" + }, + "licensing": { + "label": "Licensing", + "title": "Free, with a commercial option.", + "subtitle": "AGPLv3 for the open-source release. A commercial license for teams that need to ship Velxio inside closed-source products.", + "opensource": { + "title": "Open source — AGPLv3", + "desc": "Free forever for personal use, education, research and self-hosting. Modify, fork and redistribute — your changes stay under AGPLv3 too.", + "cta": "View source on GitHub →" + }, + "commercial": { + "badge": "Commercial", + "title": "Commercial license", + "desc": "For closed-source products, proprietary SaaS, or internal company use where AGPLv3 reciprocity is incompatible with your business model.", + "cta": "Contact for pricing →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/es/common.json b/frontend/src/i18n/locales/es/common.json index a55994ac..4464224c 100644 --- a/frontend/src/i18n/locales/es/common.json +++ b/frontend/src/i18n/locales/es/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio es gratuito y de código abierto. Si te ahorra tiempo, considera apoyar su desarrollo.", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "Donar vía PayPal" + }, + "licensing": { + "label": "Licencias", + "title": "Gratis, con opción comercial.", + "subtitle": "AGPLv3 para la versión open-source. Licencia comercial para equipos que necesitan integrar Velxio en productos closed-source.", + "opensource": { + "title": "Open source — AGPLv3", + "desc": "Gratis para siempre para uso personal, educación, investigación y self-hosting. Modificá, forkeá y redistribuí — tus cambios siguen bajo AGPLv3.", + "cta": "Ver código en GitHub →" + }, + "commercial": { + "badge": "Comercial", + "title": "Licencia comercial", + "desc": "Para productos closed-source, SaaS propietario o uso interno empresarial donde la reciprocidad AGPLv3 no es compatible con tu modelo de negocio.", + "cta": "Contactar para precios →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/fr/common.json b/frontend/src/i18n/locales/fr/common.json index 7acec5ea..560f437e 100644 --- a/frontend/src/i18n/locales/fr/common.json +++ b/frontend/src/i18n/locales/fr/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio est gratuit et open-source. S'il vous fait gagner du temps, envisagez de soutenir son développement.", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "Faire un don via PayPal" + }, + "licensing": { + "label": "Licences", + "title": "Gratuit, avec option commerciale.", + "subtitle": "AGPLv3 pour la version open-source. Licence commerciale pour les équipes qui doivent intégrer Velxio dans des produits propriétaires.", + "opensource": { + "title": "Open source — AGPLv3", + "desc": "Gratuit pour toujours pour un usage personnel, éducatif, de recherche et en self-hosting. Modifiez, forkez et redistribuez — vos modifications restent sous AGPLv3.", + "cta": "Voir le code sur GitHub →" + }, + "commercial": { + "badge": "Commerciale", + "title": "Licence commerciale", + "desc": "Pour des produits propriétaires, du SaaS commercial, ou un usage interne en entreprise où la réciprocité AGPLv3 ne correspond pas à votre modèle économique.", + "cta": "Nous contacter pour les tarifs →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/it/common.json b/frontend/src/i18n/locales/it/common.json index 9965deff..107179b5 100644 --- a/frontend/src/i18n/locales/it/common.json +++ b/frontend/src/i18n/locales/it/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio è gratuito e open source. Se ti fa risparmiare tempo, considera di supportarne lo sviluppo.", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "Dona tramite PayPal" + }, + "licensing": { + "label": "Licenze", + "title": "Gratuito, con opzione commerciale.", + "subtitle": "AGPLv3 per la versione open-source. Licenza commerciale per i team che devono integrare Velxio in prodotti closed-source.", + "opensource": { + "title": "Open source — AGPLv3", + "desc": "Gratis per sempre per uso personale, formazione, ricerca e self-hosting. Modifica, fai il fork e ridistribuisci — le tue modifiche restano sotto AGPLv3.", + "cta": "Vedi sorgenti su GitHub →" + }, + "commercial": { + "badge": "Commerciale", + "title": "Licenza commerciale", + "desc": "Per prodotti closed-source, SaaS proprietari o uso interno aziendale dove la reciprocità AGPLv3 non è compatibile con il tuo modello di business.", + "cta": "Contatta per prezzi →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/ja/common.json b/frontend/src/i18n/locales/ja/common.json index 4b168c81..da5e24ce 100644 --- a/frontend/src/i18n/locales/ja/common.json +++ b/frontend/src/i18n/locales/ja/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxioは無料でオープンソースです。時間を節約できたなら、開発を支援することを検討してください。", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "PayPalで寄付" + }, + "licensing": { + "label": "ライセンス", + "title": "無料、商用オプションあり。", + "subtitle": "オープンソース版はAGPLv3。クローズドソース製品にVelxioを組み込む必要があるチーム向けの商用ライセンスもあります。", + "opensource": { + "title": "オープンソース — AGPLv3", + "desc": "個人利用・教育・研究・セルフホスティングは永久無料。改変・フォーク・再配布も自由 — ただし変更内容もAGPLv3で公開する必要があります。", + "cta": "GitHubでソースを見る →" + }, + "commercial": { + "badge": "商用", + "title": "商用ライセンス", + "desc": "クローズドソース製品、プロプライエタリSaaS、AGPLv3の相互ライセンス条件がビジネスモデルに合わない社内利用向け。", + "cta": "価格を問い合わせる →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/pt-br/common.json b/frontend/src/i18n/locales/pt-br/common.json index 4b534272..492983e9 100644 --- a/frontend/src/i18n/locales/pt-br/common.json +++ b/frontend/src/i18n/locales/pt-br/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio é gratuito e de código aberto. Se ele economiza seu tempo, considere apoiar seu desenvolvimento.", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "Doar via PayPal" + }, + "licensing": { + "label": "Licenciamento", + "title": "Grátis, com opção comercial.", + "subtitle": "AGPLv3 para a versão open-source. Licença comercial para times que precisam embarcar o Velxio em produtos de código fechado.", + "opensource": { + "title": "Open source — AGPLv3", + "desc": "Grátis para sempre para uso pessoal, educação, pesquisa e self-hosting. Modifique, faça fork e redistribua — suas alterações também ficam sob AGPLv3.", + "cta": "Ver código no GitHub →" + }, + "commercial": { + "badge": "Comercial", + "title": "Licença comercial", + "desc": "Para produtos de código fechado, SaaS proprietário ou uso interno corporativo onde a reciprocidade da AGPLv3 não combina com o modelo de negócio.", + "cta": "Contate para preços →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/ru/common.json b/frontend/src/i18n/locales/ru/common.json index 14c84aaf..d85ca21c 100644 --- a/frontend/src/i18n/locales/ru/common.json +++ b/frontend/src/i18n/locales/ru/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio бесплатен и имеет открытый исходный код. Если он экономит ваше время, подумайте о поддержке его разработки.", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "Пожертвовать через PayPal" + }, + "licensing": { + "label": "Лицензии", + "title": "Бесплатно, с коммерческим вариантом.", + "subtitle": "AGPLv3 для open-source версии. Коммерческая лицензия для команд, которым нужно встраивать Velxio в закрытые продукты.", + "opensource": { + "title": "Open source — AGPLv3", + "desc": "Бесплатно навсегда для личного использования, обучения, исследований и self-hosting. Модифицируйте, форкайте и распространяйте — ваши изменения тоже остаются под AGPLv3.", + "cta": "Посмотреть исходники на GitHub →" + }, + "commercial": { + "badge": "Коммерческая", + "title": "Коммерческая лицензия", + "desc": "Для закрытых продуктов, проприетарных SaaS или внутреннего корпоративного использования, когда условия взаимности AGPLv3 несовместимы с вашей бизнес-моделью.", + "cta": "Узнать цены →" + } } }, "profile": { diff --git a/frontend/src/i18n/locales/zh-cn/common.json b/frontend/src/i18n/locales/zh-cn/common.json index 5000c48e..67c25acd 100644 --- a/frontend/src/i18n/locales/zh-cn/common.json +++ b/frontend/src/i18n/locales/zh-cn/common.json @@ -75,6 +75,22 @@ "subtitle": "Velxio 是免费且开源的。如果它为你节省了时间,请考虑支持其开发。", "ctaSponsors": "GitHub Sponsors", "ctaPaypal": "通过 PayPal 捐赠" + }, + "licensing": { + "label": "许可证", + "title": "免费,提供商业选项。", + "subtitle": "开源版本采用 AGPLv3 协议。需要将 Velxio 集成到闭源产品中的团队可选择商业许可。", + "opensource": { + "title": "开源 — AGPLv3", + "desc": "个人使用、教育、研究和自托管永久免费。可修改、Fork 并重新分发 — 您的修改也必须以 AGPLv3 协议发布。", + "cta": "在 GitHub 上查看源代码 →" + }, + "commercial": { + "badge": "商业", + "title": "商业许可证", + "desc": "适用于闭源产品、专有 SaaS 或 AGPLv3 协议的互惠条款与您的商业模式不兼容的企业内部使用场景。", + "cta": "联系咨询定价 →" + } } }, "profile": { diff --git a/frontend/src/pages/LandingPage.css b/frontend/src/pages/LandingPage.css index d63b99b5..6f29f1f3 100644 --- a/frontend/src/pages/LandingPage.css +++ b/frontend/src/pages/LandingPage.css @@ -1101,3 +1101,93 @@ justify-content: center; } } + +/* ── Licensing ───────────────────────────────────────── */ +.landing-licensing .section-header { + margin-bottom: 36px; +} + +.licensing-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 24px; + max-width: 960px; + margin: 0 auto; + padding: 0 24px; +} + +.licensing-card { + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: 20px; + padding: 32px 30px; + display: flex; + flex-direction: column; + gap: 12px; + transition: border-color 160ms ease, transform 160ms ease; +} + +.licensing-card:hover { + border-color: rgba(255, 255, 255, 0.14); + transform: translateY(-1px); +} + +.licensing-card-badge { + align-self: flex-start; + font-size: 11px; + font-weight: 600; + letter-spacing: 0.4px; + text-transform: uppercase; + padding: 4px 10px; + border-radius: 999px; + background: rgba(0, 113, 227, 0.18); + color: #4ea3ff; + border: 1px solid rgba(0, 113, 227, 0.3); +} + +.licensing-card-badge-commercial { + background: rgba(245, 158, 11, 0.16); + color: #f5a623; + border-color: rgba(245, 158, 11, 0.3); +} + +.licensing-card-title { + margin: 4px 0 0; + font-size: 19px; + font-weight: 600; + color: var(--text); +} + +.licensing-card-desc { + margin: 0; + font-size: 14px; + line-height: 1.65; + color: var(--text-dim); + flex: 1; +} + +.licensing-card-link { + margin-top: 8px; + align-self: flex-start; + font-size: 13px; + font-weight: 500; + color: var(--accent); + text-decoration: none; + border-bottom: 1px solid transparent; + transition: border-color 160ms ease; +} + +.licensing-card-link:hover { + border-bottom-color: var(--accent); +} + +@media (max-width: 720px) { + .licensing-grid { + grid-template-columns: 1fr; + padding: 0 16px; + } + + .licensing-card { + padding: 24px 22px; + } +} diff --git a/frontend/src/pages/LandingPage.tsx b/frontend/src/pages/LandingPage.tsx index 8d85f5de..847bcd45 100644 --- a/frontend/src/pages/LandingPage.tsx +++ b/frontend/src/pages/LandingPage.tsx @@ -1215,6 +1215,44 @@ export const LandingPage: React.FC = () => { + {/* Licensing */} +
+
+ {t('landing.licensing.label')} +

{t('landing.licensing.title')}

+

{t('landing.licensing.subtitle')}

+
+
+
+ AGPLv3 +

{t('landing.licensing.opensource.title')}

+

{t('landing.licensing.opensource.desc')}

+ + {t('landing.licensing.opensource.cta')} + +
+
+ + {t('landing.licensing.commercial.badge')} + +

{t('landing.licensing.commercial.title')}

+

{t('landing.licensing.commercial.desc')}

+ + {t('landing.licensing.commercial.cta')} + +
+
+
+ {/* Footer */}