humanAI landing page - static Astro site
Find a file
Oskar Kapala b7b133647c feat: visual redesign — gradient mesh, per-pillar accents, manifest slogans
- Gradient palette: coral/amber (warm) ↔ indigo/violet/teal (cool)
- Hero: radial blob mesh bg, geometric SVG line-art, gradient on 'AI' in H1,
  gradient primary CTA, per-pillar accent top borders, dot-grid accent
- Manifest strip 'AI dla ludzi, przez ludzi' between hero and problem
- HowWeWork: per-card accents, icon bg pills, human-tagline note
- Offers: gradient top bar per pillar, accent icon containers, abstract SVGs
- Process: gradient numbered circles (warm→cool progression)
- Contact: 'zawsze rozmawiasz z człowiekiem' guarantee badge, gradient email
- Layout: grad-main/grad-cta CSS vars, gradient section hairlines,
  gradient btn-primary/btn-outline, .grad-text utility
2026-06-02 22:41:28 +02:00
.vscode feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
public feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
src feat: visual redesign — gradient mesh, per-pillar accents, manifest slogans 2026-06-02 22:41:28 +02:00
.gitignore feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
astro.config.mjs feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
deploy.sh fix: smoke tests use localhost:8080 (port mapping creates ambiguous container IPs) 2026-06-02 21:49:52 +02:00
docker-compose.yml feat: expose port 8080 on host, add host-port smoke test in deploy.sh 2026-06-02 21:48:34 +02:00
Dockerfile feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
nginx.conf feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
package-lock.json feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
package.json feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00
README.md feat: add smoke tests to deploy.sh (curl container IP after up) 2026-06-02 18:47:09 +02:00
tsconfig.json feat: initial humanAI landing page 2026-06-02 17:24:37 +02:00

humanAI landing page

Static bilingual landing page for humanAI (gethumanai.com).
Stack: Astro 6, static output, i18n PL (default /) + EN (/en/), nginx in Docker.


Local development

# Host: SATURN
npm install
npm run dev        # dev server at http://localhost:4321
npm run build      # build to ./dist/
npm run preview    # preview built site at http://localhost:4321

Docker local test

# Host: SATURN
# Create a local test network if npm_proxy doesn't exist locally
docker network create npm_proxy 2>/dev/null || true
docker compose up --build
# site at http://localhost:80

Deploy to VPS

# Host: SATURN
./deploy.sh

The script:

  1. Commits any pending changes and pushes to Forgejo (oskar/gethumanai-landing).
  2. SSH-es to ubuntu-4gb-hel1-1, clones/pulls to ~/gethumanai-landing and runs docker compose up -d --build.
  3. Runs a smoke test — curls the container IP directly and checks for key strings on PL /, EN /en/, hreflang, and the mailto link. Exits non-zero and prints FAIL if any check fails.

The container joins the npm_proxy Docker network. In Nginx Proxy Manager on the VPS, create a proxy host: gethumanai.comhttp://humanai-landing:80.

Structure

src/
  i18n/
    pl.json          # Polish copy (all text)
    en.json          # English copy (all text)
    index.ts         # translation helpers
  layouts/
    Layout.astro     # HTML shell, meta/OG/hreflang
  components/
    Nav.astro
    Hero.astro
    Problem.astro
    HowWeWork.astro
    Offers.astro
    Process.astro
    Security.astro   # hidden on MVP (SHOW_SECURITY flag)
    Contact.astro
    Footer.astro
  pages/
    index.astro      # PL — /
    en/
      index.astro    # EN — /en/

Enabling the Security section

Open src/components/Security.astro and set SHOW_SECURITY = true.

The logo text and SVG icon are in src/components/Nav.astro (.logo).