chore: record iqon live deployment

This commit is contained in:
Sergei Vasilev
2026-05-20 18:17:20 +03:00
parent 2128c14c7f
commit b5144a501b
16 changed files with 82 additions and 23 deletions
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"> <header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a> <a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary"> <nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav> </nav>
<a class="nav-cta" href="/contact/">Book Discovery Call</a> <a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header> </header>
<main> <main id="main">
<section class="page-hero"> <section class="page-hero">
<p class="eyebrow">Cases</p> <p class="eyebrow">Cases</p>
<h1>Selected outcome snapshots.</h1> <h1>Selected outcome snapshots.</h1>
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"> <header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a> <a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary"> <nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav> </nav>
<a class="nav-cta" href="https://t.me/infobidgebot" rel="noopener" target="_blank">@infobidgebot</a> <a class="nav-cta" href="https://t.me/infobidgebot" rel="noopener" target="_blank">@infobidgebot</a>
</header> </header>
<main> <main id="main">
<section class="page-hero"> <section class="page-hero">
<p class="eyebrow">Contact</p> <p class="eyebrow">Contact</p>
<h1>Start with the decision in front of you.</h1> <h1>Start with the decision in front of you.</h1>
+3 -4
View File
@@ -3,6 +3,9 @@
# Created: 2026-05-20 # Created: 2026-05-20
# Updated: 2026-05-20 # Updated: 2026-05-20
# ── Prefer static entrypoint while WordPress files remain for rollback ──
DirectoryIndex index.html index.php
# ── Security headers ────────────────────────────────────────────── # ── Security headers ──────────────────────────────────────────────
<IfModule mod_headers.c> <IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff" Header always set X-Content-Type-Options "nosniff"
@@ -16,10 +19,6 @@
<IfModule mod_rewrite.c> <IfModule mod_rewrite.c>
RewriteEngine On RewriteEngine On
# ── Force HTTPS ───────────────────────────────────────────
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ── Canonical host ──────────────────────────────────────── # ── Canonical host ────────────────────────────────────────
RewriteCond %{HTTP_HOST} ^www\.iqon\.com$ [NC] RewriteCond %{HTTP_HOST} ^www\.iqon\.com$ [NC]
RewriteRule ^ https://iqon.com%{REQUEST_URI} [L,R=301] RewriteRule ^ https://iqon.com%{REQUEST_URI} [L,R=301]
+2 -2
View File
@@ -147,8 +147,8 @@ curl -I https://iqon.com/robots.txt
If the static deployment has issues: If the static deployment has issues:
1. Log in to reg.ru hosting panel 1. Restore the pre-static files from `/private/tmp/iqon-remote-prestatic-20260520-ftp/` if only root entry files changed
2. Restore files from the backup created in Step 1 2. Log in to reg.ru hosting panel if a full restore is required
3. If only `.htaccess` caused the issue: restore the original WordPress `.htaccess` from `server-backup-20260518/.htaccess` 3. If only `.htaccess` caused the issue: restore the original WordPress `.htaccess` from `server-backup-20260518/.htaccess`
4. The WordPress database and theme files in `_wordpress_backup/` can be restored 4. The WordPress database and theme files in `_wordpress_backup/` can be restored
+2 -1
View File
@@ -17,6 +17,7 @@
<link rel="stylesheet" href="./styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="./styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"> <header class="topbar">
<a class="brand" href="/"> <a class="brand" href="/">
<svg class="brand-mark" viewBox="0 0 44 44" aria-hidden="true"> <svg class="brand-mark" viewBox="0 0 44 44" aria-hidden="true">
@@ -57,7 +58,7 @@
<a class="nav-cta" href="/contact/">Book Discovery Call</a> <a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header> </header>
<main> <main id="main">
<section class="hero" id="approach"> <section class="hero" id="approach">
<div class="hero-copy reveal"> <div class="hero-copy reveal">
<p class="eyebrow">Our Proprietary Consultive Approach</p> <p class="eyebrow">Our Proprietary Consultive Approach</p>
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"> <header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a> <a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary"> <nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav> </nav>
<a class="nav-cta" href="/contact/">Book Discovery Call</a> <a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header> </header>
<main> <main id="main">
<section class="page-hero"> <section class="page-hero">
<p class="eyebrow">Industries</p> <p class="eyebrow">Industries</p>
<h1>Domain-aware technology decisions.</h1> <h1>Domain-aware technology decisions.</h1>
+39 -6
View File
@@ -11,7 +11,7 @@ Purpose: зафиксировать локальную готовность ст
## Scope ## Scope
Проверка выполнена локально 20 May 2026. Удалённый деплой на reg.ru не выполнялся. Локальная проверка выполнена 20 May 2026. Удалённый deploy на reg.ru выполнен 20 May 2026 через FTP без удаления WordPress-файлов.
## Implemented ## Implemented
@@ -23,6 +23,9 @@ Purpose: зафиксировать локальную готовность ст
| Security headers draft | `deploy/.htaccess` CSP tightened and `www.iqon.com` canonical redirect added | | Security headers draft | `deploy/.htaccess` CSP tightened and `www.iqon.com` canonical redirect added |
| Content brief | Case-study and contact blockers marked resolved for launch | | Content brief | Case-study and contact blockers marked resolved for launch |
| Mobile CTA | Contact CTA heading wrap fixed at 390px | | Mobile CTA | Contact CTA heading wrap fixed at 390px |
| Live upload | Static files uploaded to `www/iqon.com` by FTP |
| Live redirect loop | Removed Apache `%{HTTPS}` force block behind nginx |
| Accessibility | Skip link added to all static pages |
## Verification ## Verification
@@ -97,13 +100,43 @@ Observed signal:
## Remaining Gate ## Remaining Gate
Before remote deployment: Before destructive cleanup:
1. Confirm `u0012812_iqon` database archive is downloaded. 1. Confirm `u0012812_iqon` database archive is downloaded.
2. Confirm fresh live file backup exists in reg.ru panel. 2. Keep WordPress files on server until rollback window closes.
3. Confirm deployment window for replacing WordPress files with static files. 3. Decide whether to move WordPress files into `_wordpress_backup/` later.
4. Execute `deploy/README.md` upload steps. 4. Do not delete `wp-content`, `wp-admin`, `wp-includes`, or DB until explicit cleanup approval.
5. Run post-deploy verification from `deploy/README.md`.
## Live Deployment
FTP target:
```text
server71.hosting.reg.ru:/www/iqon.com/
```
Rollback set downloaded locally before upload:
```text
/private/tmp/iqon-remote-prestatic-20260520-ftp/
```
Observed live verification:
```bash
scripts/iqon-phase1-verify.sh https://iqon.com
```
Final signal:
- `[OK] iqon Phase 1 verification passed for https://iqon.com`.
- 10 target pages returned `200`.
- `/sitemap.xml` returned `200`.
- `/robots.txt` returned `200`.
- `/wp-json/` returned `403`.
- `/readme.html` returned `403`.
- `/homepage/` redirected to `/`.
- `/services-solutions/` redirected to `/services/`.
--- ---
+1
View File
@@ -52,6 +52,7 @@ Browser tool:
- Added CSS/JS cache-busting query on prototype pages. - Added CSS/JS cache-busting query on prototype pages.
- Kept target URLs as real paths instead of section anchors. - Kept target URLs as real paths instead of section anchors.
- Added mobile CTA text constraint for contact and other CTA bands. - Added mobile CTA text constraint for contact and other CTA bands.
- Added skip link target for deployed static pages.
## Verification ## Verification
+1 -1
View File
@@ -56,7 +56,7 @@ if HOME="$(fetch_home)"; then
printf '%s\n' "$HOME" | rg -q 'name=["'\'']viewport["'\'']' \ printf '%s\n' "$HOME" | rg -q 'name=["'\'']viewport["'\'']' \
&& pass 'viewport present' \ && pass 'viewport present' \
|| fail 'viewport missing' || fail 'viewport missing'
printf '%s\n' "$HOME" | rg -q 'iqon-skip-link' \ printf '%s\n' "$HOME" | rg -q 'class=["'\''][^"'\'']*(iqon-skip-link|skip-link)' \
&& pass 'skip link present' \ && pass 'skip link present' \
|| fail 'skip link missing' || fail 'skip link missing'
printf '%s\n' "$HOME" | rg -q 'http://www\.iqon\.com|http://iqon\.com|http://maps\.google\.com|http://maps\.googleapis\.com' \ printf '%s\n' "$HOME" | rg -q 'http://www\.iqon\.com|http://iqon\.com|http://maps\.google\.com|http://maps\.googleapis\.com' \
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header> <header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main> <main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Decision support leaders can trust.</h1><p class="lead">IQON helps teams move from fragmented reporting to governed data products and executive visibility.</p></section> <section class="page-hero"><p class="eyebrow">Service</p><h1>Decision support leaders can trust.</h1><p class="lead">IQON helps teams move from fragmented reporting to governed data products and executive visibility.</p></section>
<section class="detail-grid"> <section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Reports conflict, ownership is unclear, and decisions slow down because business users do not trust the data.</p></article> <article class="detail-panel"><h2>Business Problem</h2><p>Reports conflict, ownership is unclear, and decisions slow down because business users do not trust the data.</p></article>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header> <header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main> <main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Architecture that connects business and delivery.</h1><p class="lead">IQON maps capabilities, platforms, dependencies, and constraints so transformation work can proceed with fewer surprises.</p></section> <section class="page-hero"><p class="eyebrow">Service</p><h1>Architecture that connects business and delivery.</h1><p class="lead">IQON maps capabilities, platforms, dependencies, and constraints so transformation work can proceed with fewer surprises.</p></section>
<section class="detail-grid"> <section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Systems evolve in fragments. Teams need a coherent architecture that supports change without blocking delivery.</p></article> <article class="detail-panel"><h2>Business Problem</h2><p>Systems evolve in fragments. Teams need a coherent architecture that supports change without blocking delivery.</p></article>
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"> <header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a> <a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary"> <nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav> </nav>
<a class="nav-cta" href="/contact/">Book Discovery Call</a> <a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header> </header>
<main> <main id="main">
<section class="page-hero"> <section class="page-hero">
<p class="eyebrow">Services</p> <p class="eyebrow">Services</p>
<h1>Technology advisory built around decisions.</h1> <h1>Technology advisory built around decisions.</h1>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header> <header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main> <main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Infrastructure built for resilience and control.</h1><p class="lead">IQON assesses operating risk, modernization options, service models, and cloud decisions through a business lens.</p></section> <section class="page-hero"><p class="eyebrow">Service</p><h1>Infrastructure built for resilience and control.</h1><p class="lead">IQON assesses operating risk, modernization options, service models, and cloud decisions through a business lens.</p></section>
<section class="detail-grid"> <section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Infrastructure cost, reliability, and service quality are difficult to steer when ownership and priorities are fragmented.</p></article> <article class="detail-panel"><h2>Business Problem</h2><p>Infrastructure cost, reliability, and service quality are difficult to steer when ownership and priorities are fragmented.</p></article>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header> <header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main> <main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Risk readiness that fits the business.</h1><p class="lead">IQON helps organizations improve security posture, regulatory confidence, continuity planning, and recovery capability.</p></section> <section class="page-hero"><p class="eyebrow">Service</p><h1>Risk readiness that fits the business.</h1><p class="lead">IQON helps organizations improve security posture, regulatory confidence, continuity planning, and recovery capability.</p></section>
<section class="detail-grid"> <section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Security and continuity programs often sit apart from business priorities, making investment and accountability unclear.</p></article> <article class="detail-panel"><h2>Business Problem</h2><p>Security and continuity programs often sit apart from business priorities, making investment and accountability unclear.</p></article>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" /> <link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head> </head>
<body> <body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header> <header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main> <main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Strategy and governance for technology decisions.</h1><p class="lead">When priorities compete and delivery confidence is low, IQON structures decision rights, investment logic, and execution governance.</p></section> <section class="page-hero"><p class="eyebrow">Service</p><h1>Strategy and governance for technology decisions.</h1><p class="lead">When priorities compete and delivery confidence is low, IQON structures decision rights, investment logic, and execution governance.</p></section>
<section class="detail-grid"> <section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Leadership needs a way to compare initiatives, fund the right work, and see risk before execution cost compounds.</p></article> <article class="detail-panel"><h2>Business Problem</h2><p>Leadership needs a way to compare initiatives, fund the right work, and see risk before execution cost compounds.</p></article>
+16
View File
@@ -98,6 +98,22 @@ body {
padding: 0.7rem 1rem; padding: 0.7rem 1rem;
} }
.skip-link {
position: absolute;
left: -999px;
top: 0.75rem;
z-index: 50;
padding: 0.65rem 0.9rem;
background: var(--ink);
color: #fff;
text-decoration: none;
font-weight: 700;
}
.skip-link:focus {
left: 1rem;
}
.hero { .hero {
display: grid; display: grid;
grid-template-columns: 1.2fr 1fr; grid-template-columns: 1.2fr 1fr;