A modern, conversion-optimized funnel website for ImpactIQ, an AI-powered platform designed for roofing contractors to detect storm damage, automate insurance claims, and manage roofing projects.
- AI Damage Detection: Instantly identify hail and storm damage with 99% accuracy
- Claim Automation: Generate adjuster-ready insurance reports in one click
- Digital Inspections: Mobile app for professional roof inspections
- Storm Tracking: Real-time storm alerts and hail mapping
- Homeowner Portal: Branded customer portal for project tracking
- CRM & Pipeline: Roofing-specific CRM for lead management
- HTML5
- CSS3 (Custom styling with animations)
- Vanilla JavaScript
- Font Awesome Icons
- Google Fonts (Inter, Space Grotesk)
- React 18 - UI library
- Vite - Build tool and dev server
- React Router DOM - Client-side routing
- CSS3 - Component styling
- ESLint - Code linting
impactiq-funnel/
├── assets/ # Images, logos, media files
│ └── README.md # Asset documentation
├── css/ # Static CSS files
│ ├── styles.css
│ └── animations.css
├── js/ # Static JavaScript
│ └── main.js
├── src/ # React source files
│ ├── components/ # React components
│ │ ├── Navbar.jsx
│ │ ├── Hero.jsx
│ │ ├── Features.jsx
│ │ ├── Benefits.jsx
│ │ ├── HowItWorks.jsx
│ │ ├── SocialProof.jsx
│ │ ├── CTASection.jsx
│ │ └── Footer.jsx
│ ├── hooks/ # Custom React hooks
│ │ └── useCounter.js
│ ├── styles/ # React CSS files
│ │ ├── index.css
│ │ ├── styles.css
│ │ └── animations.css
│ ├── utils/ # Utility functions
│ ├── App.jsx # Main App component
│ └── main.jsx # React entry point
├── index.html # Static HTML version
├── index-react.html # React HTML entry
├── package.json # Dependencies and scripts
├── vite.config.js # Vite configuration
└── README.md # This file
- Node.js 18+ and npm (for React version)
- A modern web browser
- Clone the repository
- Open
index.htmlin your browser - That's it! No build step needed.
-
Install Dependencies
npm install
-
Start Development Server
npm run dev
The site will open at
http://localhost:3000 -
Build for Production
npm run build
Optimized files will be in the
dist/directory -
Preview Production Build
npm run preview
- Create a new component file in
src/components/ - Import and use it in
src/App.jsx
Example:
// src/components/NewSection.jsx
export default function NewSection() {
return (
<section className="new-section">
<div className="container">
<h2>New Section</h2>
</div>
</section>
)
}
// src/App.jsx
import NewSection from './components/NewSection'
function App() {
return (
<>
{/* ... other components */}
<NewSection />
</>
)
}- Global styles:
src/styles/styles.css - Animations:
src/styles/animations.css - CSS variables: Defined in
:rootinstyles.css
The signup form in CTASection.jsx currently uses a simulated API call. To integrate with a real backend:
- Update the
handleSubmitfunction insrc/components/CTASection.jsx - Replace the simulated Promise with your actual API call
Example:
const handleSubmit = async (e) => {
e.preventDefault()
if (!validateForm()) return
setIsSubmitting(true)
try {
const response = await fetch('/api/leads', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(formData)
})
if (!response.ok) throw new Error('Submission failed')
setSubmitStatus('success')
// Reset form...
} catch (error) {
setSubmitStatus('error')
} finally {
setIsSubmitting(false)
}
}- Run build command:
npm run build - Upload the
dist/folder to your hosting provider - Configure your hosting to serve
index.htmlas the entry point
# netlify.toml
[build]
command = "npm run build"
publish = "dist"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200Create vercel.json:
{
"buildCommand": "npm run build",
"outputDirectory": "dist"
}- Logo: Replace
/assets/impactiq-logo.pngwith your logo - Colors: Update CSS variables in
src/styles/styles.css::root { --primary-blue: #1e40af; --accent-orange: #f97316; /* ... other colors */ }
- Typography: Change Google Fonts import in
index-react.html
- Hero Text: Edit
src/components/Hero.jsx - Features: Modify the
featuresarray insrc/components/Features.jsx - Testimonials: Update
testimonialsarray insrc/components/SocialProof.jsx - Footer Links: Edit
src/components/Footer.jsx
The site is optimized for performance:
- ✅ Lazy loading images
- ✅ Minified CSS and JS in production
- ✅ Font preloading
- ✅ Intersection Observer for scroll animations
- ✅ Optimized React bundle with code splitting
- First Contentful Paint: < 1.5s
- Time to Interactive: < 3s
- Lighthouse Score: 90+
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile browsers (iOS Safari, Chrome Android)
The site follows WCAG 2.1 Level AA standards:
- Semantic HTML elements
- ARIA labels for interactive elements
- Keyboard navigation support
- Screen reader compatible
- Color contrast compliance
To add analytics tracking:
- Add your tracking scripts to
index-react.html - Update tracking functions in
src/components/as needed
Example (Google Analytics 4):
<!-- In index-react.html head -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>MIT License - feel free to use this template for your projects
For issues or questions:
- Create an issue in this repository
- Contact: [your-email@example.com]
- Add pricing page
- Integrate with CRM API
- Add live chat widget
- Implement A/B testing
- Add blog section
- Multi-language support
Built with ❤️ for roofing contractors