fix: wire contact form to FormSubmit; SEO tags, contrast, CLS, console.log cleanup

This commit is contained in:
Amit Rana 2026-04-15 13:27:54 +05:30
parent 0484dd1f7a
commit be5a95c5f7
12 changed files with 52 additions and 301 deletions

View File

@ -1,49 +0,0 @@
# Git
.git
.gitignore
# Docker files
Dockerfile
docker-compose.yml
.dockerignore
# Documentation
README.md
DEPLOYMENT.md
LOGO-FIX-SUMMARY.md
*.md
# OS files
.DS_Store
Thumbs.db
# IDE files
.vscode/
.idea/
*.swp
*.swo
# Logs
*.log
logs/
# Temporary files
tmp/
temp/
# Node modules (if any)
node_modules/
npm-debug.log
# Environment files
.env
.env.local
.env.production
# Build artifacts
dist/
build/
# Backups
*.bak
*.backup

View File

@ -65,7 +65,7 @@
</head>
<body>
<script src="/shared-header.js"></script>
<div class="page">
<div class="page" id="main-content">
<div class="inner">
<div class="num">404</div>
<h1>Page not found</h1>

View File

@ -4,7 +4,7 @@ This file provides guidance to Claude Code when working with code in this reposi
## Project Overview
Static marketing website for Quantum Tasks AI, served via nginx in Docker and deployed via Dokploy with Traefik for SSL and routing.
Static marketing website for Quantum Tasks AI, hosted on Hostinger shared hosting.
## File Structure
@ -17,9 +17,7 @@ terms.html — Terms of Service
shared-header.js — Shared self-injecting header (loaded cross-domain)
robots.txt — Search engine crawl instructions
sitemap.xml — XML sitemap (4 pages)
Dockerfile — nginx:alpine image
docker-compose.yml — Production config with Traefik labels
nginx.conf — nginx routing, caching headers, security headers, 404
.htaccess — Routing, caching headers, security headers, 404
img/ — logo.png, favicon.ico, favicon-*.png, apple-touch-icon.png, og-image.png
```
@ -31,27 +29,23 @@ img/ — logo.png, favicon.ico, favicon-*.png, apple-touch-ic
- Auditor (audit.quantumtaskai.com): `<script src="https://quantumtaskai.com/shared-header.js">`
To update nav links or colors across all apps — edit `shared-header.js` only.
Cache is set to 1 hour via `.htaccess` so updates propagate automatically.
## Local Development
```bash
# Simple static server
python -m http.server 8000
# Docker (matches production)
docker build -t quantumtaskai-website .
docker run -p 8080:80 quantumtaskai-website
```
## Deployment
Deployed via Dokploy. Push to `main` branch triggers redeployment.
Hosted on Hostinger. Push to `main` branch triggers redeployment.
```bash
git push origin main
```
Domains: `quantumtaskai.com` and `www.quantumtaskai.com` (www redirects to non-www).
Domains: `quantumtaskai.com` and `www.quantumtaskai.com` (www redirects to non-www via `.htaccess`).
## Domain Strategy
@ -64,7 +58,7 @@ Domains: `quantumtaskai.com` and `www.quantumtaskai.com` (www redirects to non-w
## Key URLs
- Contact form: uses JotForm `https://form.jotform.com/252121444918050`
- Email: `abhay@quantumtaskai.com`
- Email: `info@quantumtaskai.com`
- Address: Meydan Grandstand, 6th floor, Dubai, UAE
## Design System
@ -80,10 +74,12 @@ Both `index.html` and `digital-branding.html` use an embedded `<style>` block wi
No external CSS file — all styles are embedded per-page for simplicity.
## nginx Features (nginx.conf)
## .htaccess Features
- HTML cached 1 hour, assets cached 1 year
- HTML cached 1 hour, static assets cached 1 year
- `shared-header.js` cached 1 hour (so updates propagate quickly)
- Security headers: X-Frame-Options, X-Content-Type-Options, X-XSS-Protection
- Gzip compression enabled
- Custom 404 page (`/404.html`)
- www → non-www redirect
- www → non-www 301 redirect
- Clean URLs (serves `.html` files without extension)

View File

@ -1,14 +0,0 @@
FROM nginx:alpine
# Remove default nginx config
RUN rm /etc/nginx/conf.d/default.conf
# Copy site files
COPY . /usr/share/nginx/html
# Copy nginx config
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

110
README.md
View File

@ -1,110 +0,0 @@
# Quantum Tasks AI - Static Marketing Website
This is the static marketing website for Quantum Tasks AI, separated from the Django application for optimal performance and SEO.
## Structure
```
static-website/
├── index.html # Home page
├── digital-branding.html # AI Digital Branding services
├── css/
│ └── style.css # Consolidated styles
├── js/
│ └── script.js # Interactive functionality
├── img/ # Images (to be added)
└── README.md # This file
```
## Features
- ✅ **Fast Loading** - Static HTML/CSS/JS
- ✅ **SEO Optimized** - Proper meta tags, structured data
- ✅ **Responsive Design** - Mobile-first approach
- ✅ **Professional UI** - Modern, clean design
- ✅ **Interactive Elements** - Smooth animations, hover effects
- ✅ **Contact Form** - Integrated into homepage with client-side validation
- ✅ **App Integration** - Links to AI Marketplace and authentication
## Pages
### Home Page (`index.html`)
- Hero section with trust indicators
- Company profile and founder information
- Services overview
- Client showcase
- Integrated contact section with form
### Digital Branding Page (`digital-branding.html`)
- AI-powered digital branding services
- SOSTAC+RACE framework explanation
- Process breakdown with 6 steps
- Service portfolio
- CTA to brand assessment form
## Deployment
### Option 1: Netlify (Recommended)
1. Drag and drop the `static-website` folder to Netlify
2. Configure domain settings
3. Enable form handling for contact form
### Option 2: Vercel
1. Connect GitHub repository
2. Set build directory to `static-website`
3. Deploy automatically
### Option 3: GitHub Pages
1. Push to GitHub repository
2. Enable GitHub Pages in settings
3. Set source to `static-website` directory
## Domain Setup
- **Main site**: `yoursite.com` → Static website
- **App subdomain**: `app.yoursite.com` → Django marketplace
## Assets Needed
Add these files to the `img/` directory:
- `logo.png` - Company logo
- `favicon.ico` - Website favicon
- `apple-touch-icon.png` - iOS home screen icon
- `favicon-32x32.png` - 32x32 favicon
- `favicon-16x16.png` - 16x16 favicon
- `og-image.png` - Social media preview image (1200x630)
## Links to Django App
The static site navigation includes:
- AI Marketplace: Links to agent marketplace (placeholder URL until aiagent.quantumtaskai.com is configured)
- Login/Register: Separate authentication buttons (placeholder URLs until configured)
Update these URLs to match your Django app deployment.
## Contact Form
The contact form is integrated into the homepage (#contact section) and includes client-side validation with demo success message. For production:
1. **Option 1**: Use Netlify Forms (add `netlify` attribute to form)
2. **Option 2**: Use Formspree or similar service
3. **Option 3**: Connect to Django backend API endpoint
## Performance
- Optimized fonts loading with preload
- Compressed CSS (single file)
- Minimized JavaScript
- Responsive images (when added)
- Modern CSS with custom properties
## Browser Support
- Chrome 88+
- Firefox 85+
- Safari 14+
- Edge 88+
## License
© 2025 Quantum Tasks AI. All rights reserved.

View File

@ -11,8 +11,11 @@
<meta property="og:description" content="AI-powered digital branding with the SOSTAC+RACE framework. 250% average ROI increase." />
<meta property="og:url" content="https://quantumtaskai.com/digital-branding.html" />
<meta property="og:image" content="https://quantumtaskai.com/img/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="AI Digital Branding — Quantum Tasks AI" />
<meta name="twitter:description" content="AI-powered digital branding with the SOSTAC+RACE framework. 250% average ROI increase." />
<meta name="twitter:image" content="https://quantumtaskai.com/img/og-image.png" />
<link rel="canonical" href="https://quantumtaskai.com/digital-branding.html" />
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
@ -1079,7 +1082,7 @@
<div class="cta-contact-icon"></div>
<div>
<h4>Email</h4>
<a href="mailto:abhay@quantumtaskai.com">abhay@quantumtaskai.com</a>
<a href="mailto:info@quantumtaskai.com">info@quantumtaskai.com</a>
</div>
</div>
@ -1116,9 +1119,9 @@
<div class="container">
<div class="footer-main">
<div>
<img src="img/logo.png" alt="Quantum Tasks AI" class="footer-logo-img" />
<img src="img/logo.png" alt="Quantum Tasks AI" class="footer-logo-img" width="200" height="60" />
<p class="footer-desc">AI-powered automation, cybersecurity, and digital growth — built for businesses ready to move faster and compete smarter.</p>
<a href="mailto:abhay@quantumtaskai.com" class="footer-contact-link">&nbsp;abhay@quantumtaskai.com</a>
<a href="mailto:info@quantumtaskai.com" class="footer-contact-link">&nbsp;info@quantumtaskai.com</a>
<span class="footer-contact-link">📍 &nbsp;Dubai, UAE</span>
</div>
<div>

View File

@ -1,23 +0,0 @@
version: "3.8"
services:
web:
build: .
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.quantumweb.rule=Host(`quantumtaskai.com`) || Host(`www.quantumtaskai.com`)"
- "traefik.http.routers.quantumweb.entrypoints=websecure"
- "traefik.http.routers.quantumweb.tls.certresolver=letsencrypt"
- "traefik.http.services.quantumweb.loadbalancer.server.port=80"
# www → non-www redirect
- "traefik.http.middlewares.www-redirect.redirectregex.regex=^https://www\\.quantumtaskai\\.com/(.*)"
- "traefik.http.middlewares.www-redirect.redirectregex.replacement=https://quantumtaskai.com/$${1}"
- "traefik.http.middlewares.www-redirect.redirectregex.permanent=true"
- "traefik.http.routers.quantumweb.middlewares=www-redirect"
networks:
- traefik-public
networks:
traefik-public:
external: true

View File

@ -831,7 +831,7 @@
"name": "Quantum Task AI LLC FZ",
"url": "https://quantumtaskai.com",
"logo": "https://quantumtaskai.com/img/logo.png",
"email": "abhay@quantumtaskai.com",
"email": "info@quantumtaskai.com",
"foundingDate": "2023",
"description": "AI-powered automation, cybersecurity consulting, and digital branding for modern businesses.",
"address": {
@ -851,7 +851,7 @@
"name": "Quantum Task AI LLC FZ",
"url": "https://quantumtaskai.com",
"image": "https://quantumtaskai.com/img/og-image.png",
"email": "abhay@quantumtaskai.com",
"email": "info@quantumtaskai.com",
"priceRange": "$$",
"description": "AI-powered automation, cybersecurity consulting, and digital branding for modern businesses in Dubai and globally.",
"address": {
@ -1275,7 +1275,7 @@
Book a Consultation
</a>
</div>
<p class="cta-note">Or email us directly at <a href="mailto:abhay@quantumtaskai.com" style="color:rgba(255,255,255,0.5);text-decoration:underline;">abhay@quantumtaskai.com</a></p>
<p class="cta-note">Or email us directly at <a href="mailto:info@quantumtaskai.com" style="color:rgba(255,255,255,0.85);text-decoration:underline;">info@quantumtaskai.com</a></p>
</div>
</div>
</section>
@ -1293,7 +1293,11 @@
<div class="form-card">
<div class="form-title">Send us a message</div>
<form id="contactForm" method="post" action="#">
<form method="POST" action="https://formsubmit.co/info@quantumtaskai.com">
<input type="hidden" name="_subject" value="New enquiry from quantumtaskai.com">
<input type="hidden" name="_template" value="table">
<input type="hidden" name="_captcha" value="false">
<input type="text" name="_honey" style="display:none">
<div class="form-row">
<div class="form-group">
<label class="form-label">Full Name *</label>
@ -1332,7 +1336,7 @@
<div class="c-icon"></div>
<div>
<h4>Email</h4>
<a href="mailto:abhay@quantumtaskai.com">abhay@quantumtaskai.com</a>
<a href="mailto:info@quantumtaskai.com">info@quantumtaskai.com</a>
</div>
</div>
@ -1353,9 +1357,9 @@
<div class="container">
<div class="footer-main">
<div>
<img src="img/logo.png" alt="Quantum Tasks AI" class="footer-logo-img" />
<img src="img/logo.png" alt="Quantum Tasks AI" class="footer-logo-img" width="200" height="60" />
<p class="footer-desc">AI-powered automation, cybersecurity, and digital growth — built for businesses ready to move faster and compete smarter.</p>
<a href="mailto:abhay@quantumtaskai.com" class="footer-contact-link">&nbsp;abhay@quantumtaskai.com</a>
<a href="mailto:info@quantumtaskai.com" class="footer-contact-link">&nbsp;info@quantumtaskai.com</a>
<span class="footer-contact-link">📍 &nbsp;Dubai, UAE</span>
</div>
<div>
@ -1396,21 +1400,6 @@
</footer>
<script>
// Form handler
document.getElementById('contactForm').addEventListener('submit', function(e) {
e.preventDefault();
const btn = this.querySelector('.form-submit');
btn.textContent = 'Message sent ✓';
btn.style.background = '#16a34a';
btn.disabled = true;
setTimeout(() => {
btn.textContent = 'Send Message →';
btn.style.background = '';
btn.disabled = false;
this.reset();
}, 4000);
});
// Scroll-triggered fade-in for sections
const observer = new IntersectionObserver((entries) => {
entries.forEach(el => {

View File

@ -1,57 +0,0 @@
server {
listen 80;
server_name quantumtaskai.com www.quantumtaskai.com;
root /usr/share/nginx/html;
index index.html;
charset utf-8;
# ── Security headers ─────────────────────────────────────────
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
# ── Gzip compression ─────────────────────────────────────────
gzip on;
gzip_types text/plain text/css text/javascript application/javascript
application/json image/svg+xml;
gzip_min_length 1024;
# ── Caching: HTML (1 hour) ───────────────────────────────────
location ~* \.html$ {
add_header Cache-Control "public, max-age=3600, must-revalidate";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
try_files $uri $uri/ =404;
}
# ── Caching: Static assets (1 year) ─────────────────────────
location ~* \.(ico|png|jpg|jpeg|webp|gif|svg|woff|woff2|ttf|js|css)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
access_log off;
try_files $uri =404;
}
# ── Caching: sitemap and robots (1 day) ─────────────────────
location ~* \.(xml|txt)$ {
add_header Cache-Control "public, max-age=86400";
try_files $uri =404;
}
# ── www non-www redirect ───────────────────────────────────
if ($host = "www.quantumtaskai.com") {
return 301 https://quantumtaskai.com$request_uri;
}
# ── Main routing ─────────────────────────────────────────────
location / {
try_files $uri $uri/ $uri.html =404;
}
# ── 404 page ─────────────────────────────────────────────────
error_page 404 /404.html;
location = /404.html {
internal;
}
}

View File

@ -5,6 +5,14 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Privacy Policy — Quantum Tasks AI</title>
<meta name="description" content="Privacy Policy for Quantum Tasks AI. How we collect, use, and protect your information." />
<meta property="og:type" content="website" />
<meta property="og:title" content="Privacy Policy — Quantum Tasks AI" />
<meta property="og:description" content="Privacy Policy for Quantum Tasks AI. How we collect, use, and protect your information." />
<meta property="og:url" content="https://quantumtaskai.com/privacy.html" />
<meta property="og:image" content="https://quantumtaskai.com/img/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Privacy Policy — Quantum Tasks AI" />
<meta name="twitter:description" content="Privacy Policy for Quantum Tasks AI. How we collect, use, and protect your information." />
<link rel="canonical" href="https://quantumtaskai.com/privacy.html" />
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
@ -76,7 +84,7 @@
<h2>1. Who We Are</h2>
<p>Quantum Task AI LLC FZ ("we", "us", "our") is a company registered in Dubai, UAE, operating from Meydan Grandstand, 6th floor, Meydan Road, Nad Al Sheba, Dubai, U.A.E. We provide AI automation, cybersecurity consulting, and digital branding services.</p>
<p>For privacy-related questions, contact us at <a href="mailto:abhay@quantumtaskai.com">abhay@quantumtaskai.com</a>.</p>
<p>For privacy-related questions, contact us at <a href="mailto:info@quantumtaskai.com">info@quantumtaskai.com</a>.</p>
<h2>2. Information We Collect</h2>
<p>We collect information you voluntarily provide when you:</p>
@ -99,7 +107,7 @@
<p>We do not sell, rent, or share your personal information with third parties for marketing purposes.</p>
<h2>4. Data Retention</h2>
<p>We retain your contact information for as long as necessary to provide our services and fulfil any legal obligations. You may request deletion of your data at any time by emailing <a href="mailto:abhay@quantumtaskai.com">abhay@quantumtaskai.com</a>.</p>
<p>We retain your contact information for as long as necessary to provide our services and fulfil any legal obligations. You may request deletion of your data at any time by emailing <a href="mailto:info@quantumtaskai.com">info@quantumtaskai.com</a>.</p>
<h2>5. Third-Party Services</h2>
<p>Our website uses the following third-party services which may process data according to their own privacy policies:</p>
@ -112,13 +120,13 @@
<p>We take reasonable technical and organisational measures to protect your information. Our cybersecurity expertise means data security is taken seriously at every level of our operations. However, no internet transmission is completely secure.</p>
<h2>7. Your Rights</h2>
<p>You have the right to access, correct, or request deletion of any personal data we hold about you. To exercise these rights, email <a href="mailto:abhay@quantumtaskai.com">abhay@quantumtaskai.com</a> and we will respond within 30 days.</p>
<p>You have the right to access, correct, or request deletion of any personal data we hold about you. To exercise these rights, email <a href="mailto:info@quantumtaskai.com">info@quantumtaskai.com</a> and we will respond within 30 days.</p>
<h2>8. Changes to This Policy</h2>
<p>We may update this policy from time to time. The "Last updated" date at the top of this page reflects when changes were last made. Continued use of our website constitutes acceptance of any updated policy.</p>
<h2>9. Contact</h2>
<p>For any privacy-related concerns: <a href="mailto:abhay@quantumtaskai.com">abhay@quantumtaskai.com</a><br>
<p>For any privacy-related concerns: <a href="mailto:info@quantumtaskai.com">info@quantumtaskai.com</a><br>
Quantum Task AI LLC FZ, Meydan Grandstand, 6th floor, Dubai, UAE.</p>
</main>

View File

@ -267,5 +267,5 @@
a.addEventListener('click', closeMenu);
});
console.log('Shared header loaded ✓');
})();

View File

@ -5,6 +5,14 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Terms of Service — Quantum Tasks AI</title>
<meta name="description" content="Terms of Service for Quantum Tasks AI. Rules and conditions for using our website and services." />
<meta property="og:type" content="website" />
<meta property="og:title" content="Terms of Service — Quantum Tasks AI" />
<meta property="og:description" content="Terms of Service for Quantum Tasks AI. Rules and conditions for using our website and services." />
<meta property="og:url" content="https://quantumtaskai.com/terms.html" />
<meta property="og:image" content="https://quantumtaskai.com/img/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Terms of Service — Quantum Tasks AI" />
<meta name="twitter:description" content="Terms of Service for Quantum Tasks AI. Rules and conditions for using our website and services." />
<link rel="canonical" href="https://quantumtaskai.com/terms.html" />
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
@ -118,7 +126,7 @@
<p>We may update these terms at any time. The "Last updated" date reflects the most recent revision. Continued use of our website after changes constitutes your acceptance of the revised terms.</p>
<h2>10. Contact</h2>
<p>Questions about these terms: <a href="mailto:abhay@quantumtaskai.com">abhay@quantumtaskai.com</a><br>
<p>Questions about these terms: <a href="mailto:info@quantumtaskai.com">info@quantumtaskai.com</a><br>
Quantum Task AI LLC FZ, Meydan Grandstand, 6th floor, Dubai, UAE.</p>
</main>