Commit Graph

77 Commits

Author SHA1 Message Date
b4a265077e fix: split gemini-token into GET health check + POST token request
All checks were successful
Build & Push / build-and-push (push) Successful in 1m33s
Health check no longer triggers rate limiter, fixing toggle not appearing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 14:02:06 +01:00
067164645b fix: add GEMINI_API_KEY to docker-compose prod environment
All checks were successful
Build & Push / build-and-push (push) Successful in 1m36s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 13:58:51 +01:00
d1d5b7e124 fix: simplify gemini token endpoint to avoid SDK instantiation errors
All checks were successful
Build & Push / build-and-push (push) Successful in 1m42s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 13:52:11 +01:00
bab45b981e feat: website analysis pipeline, voice agent, configurator improvements
All checks were successful
Build & Push / build-and-push (push) Successful in 6m2s
- Site analysis: cheerio HTML parsing, inline tech stack detection (~20 CMS/framework/analytics signatures), Google PageSpeed API integration
- Gemini Live voice agent: WebSocket-based real-time voice mode with live transcript, selection chips, and mid-conversation website analysis
- Type/Talk mode toggle with silent capability detection
- Stepped progress animation during brief generation (4 animated steps)
- URL + thoughts fields in Step 2, phone + contact preference in Step 3
- AI prompt improvements: dedicated website analysis section, 30-min call, concrete benefits, industry depth
- Email redesign: branded templates with logo, proper markdown rendering for both client and admin
- French locale support for AI-generated briefs
- Smaller checkmark, compact booking CTA, expanded brief area

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 13:41:35 +01:00
16cd2a74ee fix: add proper logging for SMTP and AI brief generation
All checks were successful
Build & Push / build-and-push (push) Successful in 1m30s
Logs now show:
- Whether SMTP is configured and which addresses emails go to
- Success/failure for each email (client brief + admin notification)
- Whether OpenRouter API key is set
- AI generation success/failure with status codes
- Fallback to template brief when AI is unavailable

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 19:02:14 +01:00
d971c5905f fix: make .next/cache writable in Docker container
All checks were successful
Build & Push / build-and-push (push) Successful in 1m55s
The nextjs user couldn't write to .next/cache at runtime because
the directory was created by root during the build stage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 18:59:35 +01:00
ff3c1594fa fix: regenerate package-lock.json for CI compatibility
All checks were successful
Build & Push / build-and-push (push) Successful in 5m37s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 18:48:31 +01:00
bdb664633d polish: configurator visual redesign + copy cleanup
Some checks failed
Build & Push / build-and-push (push) Failing after 29s
- Redesigned progress bar: numbered circles with connectors, checkmarks on completion,
  line only fills up to current step, centered layout
- Redesigned service cards: horizontal 3-column grid, border-based selection state,
  check badges, staggered entrance animations
- Fixed card border clipping (ring → border)
- Fixed height stability (selection hint stays in DOM)
- Removed all em dashes, replaced with regular dashes
- Removed all Côte d'Azur / Riviera / France location references sitewide
- Philosophy quote attributed to "Matt Ciaccio, Founder"
- Footer: "American-founded. Serving clients worldwide."
- Email template: LetsBe Solutions LLC
- AI prompt: removed Côte d'Azur reference

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 18:44:37 +01:00
bbe5b6c67e feat: multi-select AI types in configurator
Some checks failed
Build & Push / build-and-push (push) Failing after 34s
- Changed aiType (string|null) to aiTypes (string[]) across all components
- StepServices: chips now toggle on/off independently, descriptions show for all selected
- StepContact: summary tags show all selected AI types
- API route: handles array of AI types for both AI and fallback brief generation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 18:06:44 +01:00
acefb70b68 feat: configurator overhaul — full i18n, AI brief generation, redesigned UI
Configurator:
- Full i18n: industries, timelines, AI types, field labels, error messages,
  complete screen — all translated to French
- Real AI brief generation via OpenRouter (DeepSeek V3.2) with fallback template
- Fixed email notification bug (was sending to client instead of admin)
- Added wizard reset capability ("Start Over" button on success screen)
- Redesigned section shell with refined card, accent line, step indicators
- All step components use translation keys instead of hardcoded strings

Hero:
- Tighter spacing to keep CTAs above the fold
- Reduced bottom gradient height

Footer:
- Removed GitHub link
- Legal name in copyright
- "American-founded" location text

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 17:52:09 +01:00
4aa357a999 polish: nav scroll threshold, footer cleanup, hero gradient
- Nav: trigger solid background at 10px scroll (was 100px) to prevent logo/text overlap
- Footer: copyright uses legal name "LetsBe Solutions LLC"
- Footer: location changed to "American-founded. Serving the Côte d'Azur and beyond."
- Footer: remove GitHub social link (no public GitHub)
- Hero: smooth gradient fade into trust bar section (no hard color gap)
- Services: "SEO & Digital Marketing" replaces "SEO & Performance"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 16:40:15 +01:00
683e0b3e43 polish: complete copy rewrite + i18n fixes + dead link cleanup
All checks were successful
Build & Push / build-and-push (push) Successful in 1m47s
- Rewrite all site copy based on founder interview: honest, outcome-focused,
  premium but approachable tone
- Hero: "Websites, software, and infrastructure — designed and built entirely around you."
- Services: "Design. Build. Run." with clear pillars (Websites, Custom Software, Infrastructure)
- Philosophy: "Your tools should belong to you." — removed Kubernetes reference
- Trust bar: concrete value props (Built From Scratch, You Own Everything, One Team, AI)
- CTA: "Ready to build something?" — direct, no fluff
- Projects: honest descriptions of what was actually delivered
- Fix all French translation gaps: hero accent word, configurator cards,
  project descriptions, footer links, philosophy quote
- Fix dead links: footer service links → /#services, work/about → anchors
- Restore case study links (dynamic route exists)
- Fix mobile hero padding (pt-40 → pt-24)
- AI narrative positioned honestly as add-on capability

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 16:12:50 +01:00
b2f9fd3222 polish: remove 'View all work' link (page doesn't exist)
All checks were successful
Build & Push / build-and-push (push) Successful in 1m31s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 14:20:56 +01:00
ed4174d198 polish: performance optimizations + layout fixes
Some checks failed
Build & Push / build-and-push (push) Has been cancelled
- Hero: convert 7 infinite framer-motion JS animations to GPU-composited CSS @keyframes
- Hero: remove blur filter from word reveal animation (expensive paint)
- Hero: remove eyebrow text overlapping navbar, add top padding
- Process: widen header column (2/5) so title doesn't crowd step cards
- TrustBar: center icons and text in cards
- Fonts: add Google Fonts @import with display=swap + preconnect hints

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 14:19:15 +01:00
7559128d5f polish: remove generic icons from Process cards
All checks were successful
Build & Push / build-and-push (push) Successful in 1m27s
Let the ghosted numerals + gradient top bar carry the visual identity.
Tighter layout: numeral flows directly into title into description.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 22:18:43 +01:00
9e4afd215b polish: tighten spacing + visual refinements across all sections
All checks were successful
Build & Push / build-and-push (push) Successful in 1m23s
- Reduced py-24 → py-20 on Services, Configurator, Process, Works, Philosophy
- TrustBar: py-16 → py-12, gradient bridge adjusted
- Services: pillar divider opacity increased (outline/20), header gap tightened
- Configurator: added subtle dividers between service cards
- SelectedWorks: darkened coming-soon text and border opacity
- Philosophy: confirmed 2px primary border on pillars

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:55:23 +01:00
d033927896 polish: rebuild hero with asymmetric layout + animated geometric composition
All checks were successful
Build & Push / build-and-push (push) Successful in 1m24s
- Asymmetric layout: text left-aligned (58%), geometric right (42%)
- SVG background: scaled down, pushed right, cleaner architectural lines
- Right column: 3 concentric rings rotating at different speeds/directions
- Orbiting accent dots tracing circular paths
- Tick marks, crosshair center, corner brackets, dimension lines
- Radial glow backdrop for atmospheric warmth
- Word-by-word headline stagger animation preserved

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:51:13 +01:00
d76ecbda7a feat: wire up email sending for configurator submissions
All checks were successful
Build & Push / build-and-push (push) Successful in 1m22s
- Created src/lib/email.ts with Nodemailer + Poste.io SMTP
- sendBriefToClient: formatted HTML brief email to the lead
- sendLeadNotification: admin notification with submission details
- Emails fire non-blocking (don't delay the brief response)
- Only sends if SMTP_HOST and SMTP_PASS are configured

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:35:47 +01:00
fcd5e51276 infra: change host port to 6974
All checks were successful
Build & Push / build-and-push (push) Successful in 1m24s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:31:59 +01:00
c7d466f9ef infra: change host port from 3000 to 3847
All checks were successful
Build & Push / build-and-push (push) Successful in 1m31s
Port 3000 is already in use on the server.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:17:49 +01:00
ba94ae1fed polish: darken ghosted numerals (6% → 12% opacity)
All checks were successful
Build & Push / build-and-push (push) Successful in 1m25s
Process and Services section numerals were too faint against white.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:14:12 +01:00
7ca9f6f5e2 polish: deep visual pass across all homepage sections
All checks were successful
Build & Push / build-and-push (push) Successful in 1m26s
Hero:
- Removed fake trust proof avatars
- Added decorative gradient separator line
- Pushed content down for better vertical rhythm
- More visible secondary CTA button

TrustBar:
- Icon circles with primary tint backdrops
- Gradient top accent bar on hover
- Gradient fade transition from hero section
- Increased card padding

Services:
- Subtle grid texture background
- Larger primary-colored feature dots
- Enhanced AI narrative with horizontal decorative rules
- Hover shadow elevation on pillars

Configurator:
- Step numbers in tinted circles with vertical rail
- ShieldCheck trust icon
- Radial gradient glow on wizard panel
- Sparkles icon on AI toggle
- Empty-state hint message
- Service card icons in circular primary backdrops

Process:
- Gradient top accent strips on cards
- Icon containers with primary tint
- Vertical accent bar on section heading
- Dashed SVG connector lines between cards

SelectedWorks:
- Distinct geometric compositions per card (Monaco, Nimara, Amador)
- Bottom gradient fade on placeholder images
- Dot separators between tags
- Animated background pulse on coming-soon cards
- Enhanced CTA hover animations

Philosophy:
- Enriched decorative panel (circle rings, diagonal lines, navy gradient)
- Primary-colored pillar numbers
- Left border accent on pull-quote card

CTABanner:
- Grid pattern + circle ring overlays
- Email link underline-on-hover animation

Footer:
- Full logo image replacing text wordmark
- Larger social icons
- Gradient divider line
- Larger nav logo (h-14 desktop, h-11 mobile)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:11:30 +01:00
a6882d517a feat: integrate Cal.com popup booking via @calcom/embed-react
All checks were successful
Build & Push / build-and-push (push) Successful in 4m52s
- CalButton component: loads Cal.com embed script, triggers popup on click
- Configured for scheduling.letsbe.solutions (self-hosted)
- Wired into configurator completion step (Book a Call)
- Wired into footer Book a Call button
- Brand colors: #006494 light, #5BA4D9 dark

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:57:09 +01:00
cc69085320 ci: remove deploy job, build & push only
All checks were successful
Build & Push / build-and-push (push) Successful in 6m14s
CI only builds the Docker image and pushes to Gitea registry.
Server deployment is manual via docker compose pull + up.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:42:18 +01:00
e034bdf7d3 ci: add Gitea Actions workflow + production compose
Some checks failed
Build & Deploy / build-and-push (push) Failing after 33s
Build & Deploy / deploy (push) Has been skipped
- .gitea/workflows/deploy.yml: build, push to Gitea registry, SSH deploy
- docker-compose.prod.yml: pulls pre-built image from registry (for server)
- docker-compose.yml: kept for local development (builds from source)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:40:54 +01:00
93c97da4d0 infra: add Docker, Compose, and Nginx for staging deployment
- Dockerfile: multi-stage build (deps → builder → runner), standalone output
- docker-compose.yml: app + postgres services, health checks
- nginx/staging.letsbe.biz.conf: reverse proxy ready for certbot SSL
- Updated .env.example with all required secrets

Deploy steps:
1. Copy nginx conf to /etc/nginx/sites-enabled/
2. nginx -t && systemctl reload nginx
3. certbot --nginx -d staging.letsbe.biz
4. Create .env from .env.example
5. docker compose up -d --build

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:38:29 +01:00
a1f9eca76c feat: complete agency site build (Phases 1-7)
Full Next.js 16 + Payload CMS 3.x agency site with:
- Homepage: Hero, TrustBar, Services, Configurator wizard, Process,
  Selected Works, Philosophy, CTA Banner
- Sub-pages: /services (3 pillars + AI Layer), /work/[slug] (case
  studies), /about (philosophy + story)
- Configurator: 3-step wizard with AI brief generation API
- i18n: Full EN/FR bilingual with next-intl
- Design system: Cormorant Garamond + Inter, celestial blue palette,
  glassmorphism nav, Framer Motion animations
- Payload CMS collections: Projects, Services, Submissions, Media

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:37:38 +01:00