A ready-to-run marketing site: multi-page, lead capture, blog and SEO artifacts.
Find a file Use this template
w4c-templates 5e47d19285
Some checks failed
CI / quality (push) Has been cancelled
chore(template): publish Landing.Next
2026-10-11 23:32:29 +03:00
.github/workflows chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
.w4c chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
app chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
components chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
docker chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
lib chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
messages chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
prisma chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
public chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
tests chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
.dockerignore chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
.env.example chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
.eslintrc.json chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
.gitignore chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
middleware.ts chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
next.config.ts chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
package-lock.json chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
package.json chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
postcss.config.mjs chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
README.md chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
tsconfig.json chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00
vitest.config.ts chore(template): publish Landing.Next 2026-10-11 23:23:51 +03:00

Landing / Marketing — Next.js (templates2)

A ready-to-run marketing site forked from templates2.Base.Next: multi-page marketing, lead capture, a blog with RSS, and full SEO artifacts — plus the whole base core (auth, roles, admin, mock payments/email, Docker, CI).

Quickstart

npm ci
cp .env.example .env          # SQLite + mock providers by default — no keys needed
npm run db:setup              # prisma db push + seed
npm run dev                   # http://localhost:3000

Admin account (seeded): admin@example.com / password.

Pages

Route What it is
/ Hero + feature grid + CTAs
/features Feature detail
/pricing Plans (mock checkout works with no keys)
/blog + /blog/[slug] Post list & article (static collection in lib/posts.ts)
/faq FAQ with FAQPage JSON-LD
/about, /contact Story + lead form
/legal/privacy, /legal/terms Placeholder legal
/admin/leads Captured leads (admin only)

What this case adds over the base

  • Lead capture — POST /api/leads (public, validated with zod) persists to the Lead table and notifies the owner via the email provider (log by default, Resend from env). Used by the contact page and the footer newsletter.
  • Blog — a static post collection with tags, reading time and per-post metadata + Article JSON-LD; an RSS feed at /rss.xml.
  • SEO — Organization/WebSite JSON-LD on home, FAQPage on /faq, a sitemap that includes every page and post.
  • Admin leads — a leads table in the admin shell.

Env

See .env.example. Nothing is required: SQLite + mock providers run with zero configuration.

Quality

node templates2/qa.mjs Landing.Next

See ../CONTRACT.md for the Definition of Done.