diff --git a/.gitignore b/.gitignore index 5c042ee..e15b1b9 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,17 @@ tmp/ ads/ .codex-temp/ +# Local/generated exports +greenlens-chrome-extension.zip +create_slot02.py +assets/blogs/ + +# Standalone projects, versioned and published independently +greenlens-cli/ +greenlens-python/ +greenlens-vscode/ +greenlens-chrome-extension/ + # Claude / Agents (symlinks incompatible with EAS Build on Windows) .agents/ .claude/ diff --git a/greenlns-landing/app/developers/page.tsx b/greenlns-landing/app/developers/page.tsx new file mode 100644 index 0000000..a2ad400 --- /dev/null +++ b/greenlns-landing/app/developers/page.tsx @@ -0,0 +1,168 @@ +import type { Metadata } from 'next' +import Link from 'next/link' +import SeoFooter from '@/components/seo/SeoFooter' +import SeoNavbar from '@/components/seo/SeoNavbar' +import { siteConfig } from '@/lib/site' + +const repositoryUrl = 'https://github.com/knuthtimo-lab/greenlenspro-cli' + +export const metadata: Metadata = { + title: 'Developer Suite & Open Source Tools', + description: 'Official GreenLens developer tools: VS Code extension, Python SDK and CLI, Node.js CLI, Chrome extension, and GitHub Action.', + alternates: { canonical: '/developers' }, + openGraph: { + title: 'Developer Suite & Open Source Tools | GreenLens', + description: 'Open-source GreenLens tools for VS Code, Python, Node.js, Chrome, and GitHub Actions.', + url: `${siteConfig.domain}/developers`, + type: 'website', + }, + twitter: { + card: 'summary_large_image', + title: 'Developer Suite & Open Source Tools | GreenLens', + description: 'Open-source GreenLens tools for VS Code, Python, Node.js, Chrome, and GitHub Actions.', + }, +} + +const tools = [ + { + icon: '💻', + eyebrow: 'VS Code Marketplace', + title: 'VS Code extension', + description: 'Search plant care, diagnose leaf symptoms, and set hydration-break timers without leaving VS Code.', + command: 'Ctrl+Shift+P → GreenLens: Search Houseplant Care', + href: 'https://marketplace.visualstudio.com/items?itemName=TimoKnuth.greenlens-vscode', + linkLabel: 'VS Code Marketplace', + }, + { + icon: '🐍', + eyebrow: 'Python SDK & CLI', + title: 'Python SDK and CLI', + description: 'Use the greenlens-python package in applications or call greenlens-py directly for care guides, light evaluations, and symptom diagnostics.', + command: 'pip install greenlens-python\ngreenlens-py care "Monstera"', + href: 'https://pypi.org/project/greenlens-python/', + linkLabel: 'Python SDK & CLI on PyPI', + }, + { + icon: '📦', + eyebrow: 'NPM Package', + title: 'Node.js CLI and package', + description: 'A zero-dependency terminal utility and Node module for rapid plant-care lookup in any shell or application.', + command: 'npx greenlenspro-cli care "Monstera"', + href: 'https://www.npmjs.com/package/greenlenspro-cli', + linkLabel: 'Node.js package on NPM', + }, + { + icon: '🧩', + eyebrow: 'Chrome Web Store', + title: 'Chrome extension (Soon)', + description: 'Search a local plant catalog, check leaf symptoms, or select a plant photo from the current browser page for AI analysis.', + command: 'Browser popup + photo scan tool', + href: 'https://greenlenspro.com/support', + linkLabel: 'Chrome extension details (Soon)', + }, + { + icon: '🐙', + eyebrow: 'GitHub CI/CD', + title: 'GitHub Action', + description: 'Run plant-care and diagnosis lookups in CI/CD workflows and print results directly in build output.', + command: 'uses: knuthtimo-lab/greenlenspro-cli@v1', + href: `${repositoryUrl}#github-action`, + linkLabel: 'View GitHub Action', + }, + { + icon: '📁', + eyebrow: 'Open source', + title: 'GitHub repository', + description: 'Browse the complete source code, releases, installation notes, and contribution context for greenlenspro-cli.', + command: 'github.com/knuthtimo-lab/greenlenspro-cli', + href: repositoryUrl, + linkLabel: 'Open GitHub repository', + }, +] + +export default function DevelopersPage() { + return ( +
+ + +
+
+
+
+

Developer suite & open source

+

+ Plant care tools for the stack you already use. +

+

+ Bring GreenLens care guidance, symptom checks, and lighting evaluations into VS Code, Python, Node.js, your browser, or a GitHub workflow. +

+
+ + Explore on GitHub + + + Developer support + +
+
+ + +
+
+ +
+
+
+

Tools & integrations

+

One plant-care toolkit, six practical entry points.

+
+ +
+ {tools.map((tool) => ( + + ))} +
+
+
+ +
+
+
+

Need the full app?

+

Use GreenLens on your phone for camera-based plant scans and ongoing care.

+
+ + Download on the App Store + +
+
+
+ + +
+ ) +} diff --git a/greenlns-landing/app/globals.css b/greenlns-landing/app/globals.css index 8d15cfb..a9ce1ce 100644 --- a/greenlns-landing/app/globals.css +++ b/greenlns-landing/app/globals.css @@ -251,14 +251,14 @@ h3 { transition: background var(--t), padding var(--t), box-shadow var(--t); } -.navbar.scrolled { +.navbar.scrolled { background: rgba(19, 31, 22, 0.93); backdrop-filter: blur(18px) saturate(160%); -webkit-backdrop-filter: blur(18px) saturate(160%); padding: 0.65rem 0; - box-shadow: 0 2px 40px rgba(0, 0, 0, 0.25); -} - + box-shadow: 0 2px 40px rgba(0, 0, 0, 0.25); +} + .navbar .container { display: flex; align-items: center; @@ -287,9 +287,14 @@ h3 { transition: color var(--t); } -.nav-links a:hover { - color: var(--cream); -} +.nav-links a:hover { + color: var(--cream); +} + +.nav-links .nav-link--active { + color: var(--cream); + font-weight: 700; +} .nav-cta { background: #fff !important; diff --git a/greenlns-landing/app/sitemap.ts b/greenlns-landing/app/sitemap.ts index fab56f5..d30aabd 100644 --- a/greenlns-landing/app/sitemap.ts +++ b/greenlns-landing/app/sitemap.ts @@ -24,6 +24,12 @@ export default function sitemap(): MetadataRoute.Sitemap { changeFrequency: 'monthly', priority: 0.5, }, + { + url: `${baseUrl}/developers`, + lastModified: new Date('2026-08-01'), + changeFrequency: 'weekly', + priority: 0.85, + }, { url: `${baseUrl}/press`, lastModified: new Date('2026-07-29'), diff --git a/greenlns-landing/components/Footer.tsx b/greenlns-landing/components/Footer.tsx index b03cd3c..b8f0cd2 100644 --- a/greenlns-landing/components/Footer.tsx +++ b/greenlns-landing/components/Footer.tsx @@ -82,6 +82,16 @@ export default function Footer() { Diagnosticar enfermedades GreenLens vs Google Lens + +
+
Developer & Open Source
+ Developer Suite Hub + VS Code Extension + Python SDK & CLI (PyPI) + Node.js CLI (NPM) + Chrome Extension (Soon) + GitHub Action & Repository +
diff --git a/greenlns-landing/components/Navbar.tsx b/greenlns-landing/components/Navbar.tsx index db3f4fe..cbe6cf5 100644 --- a/greenlns-landing/components/Navbar.tsx +++ b/greenlns-landing/components/Navbar.tsx @@ -13,6 +13,8 @@ export default function Navbar() { const { lang, t } = useLang() const localeHome = lang === 'de' ? '/' : `/${lang}` const homeHref = (hash: string) => (pathname === localeHome ? hash : `${localeHome}${hash}`) + const isSubpage = pathname !== localeHome + const isDevelopersPage = pathname === '/developers' useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 40) @@ -21,7 +23,7 @@ export default function Navbar() { }, []) return ( -