# Textspeed CPaaS — Next.js

Built with **Next.js 14 (App Router)** + **Tailwind CSS** + **Redux Toolkit** +
**React Hook Form** + **Framer Motion**. Pure JavaScript (no TypeScript).

## Folder structure

```
src/
  app/                       # Next.js App Router pages
    layout.jsx               # root layout (fonts + Providers)
    page.jsx                 # Home page
    sms/page.jsx             # Bulk SMS landing
    platform/…/page.jsx      # Nav destinations (empty placeholders)
    solutions/…, resources/…, company/…, pricing/
  components/
    layout/                  # Navbar, MobileMenu, Footer, SearchOverlay
    common/                  # DemoModal (RHF), Reveal (framer-motion), PagePlaceholder
    sections/home/           # Home page sections
    sections/sms/            # SMS page sections
  store/
    index.js                 # Redux store
    slices/uiSlice.js        # modal / drawer / search UI state
    slices/dummySlice.js     # dummy nav + testimonial data
  hooks/
    useScrollHeader.js       # header .scrolled toggle on scroll
  data/
    nav.js                   # nav mega-menu content (dummy data)
    testimonials.js
    faq.js
  lib/
    cn.js
  styles/globals.css         # Original design system CSS (preserved 1:1)
public/image/                # Assets shipped from the SMS zip
```

## Install & run

```
npm install
cp .env.example .env.local
npm run dev
```

Open http://localhost:3000

## CMS database setup

Blog, careers, job applications and SEO metadata are read from MySQL. After
pulling the project on a new system, create/import the database before testing
those pages:

```
mysql -u root -p < database/schema.sql
```

Then update `.env.local` with the local MySQL username, password and database
name. If the database is not configured, the public pages will still load with
empty states, but CMS content and career applications will not work.

For real blog content, import the latest CMS data dump from the working server
or local machine because the repo stores the table structure, not all uploaded
blog records and images.

## Notes

* The full original CSS is preserved in `src/app/globals.css` — visual design
  is identical to the uploaded HTML.
* Navbar, Footer, MobileMenu, DemoModal, SearchOverlay are shared between the
  Home and SMS pages.
* Nav mega-menu items link to real routes (`/platform/whatsapp-business-api`, etc.); those
  pages are intentionally empty placeholders as requested.
* Redux Toolkit powers UI state (modal open, mobile drawer) and hosts dummy
  data (nav config, testimonials).
* React Hook Form drives the multi-step Book-a-Demo form.
* Framer Motion animates hero and section reveals.
