Commit graph

9 commits

Author SHA1 Message Date
Vadym Samoilenko
7e67369600 Fix CSP violations: allow PostHog, TinaCMS visual editor framing
- script-src: add us-assets.i.posthog.com (TinaCMS bundles PostHog)
- connect-src: add us.i.posthog.com, us-assets.i.posthog.com
- frame-src: add ai-impress.com (TinaCMS visual editor iframes the site)
- font-src: add data: (TinaCMS font loading)
- X-Frame-Options: DENY → SAMEORIGIN (required for TinaCMS admin preview)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 22:03:33 +00:00
Vadym Samoilenko
0ffb58ca74 Add TinaCMS domains to CSP connect-src
content.tinajs.io and *.tinajs.io were blocked by CSP, preventing
the visual editor from connecting to TinaCloud.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 21:43:03 +00:00
Vadym Samoilenko
f7a010fc93 Fix nginx /blog/ 403: use try_files \$uri /index.html without \$uri/
When \$uri ends with / and the directory exists (dist/blog/), nginx
considers it "found" and returns 403 (no autoindex, no index.html).
Removing \$uri/ ensures SPA fallback always works for route paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 21:42:41 +00:00
Vadym Samoilenko
2fb3fce608 Fix blog 403: add try_files to /blog/ nginx location
Nginx was intercepting /blog/ before the SPA fallback, causing 403 when
it found the blog/ directory without autoindex. Adding try_files ensures
SPA routing handles all /blog/* paths correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 21:37:15 +00:00
Vadym Samoilenko
e78d6dc1c6 Add Twenty CRM integration + lead enrichment + pulsating chat bubble
- New twenty_crm.py: full CRUD for people, companies, notes via Twenty REST API
- Lead capture now creates person + company in Twenty CRM automatically
- New update_lead tool: enriches CRM profile as conversation progresses
  (job title, phone, city, budget, requirements)
- Session meta stored in Redis to track Twenty person ID across messages
- Docker-compose updated with TWENTY_CRM env vars
- Chat bubble: pulsating ring animation with gradient background

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 18:13:26 +00:00
Vadym Samoilenko
73b1a0feda Add AI chatbot: FastAPI backend + React chat widget
- Python FastAPI backend (chatbot-api/) with Claude Sonnet 4.6, prompt injection
  protection, rate limiting (30 msg/session), off-topic filtering, Redis session storage
- Rocket.Chat integration for live monitoring and human takeover
- Lead capture via n8n webhook
- React chat widget: floating bubble, auto-greeting after 30s, glassmorphism chat
  window, mobile responsive, lazy loaded, Mixpanel analytics
- Nginx proxy /api/chat → chatbot-api:8000
- Docker: chatbot-api + Redis services added to docker-compose

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 17:14:07 +00:00
Vadym Samoilenko
37f250f7ed Filter out reviews without text, sync twice a month
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:40:13 +00:00
Vadym Samoilenko
6c1956585a Add SEO, structured data, AI indexing, and Google Reviews integration
- Add react-helmet-async with SEO component for dynamic meta tags on all pages
- Add JSON-LD structured data (Organization, WebSite, ProfessionalService) to index.html
- Add fallback OG/Twitter Card meta tags in index.html for non-JS crawlers
- Add robots.txt allowing all crawlers including AI bots (GPTBot, Claude-Web, etc.)
- Add sitemap.xml with all routes
- Add llms.txt for AI crawler discovery
- Add X-Robots-Tag header and reviews.json cache rule to nginx.conf
- Replace fake testimonials with Google Reviews (fetch /reviews.json)
- Add star ratings, Google badge, and "Leave us a review" button to testimonials
- Add server/sync-reviews.mjs for daily Google Places API review sync

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:26:05 +00:00
Vadym Samoilenko
67c7ab3289 Initial commit: Aimpress website
React 19 + TypeScript SPA with Vite, mobile responsive fixes,
GitHub Actions CI/CD pipeline for automated deployment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 13:47:37 +00:00