个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Marketing website for Greencaller, a business VoIP telephone system with an AI receptionist.
Built with Next.js 15 (App Router), React 19, TypeScript and Tailwind CSS v4, and statically rendered for SEO and speed.
npm install
npm run dev # http://localhost:3000
npm run build # production build (79 static pages)
npm start # serve the production build
The palette is derived from the supplied logo. The green was sampled directly from
greencaller-logo.png / greencallericon2.png:
| Token | Value | Use |
|---|---|---|
brand-500 | #00D16C | The logo green. Primary buttons, accents, active states |
brand-600/700/800 | #00B45C → #04723E | Hover states, icons on light backgrounds, accessible text |
brand-50/100/200 | #E8FDF2 → #90F2C2 | Tinted panels, badges, washes |
ink | #08211A | Body and heading text — a green-cast near-black so the page reads as one family |
deep | #04241A | Dark sections, announcement bar, CTA block |
cream | #FAFCFB | Alternating section backgrounds |
line | #DDE7E2 | Borders and dividers |
All tokens are defined once in app/globals.css under @theme, so changing the brand green
there updates the entire site.
Type: Schibsted Grotesk for display headings (tight tracking, weight 600), Inter for body —
both self-hosted via next/font with no layout shift.
| File | Purpose |
|---|---|
public/greencaller-logo.png | Header and footer wordmark (supplied) |
app/icon.png | Favicon, 64×64 — downscaled from greencallericon2.png |
app/apple-icon.png | Apple touch icon, 180×180 |
public/greencaller-icon-{192,512}.png | PWA manifest icons |
app/opengraph-image.tsx | Social share card, generated at build time via next/og |
The original 2000×2000 source files are kept at the repo root. The favicon is generated from
greencallericon2.png, so a 54 KB image is not shipped as a tab icon.
app/
layout.tsx Root layout: fonts, metadata, Organization + WebSite JSON-LD
page.tsx Home page (FAQPage + SoftwareApplication JSON-LD)
globals.css Tailwind v4 theme, design tokens, component classes
opengraph-image.tsx Generated OG image
sitemap.ts robots.ts manifest.ts
features/[slug]/ 15 feature pages (generateStaticParams)
solutions/[slug]/ 14 solution pages (by use case and by industry)
integrations/[slug]/ 14 integration pages
resources/[slug]/ 4 long-form guides
legal/[slug]/ Privacy, terms, cookies, legal notice
pricing/ compare/ contact/ demo/ signup/ login/ about/ product/
blog/ customers/ help/ changelog/ careers/ partners/ reviews/ download/
components/ Header (mega menu), Hero, feature sections, FAQ, Footer, …
lib/
site.ts Company details and navigation trees
content.ts Home page copy
pages.ts Feature / solution / integration page content
Content lives in lib/, not in JSX — editing copy or adding a feature page means editing one
data file, and the route, sitemap entry and nav link follow automatically.
Organization and WebSite sitewide; FAQPage on the home page
and every detail page; SoftwareApplication with AggregateRating on the home page;
Product / AggregateOffer on pricing; BreadcrumbList on all nested pages; ContactPage
and Article where relevant.sitemap.xml generated from the same nav data that renders the menus, so it cannot drift.robots.txt with the sitemap reference; /login and /signup are noindex.<h1> per page, ordered headings, real <nav>/<main>/<footer>
landmarks, breadcrumbs, descriptive link text and alt attributes.font-display: swap, priority hint on the logo,
no layout-shifting images, and CSS-only animations.Skip-to-content link, visible focus rings, aria-expanded on all disclosures, keyboard-operable
menus and accordions, prefers-reduced-motion honoured, and text contrast checked against the
brand palette (the green is used as a background behind dark ink, never as light-on-white body
text).
lib/site.ts holds the phone number, email addresses, registered address and social URLs —
these are placeholders and need replacing with the real details.components/LeadForm.tsx at
your CRM or form endpoint.lib/site.ts (site.domain); it drives canonicals, the sitemap
and Open Graph URLs.