From 8142795533f70face1f4229a684a5cf3ac2bdb27 Mon Sep 17 00:00:00 2001 From: Masih Tanoursaz Date: Wed, 2 Sep 2026 19:38:29 -0400 Subject: [PATCH 1/2] feat(web): add public business landing page --- apps/web/src/app/page.tsx | 237 +++++++++++++++++++++++++++++++++++++- 1 file changed, 235 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 290a021..02317a1 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -1,6 +1,239 @@ -import { redirect } from "next/navigation"; +import Link from "next/link"; +import { + ArrowRight, + CalendarDays, + Clock3, + Instagram, + LockKeyhole, + MapPin, + Scissors, + Sparkles, +} from "lucide-react"; import { getCurrentUser } from "@/lib/auth"; +import { redirect } from "next/navigation"; + +const business = { + address: process.env.NEXT_PUBLIC_BUSINESS_ADDRESS?.trim() || "Toronto, Ontario", + instagram: process.env.NEXT_PUBLIC_INSTAGRAM_URL?.trim() || "", + tiktok: process.env.NEXT_PUBLIC_TIKTOK_URL?.trim() || "", + facebook: process.env.NEXT_PUBLIC_FACEBOOK_URL?.trim() || "", +}; + +const services = [ + { + title: "Nail services", + copy: "Russian manicure, gel polish, acrylic and polygel extensions, refills, strengthening, French and custom nail art.", + icon: Sparkles, + }, + { + title: "Hair services", + copy: "Cuts, styling, root colour, full colour, balayage, ombré and restorative keratin treatments.", + icon: Scissors, + }, + { + title: "Personal appointments", + copy: "Every visit is scheduled with enough time for consultation, detailed work and a comfortable finish.", + icon: Clock3, + }, +]; + +const socials = [ + { label: "Instagram", href: business.instagram }, + { label: "TikTok", href: business.tiktok }, + { label: "Facebook", href: business.facebook }, +].filter((item) => item.href); export default async function Home() { - redirect((await getCurrentUser()) ? "/dashboard" : "/login"); + if (await getCurrentUser()) redirect("/dashboard"); + + return ( +
+
+ +
+
+ + + M + +
+

Manisa

+

Hair & nail studio

+
+ + + + + + + Staff login + +
+
+ +
+
+
+ + Beauty, detail and care +
+

+ Your next appointment, in a calm and welcoming studio. +

+

+ Manisa offers professional hair and nail services with careful attention to detail, personalized appointments and a modern studio experience. +

+ + + +
+ Appointment based + {business.address} +
+
+ +
+
+
+
+
+
+

Manisa studio

+

Designed around your appointment

+
+ + + +
+ +
+ {[ + ["Personal service", "Time reserved specifically for you"], + ["Modern techniques", "Hair, colour, manicure and nail design"], + ["Easy contact", "Find the studio and social pages in one place"], + ].map(([title, copy]) => ( +
+

{title}

+

{copy}

+
+ ))} +
+
+
+
+
+ +
+
+
+

About us

+

Beauty services with a personal touch.

+
+
+

+ Manisa is a client-focused hair and nail studio built around thoughtful service, consistent quality and appointments that never feel rushed. +

+

+ From detailed nail work to cuts, styling and colour services, each appointment is handled with care and tailored to the client's preferences. +

+
+
+
+ +
+
+

Services

+

Focused services, professional results.

+

A selection of Manisa's core service categories. Exact availability and pricing can be confirmed when booking.

+
+ +
+ {services.map(({ title, copy, icon: Icon }) => ( +
+ + + +

{title}

+

{copy}

+
+ ))} +
+
+ +
+
+
+
+

Visit & connect

+

Find Manisa and stay connected.

+ +
+
+ +

Address

+

{business.address}

+
+
+ +

Social media

+ {socials.length ? ( +
+ {socials.map((social) => ( + + {social.label} + + ))} +
+ ) : ( +

Social links will appear here once configured.

+ )} +
+
+
+ +
+
+
+ + + +

Manisa management

+

+ The private management area is for authorized staff to manage customers, appointments, services and business reporting. +

+
+ + Sign in to management + + +
+
+
+
+
+ +
+
+

© {new Date().getFullYear()} Manisa. All rights reserved.

+
+ About + Contact + Login +
+
+
+
+ ); } From e486a5f5dd45a2bdcb252cddd597f85658caf4a4 Mon Sep 17 00:00:00 2001 From: Masih Tanoursaz Date: Wed, 2 Sep 2026 19:38:37 -0400 Subject: [PATCH 2/2] docs(web): document landing page contact settings --- apps/web/.env.example | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/web/.env.example b/apps/web/.env.example index 94e874c..a03e850 100644 --- a/apps/web/.env.example +++ b/apps/web/.env.example @@ -10,6 +10,12 @@ SESSION_COOKIE_SECURE="false" SEED_ADMIN_EMAIL="admin@manisa.local" SEED_ADMIN_PASSWORD="change-me-before-use" +# Public landing page business details. These values are safe to expose to browsers. +NEXT_PUBLIC_BUSINESS_ADDRESS="Toronto, Ontario" +NEXT_PUBLIC_INSTAGRAM_URL="" +NEXT_PUBLIC_TIKTOK_URL="" +NEXT_PUBLIC_FACEBOOK_URL="" + # Optional Google Calendar integration. Manisa works without these. GOOGLE_CLIENT_ID="" GOOGLE_CLIENT_SECRET=""