Skip to main content

Home — Marketing Site

Location: syncad/apps/home Stack: Next.js 15, Tailwind CSS v4 Port: 3000 (dev)

Overview

Public-facing marketing website for SyncAD. Not part of the authenticated application stack — it's a static/ISR (Incremental Static Regeneration) site that communicates product features, pricing, and contact forms.

Pages

Home (/)

  • Hero: product tagline, CTA buttons (Request Demo / Login)
  • Feature highlights: platform cards with screenshots
  • How it works section: 3-step diagram
  • Testimonials / case studies
  • Footer with links and contact info

About (/about)

  • Company background, team, mission

Contact (/contact)

  • Contact form: name, email, phone, school name, message
  • On submit: stores lead in DB or sends via SES

Pricing (/pricing)

  • Tier comparison table (not currently implemented — placeholder)

Login (/login)

  • Redirects to school-admin-ui or respective app login
  • School selector dropdown for multi-school access

Privacy Policy / Terms (/privacy, /terms)

  • Static legal pages

Architecture

// next.config.js
export default {
output: 'standalone',
images: {
domains: ['cdn.syncad.in'],
},
};

// Tailwind v4 — CSS-only configuration
/* app/globals.css */
@import "tailwindcss";

Deployment

Deployed to CloudFront + S3 (Next.js standalone export) or Vercel. GitHub Actions triggers build on push to main.

Key Files

apps/home/src/
├── app/
│ ├── layout.tsx
│ ├── page.tsx # Home
│ ├── about/
│ ├── contact/
│ ├── pricing/
│ └── login/
├── components/
│ └── ui/ # Shared marketing components
└── lib/
└── api.ts # API calls for contact form

Contact Form API

// POST /home/contact (NestJS endpoint)
export async function submitContactForm(data: ContactFormData) {
await sesClient.sendEmail({
Source: 'noreply@syncad.in',
Destination: { ToAddresses: ['sales@metaonus.in'] },
Message: {
Subject: { Data: `New inquiry from ${data.schoolName}` },
Body: {
Text: { Data: `Name: ${data.name}\nEmail: ${data.email}\n\n${data.message}` },
},
},
});
}