個人 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.