diff --git a/frontend/src/app/(auth)/forgot-password/page.tsx b/frontend/src/app/(auth)/forgot-password/page.tsx
index 68ece78..add9c28 100644
--- a/frontend/src/app/(auth)/forgot-password/page.tsx
+++ b/frontend/src/app/(auth)/forgot-password/page.tsx
@@ -2,14 +2,15 @@ import { Suspense } from 'react';
import type { Metadata } from 'next';
import Loader from '~/components/loader';
import { ForgotPasswordForm } from './form';
+import { buildMetadata } from '~/lib/metadata';
-export const metadata: Metadata = {
+export const metadata: Metadata = buildMetadata({
title: 'Reset Password',
description:
'Reset your Retailytics password to regain access to your retail intelligence dashboards and store data.',
- alternates: { canonical: '/forgot-password' },
- robots: { index: false, follow: true },
-};
+ path: '/forgot-password',
+ index: false,
+});
export default async function ForgotPasswordPage() {
return (
diff --git a/frontend/src/app/(auth)/login/page.tsx b/frontend/src/app/(auth)/login/page.tsx
index 289d8bd..b077150 100644
--- a/frontend/src/app/(auth)/login/page.tsx
+++ b/frontend/src/app/(auth)/login/page.tsx
@@ -4,14 +4,15 @@ import type { Metadata } from 'next';
import { cache, Suspense } from 'react';
import Loader from '~/components/loader';
import { redirect } from 'next/navigation';
+import { buildMetadata } from '~/lib/metadata';
-export const metadata: Metadata = {
+export const metadata: Metadata = buildMetadata({
title: 'Sign In',
description:
'Sign in to your Retailytics account to access store enumeration dashboards, field data, and market intelligence reports.',
- alternates: { canonical: '/login' },
- robots: { index: false, follow: true },
-};
+ path: '/login',
+ index: false,
+});
const getSession = cache(() => auth());
diff --git a/frontend/src/app/(auth)/register/page.tsx b/frontend/src/app/(auth)/register/page.tsx
index 41b8d1d..61a3387 100644
--- a/frontend/src/app/(auth)/register/page.tsx
+++ b/frontend/src/app/(auth)/register/page.tsx
@@ -5,14 +5,15 @@ import { RegisterForm } from './form';
import { cache, Suspense } from 'react';
import Loader from '~/components/loader';
import { redirect } from 'next/navigation';
+import { buildMetadata } from '~/lib/metadata';
-export const metadata: Metadata = {
+export const metadata: Metadata = buildMetadata({
title: 'Create Account',
description:
'Create your Retailytics account to start collecting store data, validating field submissions, and turning local data into market intelligence.',
- alternates: { canonical: '/register' },
- robots: { index: false, follow: true },
-};
+ path: '/register',
+ index: false,
+});
const getSession = cache(() => auth());
diff --git a/frontend/src/app/contact/page.tsx b/frontend/src/app/contact/page.tsx
new file mode 100644
index 0000000..43b3786
--- /dev/null
+++ b/frontend/src/app/contact/page.tsx
@@ -0,0 +1,54 @@
+import type { Metadata } from 'next';
+import { siteConfig } from '~/lib/site';
+import SitePage from '~/components/site-page';
+import { buildMetadata } from '~/lib/metadata';
+
+export const metadata: Metadata = buildMetadata({
+ title: 'Contact',
+ description:
+ 'Get in touch with the Retailytics team at Ajared Research Inc. for demos, partnerships, support, and questions about retail intelligence.',
+ path: '/contact',
+});
+
+export default function ContactPage() {
+ return (
+
+ Retailytics is built and operated by {siteConfig.legalName}. The fastest
+ way to reach us is by email, and we aim to respond within two business
+ days.
+
+
+ {siteConfig.contactEmail}
+
+
+ Want to see Retailytics in action for your market? Email us with a short
+ note about your team and the regions you cover, and we'll set up a
+ walkthrough.
+
+ Learn more about the team at{' '}
+
+ ajared.ng
+ {' '}
+ and{' '}
+
+ ajared.ca
+
+ .
+ Email
+ Sales & demos
+ Elsewhere
+
+ This Privacy Policy explains how {siteConfig.legalName} + ("we", "us") handles information in connection with + the Retailytics platform. By using Retailytics you agree to the + practices described here. +
+ ++ We collect account details you provide (such as name and email), + operational data submitted through the platform (such as store and + location records captured by enumerators), and standard technical data + such as device and usage information. +
+ ++ We use information to operate and improve the platform, validate and + analyse submitted data, secure accounts, and communicate with you about + the service. +
+ ++ We do not sell personal information. We share data only with service + providers who help us operate Retailytics, or where required by law. +
+ ++ We retain data for as long as needed to provide the service and meet + legal obligations, and we apply appropriate safeguards to protect it. +
+ ++ For privacy questions or data requests, contact{' '} + + {siteConfig.contactEmail} + + . +
++ These Terms of Service ("Terms") govern your access to and use + of the Retailytics platform provided by {siteConfig.legalName} + ("we", "us"). By creating an account or using the + service, you agree to these Terms. +
+ ++ You may use Retailytics only in compliance with these Terms and + applicable law. You are responsible for activity under your account and + for keeping your credentials secure. +
+ ++ You retain rights to the data you submit. You grant us the rights needed + to host, process, and analyse that data to provide the service. +
+ ++ You agree not to misuse the service, attempt to disrupt it, or use it to + collect data unlawfully or without proper authorisation. +
+ ++ The service is provided on an "as is" basis. We do not warrant + that it will be uninterrupted or error-free, and we are not liable for + indirect or consequential damages to the extent permitted by law. +
+ ++ Questions about these Terms? Contact{' '} + + {siteConfig.contactEmail} + + . +
+