Commit graph

6 commits

Author SHA1 Message Date
Oskar Kapala 7a6e399379 front: dodaj support@gethumanai.pl obok hello@gethumanai.pl w stopce kontaktu
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 16:46:45 +02:00
Oskar Kapala 09b9bf90bd front: poprawny adres kontaktowy + walidacja formularza
- zamiana wszystkich adresów e-mail @gethumanai.com -> @gethumanai.pl
  (CTASection, Footer, i18n pl/en)
- walidacja po stronie klienta przed wysłaniem (name niepuste,
  email zawiera "@", message >= 5 znaków — zgodne z mailer.mjs)
- mapowanie kodów błędów mailera na czytelne komunikaty w i18n (pl/en),
  pokazywane zamiast generycznego błędu; honeypot company bez zmian

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 16:26:22 +02:00
oskar 2067c79c67 fix deploy.sh: target Hetzner VPS instead of piha.local homelab
Context 'hetzner' → ssh://oskar@135.181.153.108, network npm_default
(NPM runs as 'npm' project on Hetzner, not 'nginxproxymanager' as on piha)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 15:22:04 +02:00
oskar 39d0662197 Add contact form mailer microservice and i18n support
- mailer/: standalone Express+nodemailer service on port 3000 with
  validation, honeypot (company field), per-IP rate limiting (5/min),
  Fastmail SMTP. Returns 400 on bad input, 429 on rate limit, 502 on
  SMTP failure, 200 {ok:true} on success or honeypot hit.
- Dockerfile: multi-stage nginx build for humanai-landing container.
- mailer/Dockerfile: node:22-alpine, no exposed host ports.
- deploy.sh: idempotent deploy of both containers to piha.local via
  Docker context 'piha', with smoke tests (400 on empty body, 200 on
  honeypot fill).
- src/i18n/: minimal pl/en translation files; useT() hook picks
  language from navigator.language.
- CTASection: replaced dead onSubmit with fetch POST /api/contact,
  added hidden honeypot field, success/error states using i18n strings.
- README: Mailer section with two manual steps (credentials + NPM proxy).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 15:12:05 +02:00
Oskar Kapala a8bb798d03 Complete landing page implementation: all sections, responsive design, SEO
Co-authored-by: Junie <junie@jetbrains.com>
2026-05-12 19:10:59 +02:00
Oskar Kapala 737797f536 Initial commit: project structure and header component
Co-authored-by: Junie <junie@jetbrains.com>
2026-05-12 19:09:50 +02:00