A full-stack clone of the TetraX AI website with React frontend and Node.js/Express backend.
pdsa/
├── src/ # Frontend React application
│ ├── components/ # React components
│ │ ├── header/ # Header/Navigation component
│ │ ├── footer/ # Footer component
│ │ ├── layout/ # Layout wrapper
│ │ ├── pages/ # Page components (Home, Service, About, etc.)
│ │ └── routers/ # React Router configuration
│ └── ...
├── backend/ # Backend API server
│ ├── server.js # Express server
│ ├── package.json # Backend dependencies
│ └── ...
└── ...
- ✅ Modern, responsive design with TailwindCSS
- ✅ Multi-page navigation (Home, Service, Industry, Technology, Client, About, Career, Contact)
- ✅ Hero section with gradient background
- ✅ Services showcase
- ✅ Client logos section
- ✅ Testimonials carousel
- ✅ Mobile-responsive navigation menu
- ✅ Contact form integration
- ✅ RESTful API with Express.js
- ✅ Contact form submission endpoint
- ✅ Newsletter subscription endpoint
- ✅ Career application endpoint
- ✅ CORS enabled for frontend integration
- ✅ Email notifications (optional, via nodemailer)
- Node.js (v18 or higher)
- npm or yarn
- Install dependencies:
npm install- Start the development server:
npm run devThe frontend will be available at http://localhost:5173 (or the port shown in terminal)
- Navigate to the backend directory:
cd backend- Install dependencies:
npm install- Create a
.envfile (copy fromenv.example.txt):
# On Windows PowerShell:
Copy-Item env.example.txt .env
# On Linux/Mac:
cp env.example.txt .env- Edit
.envfile with your configuration (optional - for email notifications):
PORT=5000
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
CONTACT_EMAIL=career@tetraxai.com- Start the backend server:
npm run devThe backend API will be available at http://localhost:5000
-
Open two terminal windows/tabs
-
Terminal 1 - Start backend:
cd backend
npm run dev- Terminal 2 - Start frontend:
npm run devPOST http://localhost:5000/api/contact- Body:
{ name, email, phone?, company?, subject, message }
- Body:
POST http://localhost:5000/api/newsletter- Body:
{ email }
- Body:
POST http://localhost:5000/api/career/apply- Body:
{ name, email, phone?, position, coverLetter?, resume? }
- Body:
GET http://localhost:5000/api/health
- React 19
- React Router DOM
- TailwindCSS 4
- Vite
- Node.js
- Express.js
- Nodemailer (for email notifications)
- CORS
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm start- Start production servernpm run dev- Start development server with auto-reload
- The backend currently stores contact submissions in memory. For production, integrate a database (MongoDB, PostgreSQL, etc.)
- Email notifications are optional. The API works without SMTP configuration, but won't send emails.
- For Gmail SMTP, use an "App Password" instead of your regular password.
- Make sure to configure CORS properly if deploying frontend and backend separately.
This project is for educational purposes.