Marketing + compliance website for NutriGL Insight, a nutrition tracker built around glycemic load.
Built with Next.js 14 (App Router), Tailwind CSS, Framer Motion, next-themes, and Resend.
prefers-reduced-motion).dir="rtl", mirrored layout via logical properties).sitemap.xml, robots.txt, JSON-LD SoftwareApplication on the homepage, favicon + OG image.| Route | Description |
|---|---|
/[lang] |
Home / landing |
/[lang]/about |
About OUSHEN / Anass Mahmoudi |
/[lang]/privacy |
Privacy Policy (with table of contents) |
/[lang]/delete-data |
Delete My Data request form ⭐ |
/[lang]/contact |
Contact |
[lang] is one of en, ar, fr, es. Visiting / redirects to the best language via middleware.
npm install
cp .env.example .env.local # then fill in values
npm run dev # http://localhost:3000
See .env.example:
| Variable | Purpose |
|---|---|
RESEND_API_KEY |
Resend API key for sending deletion-request emails. If unset, requests are logged server-side and the form still returns success (dev-friendly). |
DELETE_REQUEST_FROM |
Verified Resend sender, e.g. NutriGL Insight <no-reply@nutriglinsight.com>. |
DELETE_REQUEST_TO |
Recipient inbox (defaults to contact@nutriglinsight.com). |
NEXT_PUBLIC_SITE_URL |
Canonical site URL used for metadata, sitemap, and OG tags. |
/[lang]/delete-data (email required, Support/Device ID recommended, confirmation checkbox, honeypot anti-spam).POST /api/delete-request validates with Zod, drops honeypot hits, and emails the request to contact@nutriglinsight.com via Resend.The page is reachable without an account (store reviewers check this). To hide it from search engines, set robots: { index: false } in src/app/[lang]/delete-data/page.tsx.
All copy lives in JSON dictionaries under src/i18n/dictionaries — one file per language (en, ar, fr, es). en.json is the canonical shape; keep keys in sync across languages.
npm run build
npm run start
Deploys cleanly to Vercel or Netlify. Set the environment variables in your host’s dashboard.
public/og-image.svg, public/favicon.svg, the phone mockups, and the store badge links in src/components/ui/StoreBadges.tsx with real assets and URLs.