feat: сборка в nginx и режим превью (noindex, без контактов)

refs breazu/breazu#2

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mbreazuandClaude Opus 5.5 committed 2026-10-08 16:59:26 +03:00
1 parent f2d89e7117
commit 4e6ab190d1
6 files changed
+35 -27

No files matched your search

+4
View File
@@ -0,0 +1,4 @@
FROM nginx:1.30-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY index.html report.html robots.txt /usr/share/nginx/html/
COPY assets /usr/share/nginx/html/assets
+5 -18
View File
@@ -1,19 +1,6 @@
# breazu — статический сайт # breazu — сайт
Папка целиком заливается на VPS, сборки нет. Состав: `index.html` (главная + hash-подстраницы Статика в nginx (`Dockerfile`, `nginx.conf`). Push в `main` репозитория `breazu/site`
`#/buyers`, `#/vendors`, `#/inhouse`), `report.html` (демо-отчёт), `assets/` (бренд). вызывает вебхук, и Coolify (проект `breazu`, приложение `breazu-site`) выкладывает
https://breazu.net. Сейчас режим превью: `noindex` в заголовке, meta и `robots.txt`,
nginx: контактов нет. Задачи — в `breazu/breazu`.
```nginx
server {
listen 80;
server_name breazu.com; # заменить на реальный домен
root /var/www/breazu;
index index.html;
location / { try_files $uri $uri/ =404; }
}
```
Перед публикацией: заменить `hello@breazu.com` на реальный адрес (grep по обоим html),
подключить HTTPS (certbot). Бренд-ассеты — `assets/` (единственная копия; папки `УПАКОВКА` больше нет).
+10 -9
View File
@@ -3,6 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex, nofollow">
<title>breazu</title> <title>breazu</title>
<meta name="description" content="Professional eyes on software estimates: proposal audit for buyers, proposal engineering for vendors, independent estimates for in-house teams."> <meta name="description" content="Professional eyes on software estimates: proposal audit for buyers, proposal engineering for vendors, independent estimates for in-house teams.">
<link rel="icon" href="assets/app_icon_light.svg" type="image/svg+xml"> <link rel="icon" href="assets/app_icon_light.svg" type="image/svg+xml">
@@ -227,7 +228,7 @@
</div> </div>
</div> </div>
<a href="report.html">Sample report</a> <a href="report.html">Sample report</a>
<a href="mailto:hello@breazu.com">Contact</a> <a href="#contact">Contact</a>
</div> </div>
</div></nav> </div></nav>
@@ -333,7 +334,7 @@
<section style="padding: 64px 0;"><div class="wrap"> <section style="padding: 64px 0;"><div class="wrap">
<h2 class="display">Send us the proposal on your desk.</h2> <h2 class="display">Send us the proposal on your desk.</h2>
<div class="cta-row"> <div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=breazu">Write to us &mdash; reply within one business day</a> <a class="btn btn-primary" href="#contact">Write to us &mdash; reply within one business day</a>
</div> </div>
</div></section> </div></section>
</div> </div>
@@ -345,7 +346,7 @@
<h1 style="max-width: 18ch;">Know what you&rsquo;re signing.</h1> <h1 style="max-width: 18ch;">Know what you&rsquo;re signing.</h1>
<p class="sub" style="font-size: 18px;">You&rsquo;re about to commit &euro;50k&ndash;2m on documents written by the other side. We recompute every line, test the price against benchmarks, and read the contract the way it will be read in a dispute &mdash; then hand you the amendments.</p> <p class="sub" style="font-size: 18px;">You&rsquo;re about to commit &euro;50k&ndash;2m on documents written by the other side. We recompute every line, test the price against benchmarks, and read the contract the way it will be read in a dispute &mdash; then hand you the amendments.</p>
<div class="cta-row"> <div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Express%20check">Express check &mdash; from &euro;600 &middot; 48 hours</a> <a class="btn btn-primary" href="#contact">Express check &mdash; from &euro;600 &middot; 48 hours</a>
<a class="btn btn-ghost" href="report.html">Read a sample report</a> <a class="btn btn-ghost" href="report.html">Read a sample report</a>
</div> </div>
</div></header> </div></header>
@@ -379,7 +380,7 @@
<details><summary>Our documents are confidential.</summary><p>NDA before documents, reports addressed to you alone, nothing you send is reused in any form.</p></details> <details><summary>Our documents are confidential.</summary><p>NDA before documents, reports addressed to you alone, nothing you send is reused in any form.</p></details>
<details><summary>Can you just pick the vendor for us?</summary><p>The audit ends in a verdict per proposal: sign / sign with listed amendments / don&rsquo;t sign, with reasons.</p></details> <details><summary>Can you just pick the vendor for us?</summary><p>The audit ends in a verdict per proposal: sign / sign with listed amendments / don&rsquo;t sign, with reasons.</p></details>
</div> </div>
<div class="cta-row"><a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Proposal%20audit">Send your proposal</a></div> <div class="cta-row"><a class="btn btn-primary" href="#contact">Send your proposal</a></div>
</div></section> </div></section>
</div> </div>
@@ -390,7 +391,7 @@
<h1 style="max-width: 20ch;">Your proposal, built while your seniors keep building.</h1> <h1 style="max-width: 20ch;">Your proposal, built while your seniors keep building.</h1>
<p class="sub" style="font-size: 18px;">Every tender answer costs you 40&ndash;80 senior hours &mdash; architect, lead, PM &mdash; pulled off billable work, with no guarantee of winning. We produce the estimate and the proposal document, built by people who audit proposals for buyers.</p> <p class="sub" style="font-size: 18px;">Every tender answer costs you 40&ndash;80 senior hours &mdash; architect, lead, PM &mdash; pulled off billable work, with no guarantee of winning. We produce the estimate and the proposal document, built by people who audit proposals for buyers.</p>
<div class="cta-row"> <div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Proposal%20engineering">Discuss your tender &mdash; reply in one business day</a> <a class="btn btn-primary" href="#contact">Discuss your tender &mdash; reply in one business day</a>
</div> </div>
</div></header> </div></header>
@@ -413,7 +414,7 @@
<details><summary>Our rates and margins are sensitive.</summary><p>NDA first, and your commercial data never enters our benchmark base.</p></details> <details><summary>Our rates and margins are sensitive.</summary><p>NDA first, and your commercial data never enters our benchmark base.</p></details>
<details><summary>What do you need from us to start?</summary><p>The RFP/brief, your rate card and team model, and 60 minutes with whoever owns the deal. First draft of the estimate in 48 hours.</p></details> <details><summary>What do you need from us to start?</summary><p>The RFP/brief, your rate card and team model, and 60 minutes with whoever owns the deal. First draft of the estimate in 48 hours.</p></details>
</div> </div>
<div class="cta-row"><a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Proposal%20engineering">Send the tender brief</a></div> <div class="cta-row"><a class="btn btn-primary" href="#contact">Send the tender brief</a></div>
</div></section> </div></section>
</div> </div>
@@ -424,7 +425,7 @@
<h1 style="max-width: 20ch;">A second number the board can trust.</h1> <h1 style="max-width: 20ch;">A second number the board can trust.</h1>
<p class="sub" style="font-size: 18px;">When the only estimate is the team&rsquo;s own, the budget owner has nothing to test it against. We build an independent estimate of the same scope &mdash; blind &mdash; then reconcile the two numbers in one working session.</p> <p class="sub" style="font-size: 18px;">When the only estimate is the team&rsquo;s own, the budget owner has nothing to test it against. We build an independent estimate of the same scope &mdash; blind &mdash; then reconcile the two numbers in one working session.</p>
<div class="cta-row"> <div class="cta-row">
<a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Independent%20estimate">Get a second number &mdash; &euro;2,000&ndash;3,500 &middot; 5 days</a> <a class="btn btn-primary" href="#contact">Get a second number &mdash; &euro;2,000&ndash;3,500 &middot; 5 days</a>
</div> </div>
<p class="cta-note">NDA before documents, as on every engagement.</p> <p class="cta-note">NDA before documents, as on every engagement.</p>
</div></header> </div></header>
@@ -445,7 +446,7 @@
<details><summary>Won&rsquo;t the team see this as distrust?</summary><p>In practice the reconciliation session often ends with the team adopting the parts that make their own number defensible.</p></details> <details><summary>Won&rsquo;t the team see this as distrust?</summary><p>In practice the reconciliation session often ends with the team adopting the parts that make their own number defensible.</p></details>
<details><summary>We also got vendor quotes &mdash; can you compare all of it?</summary><p>Yes: internal estimate, vendor proposals and our independent number on one base &mdash; that&rsquo;s the full audit service.</p></details> <details><summary>We also got vendor quotes &mdash; can you compare all of it?</summary><p>Yes: internal estimate, vendor proposals and our independent number on one base &mdash; that&rsquo;s the full audit service.</p></details>
</div> </div>
<div class="cta-row"><a class="btn btn-primary" href="mailto:hello@breazu.com?subject=Independent%20estimate">Send your scope</a></div> <div class="cta-row"><a class="btn btn-primary" href="#contact">Send your scope</a></div>
</div></section> </div></section>
</div> </div>
@@ -455,7 +456,7 @@
<img class="logo-dark" src="assets/logo_with_name_transparentbg_dark.svg" alt="breazu"> <img class="logo-dark" src="assets/logo_with_name_transparentbg_dark.svg" alt="breazu">
</a> </a>
<span>Independent eyes on software estimates.</span> <span>Independent eyes on software estimates.</span>
<span class="mono">hello@breazu.com &middot; EU</span> <span class="mono" id="contact">Contact details coming soon &middot; EU</span>
</div></footer> </div></footer>
<script> <script>
+13
View File
@@ -0,0 +1,13 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# превью закрыто от поисковиков (breazu/breazu#2) — снять при открытии сайта
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
location / {
try_files $uri $uri/ =404;
}
}
+1
View File
@@ -3,6 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex, nofollow">
<title>breazu — Sample Audit</title> <title>breazu — Sample Audit</title>
<meta name="description" content="Sample independent audit of a synthetic fixed-price development proposal — 10 findings, 7 amendments, a verdict."> <meta name="description" content="Sample independent audit of a synthetic fixed-price development proposal — 10 findings, 7 amendments, a verdict.">
<link rel="icon" href="assets/app_icon_light.svg" type="image/svg+xml"> <link rel="icon" href="assets/app_icon_light.svg" type="image/svg+xml">
+2
View File
@@ -0,0 +1,2 @@
User-agent: *
Disallow: /