|
|
||
|---|---|---|
| .github/workflows | ||
| .w4c | ||
| app | ||
| docker | ||
| prisma | ||
| public | ||
| server | ||
| shared | ||
| tests | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| eslint.config.mjs | ||
| nuxt.config.ts | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
Landing / Marketing — Nuxt 3 (templates2)
A ready-to-run marketing site forked from templates2.Base.Nuxt: 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). Feature-parity with templates2.Landing.Next.
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
/ · /features · /pricing · /blog + /blog/[slug] · /faq · /about · /contact ·
/legal/* · /admin/leads.
What this case adds over the base
- Lead capture —
POST /api/leads(public, zod-validated) persists toLeadand notifies the owner through the email provider (log by default, Resend from env). Used by the contact page and the footer newsletter. - Blog — a static post collection (
shared/posts.ts) with tags, reading time and per-post metadata +ArticleJSON-LD; RSS at/rss.xml. - SEO — Organization/WebSite JSON-LD on home,
FAQPageon/faq, and a sitemap covering every page and post. - Admin leads — a leads table in the admin shell.
Quality
node templates2/qa.mjs Landing.Nuxt
See ../CONTRACT.md for the Definition of Done.