Professional consulting website for PLG growth and self-serve revenue consulting.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Animations: Framer Motion
- Icons: Lucide React
- Analytics: Vercel Analytics
- Deployment: Vercel
- Node.js 18+ installed
- npm or pnpm
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 to view the site.
├── app/ # Next.js app directory
│ ├── (pages)/ # Route pages
│ ├── api/ # API routes
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ ├── globals.css # Global styles
│ ├── sitemap.ts # Dynamic sitemap
│ └── robots.ts # Robots.txt
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ └── ... # Custom components
├── lib/ # Utility functions and data
│ ├── utils.ts # Utility functions
│ └── site.ts # Site constants and data
└── public/ # Static assets
- ✅ Fully responsive design
- ✅ SEO optimized with metadata and sitemap
- ✅ Accessible (WCAG compliant)
- ✅ Performance optimized
- ✅ Type-safe with TypeScript
- ✅ Animated UI with Framer Motion
- ✅ Contact form with API integration
- ✅ Security headers via middleware
- ✅ Analytics with Vercel Analytics
/- Home page with hero, metrics, and offers/services- Services and pricing/approach- Methodology and principles/results- Case studies and results/about- About Ethan/contact- Contact form/legal/privacy- Privacy policy
# Development server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Lint code
npm run lintThis site is optimized for deployment on Vercel:
# Install Vercel CLI
npm i -g vercel
# Deploy
vercelNo environment variables are required for basic functionality. To add email notifications to the contact form, you'll need to:
- Choose an email service (SendGrid, Resend, etc.)
- Add API keys to
.env.local - Update
app/api/contact/route.ts
Edit lib/site.ts to update:
- Contact information
- Service offerings
- Case study metrics
- Approach principles
Edit app/globals.css to customize the color scheme using CSS variables.
Add new pages in the app directory following Next.js App Router conventions.
© 2025 Ethan Teng Consulting. All rights reserved.
- Email: ethan@ethanteng.com
- Phone: 415-867-6937
- LinkedIn: linkedin.com/in/ethanteng