- Astro 6 static site, PL default (/) + EN (/en/) - All copy in src/i18n/pl.json and src/i18n/en.json - Sections: Hero, Problem, HowWeWork, Offers, Process, Contact, Footer - Security section hidden behind SHOW_SECURITY flag - Conservative tone for Industry and Med (human-in-the-loop) - Contact form via mailto prefill - Dockerfile multi-stage (node build -> nginx) - docker-compose.yml on npm_proxy network (NPM visible) - deploy.sh for SATURN -> VPS workflow |
||
|---|---|---|
| .vscode | ||
| public | ||
| src | ||
| .gitignore | ||
| astro.config.mjs | ||
| deploy.sh | ||
| docker-compose.yml | ||
| Dockerfile | ||
| nginx.conf | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
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:
- Commits any pending changes and pushes to Forgejo (
oskar/gethumanai-landing). - SSH-es to
ubuntu-4gb-hel1-1, pulls the repo and runsdocker compose up -d --build.
The container joins the npm_proxy Docker network. In Nginx Proxy Manager on the VPS,
create a proxy host: gethumanai.com → http://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.
Swapping the logo
The logo text and SVG icon are in src/components/Nav.astro (.logo).