
Template details
NOVA
A bilingual English/Arabic Next.js 15 landing page template for AI products, built with TypeScript and Tailwind CSS.
About this template
NOVA is a one-page Next.js 15 landing page template for an AI product, written in TypeScript and styled with Tailwind CSS, and it ships with full English and Arabic localization. It is published by Aniq UI as a MIT-licensed template.
What is NOVA?
NOVA is a single-page marketing template for an AI product, built with Next.js 15, TypeScript and Tailwind CSS. It takes your copy, images and brand name as input through JSON message files and constants folders, and produces a localized, statically rendered landing page served at locale-prefixed routes such as /en and /ar. Aniq UI, the template's author, uses it for AI product business case studies.
What sections does the template include?
The page contains a hero, a logo and stats row, a how-it-works sequence, a tabbed features view, an integrations grid, testimonials, a blog preview, pricing with a monthly and yearly toggle, an FAQ, and a closing call to action. Blog cards, menu links and buttons are placeholders you wire to your own pages. Section composition lives in src/app/[locale]/page.tsx, and each section has its own folder under src/features/home/ with separate components, hooks, constants and types subfolders.
Key Features
- Next.js 15 App Router — the project runs on Next.js 15 with the App Router and TypeScript, and a development server on port 3030 via
yarn dev. - Bilingual English and Arabic — next-intl handles two locales, English (LTR, default) and Arabic (RTL), with middleware that redirects
/based on browser language. - RTL-ready styling — layout uses logical Tailwind classes (
ms-*,pe-*,start-*,text-start), so Arabic mirrors automatically;useTextDirectionandsrc/i18n/direction.tssupport adding more locales. - Docker and Yarn workflows — build and run with
docker build -t company-site .anddocker run -p 3030:3030 company-site, or use Node.js 22 or newer with Yarn 4 andcorepack enable. - Tailwind CSS theming — a red-to-amber accent gradient via
from-red-500/to-amber-500classes, theme tokens inglobals.cssandtailwind.config.ts, and a dark-first design set by next-themes. - Radix UI, Framer Motion and Embla Carousel — the accordion and tabs come from Radix UI, entrance animations run through a shared Reveal component with Framer Motion, and mobile carousels use Embla.
- Fonts and metadata — Inter for English and Noto Sans Arabic for Arabic through
next/font/google; canonical links, language alternates and the social image are built from theNEXT_PUBLIC_SITE_URLvariable. - Content customization — all text lives in
messages/en.jsonandmessages/ar.jsonwith matching keys; brand name comes frombrand.nameand every brand mention uses a placeholder token that reads that value.
Who is it for?
- AI product founders and marketers: launch a localized landing page with pricing, testimonials and an FAQ without building sections from scratch.
- Next.js developers: start from a typed, section-folder structure with pinned dependencies and a committed
yarn.lock. - Arabic-market teams: ship an RTL site alongside an LTR one from a single codebase with mirrored layouts.
- Freelancers and agencies: rebrand the template quickly via
messages/,public/images/andLogo.tsx, then deploy under a custom domain throughNEXT_PUBLIC_SITE_URL.
How does it work?
Customize text in both message JSON files, swap images in public/images/, set NEXT_PUBLIC_SITE_URL to your real domain, and rebuild with yarn build. Edit the section order in src/app/[locale]/page.tsx, and add a new section by creating a folder under src/features/ and calling setRequestLocale(locale) in the page so it stays statically rendered.
What are the limitations?
NOVA is a single page: blog cards, menu links and buttons are placeholders, and remote images from Unsplash and Simple Icons are referenced by default, so they must be replaced or whitelisted in images.remotePatterns in next.config.mjs before going live. The site runs without a .env file, but NEXT_PUBLIC_SITE_URL is read at build time, so changing it requires a rebuild.
















