Compare commits

..

20 Commits

Author SHA1 Message Date
Neil Hanlon
04277314e5
fix: don't set labels on the compose 2026-04-29 12:28:05 -04:00
Neil Hanlon
dbdad57525
Flip .cta-section to white; add comments for future section restoration
The By Invitation Only section (white/surface) was removed from the
homepage, leaving two consecutive dark sections. CTA is now bg-surface
with standard text colors. Comments in both the CSS and index.html
explain how to restore the dark CTA if a white section is re-inserted.
2026-04-19 10:50:17 -04:00
Neil Hanlon
85c0b4356f
Second-pass copy/SEO fixes
- Fix alt text regression in open-source/list.html (capture $title before with block)
- Rewrite hosting pricing intro — drop cost-positioning, lead with value
- Remove 'rock-bottom pricing' from By Invitation Only card on hosting page
- Remove Debian 13 Trixie versioning from GoldenDog page; sidebar now says 'Debian stable'
- 'compliance support' -> 'compliance guidance' on about page for consistency
- Remove homepage By Invitation Only section; fold into hero subtitle
- About page CTA body simplified — remove premature setup-time claim
- Hosting page title: 'Hosting Plans' -> 'Managed Hosting Plans'
2026-04-19 10:44:24 -04:00
Neil Hanlon
e78efe933d
Remove leftover Docsy submodule reference 2026-04-19 10:39:02 -04:00
Neil Hanlon
31f6adf354
fix: re-clone 2026-04-18 19:18:35 -04:00
Neil Hanlon
d58a96c2cd
fix: update dockerfile 2026-04-18 19:00:51 -04:00
Neil Hanlon
f0cabcd40d
Update homepage copy: 'static sites' → 'websites, web apps' (#1)
Closes ops #1. The copy 'static sites' undersold what Coolify can host.
The GoldenDog page's 'static site hosting' reference was left as-is since
goldendoglinux.org is in fact a static Docusaurus site.

ops #3 and #5 closed without code changes — 404 renders correctly,
.gitignore has no stale references.
2026-04-16 00:09:22 -04:00
Neil Hanlon
5b9e58cbe6
Update pricing analysis: ops tracking, issue index, project board prioritization
- Add §11: full index of all 30 ops issues with labels, milestones, and
  dependency sequencing notes
- Add §12: project board prioritization table (Now / Soon / Later swim lanes)
  for when Gitea project boards are available after tomorrow's upgrade
- Update subtitle to reflect ops tracking work
2026-04-15 23:58:44 -04:00
Neil Hanlon
d3d6016588
Update pricing analysis with operator Q&A context
- Migadu cost model corrected: flat-rate not per-mailbox; effectively zero
  incremental cost at current scale (paid personally)
- Infrastructure picture updated: Coolify + Hetzner CPX31 + ARIN IPv6/IPv4
  + ASN buildout + CDN ingress nodes (this year, tied to GoldenDog)
- Shared cluster (Essential/Standard) vs. dedicated node (Professional)
  model documented as the right tier-infrastructure mapping
- Current client situation: one friend at /month, -.99/month net,
  casual repricing conversation appropriate but not urgent
- Email strategy roadmap: Migadu short-term, Maxi/enterprise mid-term,
  self-hosted (Stalwart/Mailcow on owned IPs) long-term
- GoldenDog relationship updated: infrastructure buildout is mutual, not
  just a community gift; the CDN architecture is being validated by it
- shrug.games cross-sell section added (tabled pending voice/chat roadmap)
- Dynamic app hosting scope clarified: WordPress etc. in scope within
  resource limits; tier copy should say 'web/app hosting' not 'static'
2026-04-15 23:43:16 -04:00
Neil Hanlon
7fcf78a7f4
Copy/SEO audit fixes across entire site
P1 fixes:
- Homepage title now includes brand tagline and managed hosting keyword
- Contact/hosting/about meta descriptions rewritten with specific info
- Contact page Service Areas section removed (locations AI slop remnant)
- Alt text bug fixed in open-source/list.html ($.Title -> .Title)
- HIPAA/SOC2 compliance claim softened to 'guidance for regulated industries'
- Fake static status indicators on GoldenDog page replaced with status.shrug.host link
- 'same uptime guarantees as paying clients' -> 'same infrastructure'

P2 fixes:
- 'managed hosting' added to homepage pillars copy
- Hosting + about + contact meta descriptions include price/specifics
- 'Ready to get started?' deduplicated (about page now 'Want to work together?')
- About page CTA body now cites 24-48 hour setup time
- 'The hosting service you wish existed' removed from about hero
- 'Quality over quantity' removed from about (kept on homepage)
- 'serves as a core reviewer' -> 'is a core reviewer'
- Contact: duplicate '24 hours' removed from hero subtitle
- Contact: 'Discovery call' -> 'Quick conversation'
- Contact: 'smooth transition with dedicated support' -> 'we handle the migration'
- Contact: 'How you heard about' -> 'How you found us'
- Homepage: 'lightning-fast delivery' -> 'fast delivery, no fuss'
- Homepage: 'Learn More' -> 'About Us'
- Hosting: 'Most Popular' badge -> 'Best for Teams'
- Hosting: pricing positioning reframed away from 'rock-bottom' language
- Footer: System Status link added pointing to status.shrug.host
2026-04-15 23:07:37 -04:00
Neil Hanlon
5fbc1df91f
Add Plausible analytics (excluded from dev server) 2026-04-15 22:32:05 -04:00
Neil Hanlon
7721471c01
Remove dots from sidebar h4 headings; pin sidebar heading color to --text 2026-04-15 22:27:52 -04:00
Neil Hanlon
5adbee5dd6
Remove Docsy theme directory and legacy SCSS files from tracking 2026-04-15 22:19:57 -04:00
Neil Hanlon
bb27679d4e
Cleanup and polish — close out hanging plan items
- Delete themes/docsy/ (not active, just dead weight)
- Delete assets/scss/ (obsolete Docsy/Bootstrap overrides)
- Delete node_modules/ (orphaned, no package.json)
- Add layouts/404.html — on-brand dark hero with gradient 404, two CTAs
- Redesign static/images/social/og-card.svg — dark bg, refined rack icon,
  green dots, Courier New monospace fallback, 'online' status indicator
- Rewrite branding.md — documents Warm Terminal system, Commit Mono,
  Source Serif 4, CSS tokens, dot motif, the full shrug family
- Update PLAN.md — mark all completed phases, note dropped per-page CSS,
  log decisions made during review pass
2026-04-15 22:19:42 -04:00
Neil Hanlon
19e59a0d65
Remove locations section; add global infra note to About page
- Remove locations nav entry from hugo.toml
- Remove Service Areas link from footer
- Remove LocalBusiness schema partial (locations-only)
- Add global infrastructure note to About > Technical Foundation
2026-04-15 22:10:54 -04:00
Neil Hanlon
467194d0b6
Revert "Restore accidentally deleted locations files"
This reverts commit f562884b8dadd2d31a12b4c9eadb197f6d54dc86.
2026-04-15 22:10:33 -04:00
Neil Hanlon
f562884b8d
Restore accidentally deleted locations files 2026-04-15 22:09:47 -04:00
Neil Hanlon
769fc68bc6
Remove dots from card titles; fix remaining inline color overrides
- Strip <span class="dot"> from all .card__title elements (7 files)
  The dot is better as a section/eyebrow marker and list bullet — not every
  card heading. Monospace font carries its own weight.
- Remove style="color: var(--text-on-dark)" from <strong> and <p> tags
  inside cards (contact, hosting, about). These were white-on-white-card.
  Cards with their own background always use --text.
2026-04-15 22:09:23 -04:00
Neil Hanlon
61d154e71a
Fix visual bugs from first review pass
- Card headings in dark sections now always use --text (cards carry their own background)
- Home page: remove redundant icon boxes above card titles, fixes whitespace gap
- Home page: GoldenDog 'Learn about' button properly centered via flex wrapper
- Home page/open-source: soften transactional language — 'in exchange for a shoutout'
  becomes 'we support projects we find worth supporting, most mention us back'
- Hosting page: 'Need infrastructure strategy' footnote now centered with flex column
- Locations page: remove floating prose island before cards, flows directly into grid
- badge: fix via previous commit (already done)
2026-04-15 22:04:43 -04:00
Neil Hanlon
d1b9cb8668
Replace Docsy with custom Hugo theme — Warm Terminal redesign
- Remove Docsy, Bootstrap, Font Awesome dependencies entirely
- New CSS system: tokens + base + components + layouts (vanilla CSS custom properties, light/dark toggle)
- Typography: Commit Mono (headings/UI, self-hosted) + Source Serif 4 (body, self-hosted)
- Green-led color system (#10b981 primary accent, #4f81a3 structural chrome)
- Rebuilt logo SVG: refined server rack with currentColor stroke, always-green status dots
- New favicon: blue-deep background, icon-only, readable at 16px
- New 'Powered by Shrug.host' badge SVGs (light + dark variants)
- Rebuilt all page layouts: homepage, hosting plans, about, contact, locations
- New Community & Open Source Hosting section (/open-source/)
- New GoldenDog Linux partner page (/open-source/goldendog/)
- PLAN.md added to track redesign decisions and progress
2026-04-15 21:46:33 -04:00
10 changed files with 226 additions and 271 deletions

View File

@ -406,92 +406,6 @@
color: var(--text) !important;
}
/* --------------------------------------------------------------------------
Billing toggle (monthly / annual) pure CSS, no JavaScript
-------------------------------------------------------------------------- */
/* Visually hidden checkbox — stays in DOM for ~ sibling selector to work */
.billing-toggle__input {
position: absolute;
opacity: 0;
pointer-events: none;
width: 0;
height: 0;
}
/* Wrapper: flex row containing the label pill + save label */
.billing-toggle-wrapper {
display: flex;
align-items: center;
gap: var(--space-3);
margin-bottom: var(--space-8);
}
.billing-toggle {
display: inline-flex;
align-items: center;
gap: var(--space-3);
background: var(--bg-surface);
border: 1px solid var(--border);
border-radius: 999px;
padding: var(--space-1) var(--space-2);
font-family: var(--font-mono);
font-size: var(--text-sm);
cursor: pointer;
user-select: none;
}
.billing-toggle__option {
padding: var(--space-1) var(--space-4);
border-radius: 999px;
color: var(--text-muted);
transition: background var(--transition), color var(--transition);
white-space: nowrap;
}
/* Monthly active by default (unchecked) */
.billing-toggle__option:first-child {
background: var(--green);
color: #fff;
font-weight: 700;
}
/* Checked: flip to Annual */
.billing-toggle__input:checked ~ .billing-toggle-wrapper .billing-toggle__option:first-child {
background: transparent;
color: var(--text-muted);
font-weight: 400;
}
.billing-toggle__input:checked ~ .billing-toggle-wrapper .billing-toggle__option:last-child {
background: var(--green);
color: #fff;
font-weight: 700;
}
.billing-toggle__save {
font-family: var(--font-mono);
font-size: var(--text-xs);
color: var(--green);
font-weight: 700;
letter-spacing: 0.04em;
opacity: 0;
transition: opacity var(--transition);
}
.billing-toggle__input:checked ~ .billing-toggle-wrapper .billing-toggle__save {
opacity: 1;
}
/* Hide annual prices by default */
.pricing-card__price--annual { display: none; }
.pricing-card__period--annual { display: none; }
/* Checked: show annual, hide monthly — targets .pricing-grid as a sibling of the input */
.billing-toggle__input:checked ~ .pricing-grid .pricing-card__price--monthly { display: none; }
.billing-toggle__input:checked ~ .pricing-grid .pricing-card__price--annual { display: block; }
.billing-toggle__input:checked ~ .pricing-grid .pricing-card__period--monthly { display: none; }
.billing-toggle__input:checked ~ .pricing-grid .pricing-card__period--annual { display: block; }
/* --------------------------------------------------------------------------
Pricing cards
-------------------------------------------------------------------------- */

View File

@ -286,12 +286,12 @@
.pricing-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-columns: repeat(3, 1fr);
gap: var(--space-6);
align-items: stretch;
align-items: start;
}
@media (max-width: 1100px) {
@media (max-width: 900px) {
.pricing-grid {
grid-template-columns: repeat(2, 1fr);
}
@ -308,55 +308,6 @@
grid-template-columns: 1fr;
}
/* --------------------------------------------------------------------------
Add-ons grid
-------------------------------------------------------------------------- */
.addons-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: var(--space-4);
margin-top: var(--space-8);
}
@media (max-width: 640px) {
.addons-grid {
grid-template-columns: 1fr;
}
}
.addon-item {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: var(--space-4);
padding: var(--space-4) var(--space-5);
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius-md);
font-size: var(--text-sm);
}
.addon-item__name {
color: var(--text);
font-weight: 500;
}
.addon-item__desc {
color: var(--text-muted);
font-size: var(--text-xs);
margin-top: var(--space-1);
}
.addon-item__price {
font-family: var(--font-mono);
font-size: var(--text-sm);
font-weight: 700;
color: var(--green);
white-space: nowrap;
flex-shrink: 0;
}
/* --------------------------------------------------------------------------
Section header centered heading + optional lead text
-------------------------------------------------------------------------- */

View File

@ -1,4 +1,4 @@
---
title: "shrug.host — Managed Hosting for Small Organizations"
description: "Human-scale managed hosting for small organizations and open source projects. Starting at $35/month."
description: "Human-scale managed hosting for small organizations and open source projects. Starting at $25/month."
---

View File

@ -1,5 +1,5 @@
---
title: "Managed Hosting Plans"
description: "Managed hosting from $35/month for small organizations. Reliable infrastructure, human support, no surprise charges."
description: "Managed hosting from $25/month for small organizations. Reliable infrastructure, human support, no surprise charges."
weight: 20
---

View File

@ -1,5 +1,5 @@
---
title: "Community & Open Source Hosting"
description: "We host open source projects and community software with professional infrastructure. No cash, no lock-in — just honest hosting for work that matters."
description: "We host open source projects and community software in exchange for a shoutout. No cash, no lock-in — just honest infrastructure for work that matters."
weight: 20
---

View File

@ -2,5 +2,4 @@
title: "GoldenDog Linux"
description: "Hosting Alexia's Debian-based Linux distribution — APT mirror, package repo, website and docs — free for every user."
eyebrow: "open source hosting"
logo: "https://goldendoglinux.org/img/logo.svg"
---

View File

@ -23,32 +23,19 @@
<p>Professional managed hosting for small organizations. Reliable infrastructure and a real person on the other end — without the enterprise overhead.</p>
</div>
<!-- Billing toggle — pure CSS checkbox pattern, no JavaScript -->
<input type="checkbox" id="billing-annual" class="billing-toggle__input" aria-label="Switch to annual billing">
<div class="billing-toggle-wrapper">
<label for="billing-annual" class="billing-toggle">
<span class="billing-toggle__option">Monthly</span>
<span class="billing-toggle__option">Annual</span>
</label>
<span class="billing-toggle__save">Save ~16%</span>
</div>
<div class="pricing-grid">
<!-- Essential -->
<div class="pricing-card">
<div class="pricing-card__name">Essential</div>
<div class="pricing-card__price pricing-card__price--monthly">$35</div>
<div class="pricing-card__price pricing-card__price--annual">$350</div>
<div class="pricing-card__period pricing-card__period--monthly">per month</div>
<div class="pricing-card__period pricing-card__period--annual">per year</div>
<div class="pricing-card__price">$25</div>
<div class="pricing-card__period">per month</div>
<hr class="pricing-card__divider">
<ul class="pricing-card__features">
<li>Website &amp; app hosting (static or dynamic)</li>
<li>5 email mailboxes, unlimited aliases</li>
<li>Static website hosting (Hugo, Jekyll, React, etc.)</li>
<li>Professional email — up to 5 mailboxes, unlimited aliases</li>
<li>DNS management &amp; SSL certificates</li>
<li>Managed form endpoint</li>
<li>Daily backups &amp; monitoring</li>
<li>Daily backups &amp; basic monitoring</li>
</ul>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Small nonprofits, personal portfolios, simple business websites, documentation sites</p>
</div>
@ -57,97 +44,39 @@
<div class="pricing-card pricing-card--featured">
<div class="pricing-card__badge">Best for Teams</div>
<div class="pricing-card__name">Standard</div>
<div class="pricing-card__price pricing-card__price--monthly">$75</div>
<div class="pricing-card__price pricing-card__price--annual">$750</div>
<div class="pricing-card__period pricing-card__period--monthly">per month</div>
<div class="pricing-card__period pricing-card__period--annual">per year</div>
<div class="pricing-card__price">$50</div>
<div class="pricing-card__period">per month</div>
<hr class="pricing-card__divider">
<ul class="pricing-card__features">
<li>Everything in Essential</li>
<li>Nextcloud file storage (25 GB)</li>
<li>15 email mailboxes</li>
<li>Discourse community forum</li>
<li>Nextcloud instance (10 GB storage)</li>
<li>Up to 15 email mailboxes</li>
<li>Forum / discussion platform (Discourse)</li>
<li>Simple database applications</li>
<li>Same business day support response</li>
<li>Priority support</li>
</ul>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Community groups, small businesses, nonprofits needing team tools and file sharing</p>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Medium-sized nonprofits, small businesses, community groups, teams needing file sharing</p>
</div>
<!-- Professional -->
<div class="pricing-card">
<div class="pricing-card__name">Professional</div>
<div class="pricing-card__price pricing-card__price--monthly">$125</div>
<div class="pricing-card__price pricing-card__price--annual">$1,250</div>
<div class="pricing-card__period pricing-card__period--monthly">per month</div>
<div class="pricing-card__period pricing-card__period--annual">per year</div>
<div class="pricing-card__price">$75</div>
<div class="pricing-card__period">per month</div>
<hr class="pricing-card__divider">
<ul class="pricing-card__features">
<li>Everything in Standard</li>
<li>Dedicated server — client-isolated infrastructure</li>
<li>One containerized app (4 GB RAM, 20 GB storage)</li>
<li>25 email mailboxes</li>
<li>50 GB Nextcloud storage</li>
<li>Matrix chat server</li>
<li>Custom application hosting</li>
<li>Up to 50 email mailboxes</li>
<li>Extended storage (50 GB)</li>
<li>Custom domain configurations</li>
<li>Dedicated support contact</li>
</ul>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Professional services, growing organizations, teams with custom application requirements</p>
</div>
<!-- Business -->
<div class="pricing-card">
<div class="pricing-card__name">Business</div>
<div class="pricing-card__price pricing-card__price--monthly">$175</div>
<div class="pricing-card__price pricing-card__price--annual">$1,750</div>
<div class="pricing-card__period pricing-card__period--monthly">per month</div>
<div class="pricing-card__period pricing-card__period--annual">per year</div>
<hr class="pricing-card__divider">
<ul class="pricing-card__features">
<li>Everything in Professional</li>
<li>Two containerized applications</li>
<li>100 GB storage</li>
<li>50 email mailboxes</li>
<li>Next-business-day SLA for critical issues</li>
<li>Monthly 15-minute check-in call</li>
</ul>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Small businesses and firms needing more capacity and a tighter support commitment</p>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Professional services firms, growing organizations, teams with specific technical requirements</p>
</div>
</div>
<!-- Add-ons -->
<div style="margin-top: var(--space-12);">
<h3 style="font-family: var(--font-mono); font-size: var(--text-sm); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); margin-bottom: var(--space-6);">// add-ons</h3>
<div class="addons-grid">
<div class="addon-item">
<div>
<div class="addon-item__name">Matrix Chat Server</div>
<div class="addon-item__desc">Federated, end-to-end encrypted chat for your team. Available on Standard and above.</div>
</div>
<div class="addon-item__price">+$15/mo</div>
</div>
<div class="addon-item">
<div>
<div class="addon-item__name">Compliance Add-on</div>
<div class="addon-item__desc">HIPAA BAA, documented data handling procedures, audit-ready logging. Available on Professional and above.</div>
</div>
<div class="addon-item__price">+$50/mo</div>
</div>
<div class="addon-item">
<div>
<div class="addon-item__name">Extra Email Mailboxes</div>
<div class="addon-item__desc">Additional mailboxes beyond your plan's included count, available on any tier.</div>
</div>
<div class="addon-item__price">$5/mailbox</div>
</div>
<div class="addon-item">
<div>
<div class="addon-item__name">Extra Nextcloud Storage</div>
<div class="addon-item__desc">Additional file storage beyond your plan's base. Available on Standard and above.</div>
</div>
<div class="addon-item__price">$2/10 GB</div>
</div>
</div>
</div>
</div>
</section>
@ -157,24 +86,26 @@
<div class="feature-grid">
<div class="card" style="background: var(--bg-elevated); border-color: var(--border);">
<h3 class="card__title" id="enterprise-heading">Enterprise &amp; Custom</h3>
<h3 class="card__title" id="enterprise-heading">Enterprise &amp; Custom
</h3>
<div class="card__body">
<p>For organizations with compliance requirements, migration needs, or infrastructure that doesn't fit a standard tier:</p>
<p>Need something specific? We work with organizations that have unique requirements:</p>
<ul class="status-list" style="margin-top: var(--space-4);">
<li>HIPAA BAA &amp; compliance documentation</li>
<li>Fully isolated dedicated infrastructure</li>
<li>Custom applications and APIs</li>
<li>Compliance guidance for regulated industries</li>
<li>Migration from existing systems</li>
<li>Custom application architecture</li>
<li>SLA agreements</li>
<li>Integration with external services</li>
<li>Dedicated infrastructure</li>
</ul>
<p style="margin-top: var(--space-4); font-family: var(--font-mono); font-size: var(--text-sm); color: var(--text);">
Custom quotes based on requirements —<br>starting at <strong>$250/month</strong>.
Custom quotes based on requirements —<br>typically <strong>$150500/month</strong>.
</p>
</div>
</div>
<div class="card" style="background: var(--bg-elevated); border-color: var(--border);">
<h3 class="card__title">Included in Every Plan</h3>
<h3 class="card__title">Included in Every Plan
</h3>
<div class="card__body">
<ul class="status-list">
<li><strong>No setup fees</strong> — get started immediately</li>
@ -188,7 +119,8 @@
</div>
<div class="card" style="background: var(--bg-elevated); border-color: var(--border);">
<h3 class="card__title">By Invitation Only</h3>
<h3 class="card__title">By Invitation Only
</h3>
<div class="card__body">
<p>We operate by invitation or referral to maintain service quality. Every client gets real attention — we don't scale to thousands of anonymous customers.</p>
<ul class="status-list" style="margin-top: var(--space-4);">

172
layouts/hosting/single.html Normal file
View File

@ -0,0 +1,172 @@
{{ define "body-class" }}page-hosting{{ end }}
{{ define "main" }}
<!-- Page Hero -->
<section class="page-hero">
<div class="container">
<p class="page-hero__eyebrow">
<span class="dot dot--pulse" aria-hidden="true"></span>
pricing &amp; plans
</p>
<h1 class="page-hero__title">Hosting Plans</h1>
<p class="page-hero__subtitle">Professional hosting at transparent prices, with human support when you need it. No surprise charges. No lock-in.</p>
</div>
</section>
<!-- Pricing Grid -->
<section class="section section--surface" aria-labelledby="pricing-heading">
<div class="container">
<div class="section-header">
<span class="section-label">// plans</span>
<h2 id="pricing-heading">Simple, honest pricing.</h2>
<p>We keep it simple: professional hosting for small organizations that value quality service over rock-bottom pricing.</p>
</div>
<div class="pricing-grid">
<!-- Essential -->
<div class="pricing-card">
<div class="pricing-card__name">Essential</div>
<div class="pricing-card__price">$25</div>
<div class="pricing-card__period">per month</div>
<hr class="pricing-card__divider">
<ul class="pricing-card__features">
<li>Static website hosting (Hugo, Jekyll, React, etc.)</li>
<li>Professional email — up to 5 mailboxes, unlimited aliases</li>
<li>DNS management &amp; SSL certificates</li>
<li>Daily backups &amp; basic monitoring</li>
</ul>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Small nonprofits, personal portfolios, simple business websites, documentation sites</p>
</div>
<!-- Standard — featured -->
<div class="pricing-card pricing-card--featured">
<div class="pricing-card__badge">Most Popular</div>
<div class="pricing-card__name">Standard</div>
<div class="pricing-card__price">$50</div>
<div class="pricing-card__period">per month</div>
<hr class="pricing-card__divider">
<ul class="pricing-card__features">
<li>Everything in Essential</li>
<li>Nextcloud instance (10 GB storage)</li>
<li>Up to 15 email mailboxes</li>
<li>Forum / discussion platform (Discourse)</li>
<li>Simple database applications</li>
<li>Priority support</li>
</ul>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Medium-sized nonprofits, small businesses, community groups, teams needing file sharing</p>
</div>
<!-- Professional -->
<div class="pricing-card">
<div class="pricing-card__name">Professional</div>
<div class="pricing-card__price">$75</div>
<div class="pricing-card__period">per month</div>
<hr class="pricing-card__divider">
<ul class="pricing-card__features">
<li>Everything in Standard</li>
<li>Matrix chat server</li>
<li>Custom application hosting</li>
<li>Up to 50 email mailboxes</li>
<li>Extended storage (50 GB)</li>
<li>Custom domain configurations</li>
<li>Dedicated support contact</li>
</ul>
<p class="pricing-card__suitable"><strong>Suitable for:</strong> Professional services firms, growing organizations, teams with specific technical requirements</p>
</div>
</div>
</div>
</section>
<!-- Enterprise + Included + Invitation -->
<section class="section section--dark" aria-labelledby="enterprise-heading">
<div class="container">
<div class="feature-grid">
<div class="card" style="background: var(--bg-elevated); border-color: var(--border);">
<h3 class="card__title" id="enterprise-heading">Enterprise &amp; Custom
</h3>
<div class="card__body">
<p>Need something specific? We work with organizations that have unique requirements:</p>
<ul class="status-list" style="margin-top: var(--space-4);">
<li>Custom applications and APIs</li>
<li>Compliance support (HIPAA, SOC2, etc.)</li>
<li>Migration from existing systems</li>
<li>Integration with external services</li>
<li>Dedicated infrastructure</li>
</ul>
<p style="margin-top: var(--space-4); font-family: var(--font-mono); font-size: var(--text-sm); color: var(--text);">
Custom quotes based on requirements —<br>typically <strong>$150500/month</strong>.
</p>
</div>
</div>
<div class="card" style="background: var(--bg-elevated); border-color: var(--border);">
<h3 class="card__title">Included in Every Plan
</h3>
<div class="card__body">
<ul class="status-list">
<li><strong>No setup fees</strong> — get started immediately</li>
<li><strong>Human support</strong> — email response within 24 hours, urgent issues faster</li>
<li><strong>Security updates</strong> — automatic patches and monitoring</li>
<li><strong>Backups</strong> — daily automated, retained for 30 days</li>
<li><strong>Uptime monitoring</strong> — 24/7 with automatic failover</li>
<li><strong>Transparent pricing</strong> — no surprise charges</li>
</ul>
</div>
</div>
<div class="card" style="background: var(--bg-elevated); border-color: var(--border);">
<h3 class="card__title">By Invitation Only
</h3>
<div class="card__body">
<p>We operate by invitation or referral to maintain service quality. This keeps our community focused on organizations that value long-term relationships over rock-bottom pricing.</p>
<ul class="status-list" style="margin-top: var(--space-4);">
<li>Personalized service — we know your setup</li>
<li>Focused on long-term relationships</li>
<li>No scaling to thousands of anonymous customers</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- Getting Started -->
<section class="section" aria-labelledby="start-heading">
<div class="container" style="max-width: 720px; text-align: center;">
<span class="section-label">// getting started</span>
<h2 id="start-heading" style="margin-bottom: var(--space-12);">Three steps, that's it.</h2>
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-8); text-align: left; margin-bottom: var(--space-12);">
<div>
<div style="font-family: var(--font-mono); font-size: var(--text-3xl); font-weight: 700; color: var(--green); margin-bottom: var(--space-3);">01</div>
<h4 style="font-size: var(--text-lg); margin-bottom: var(--space-2);">Contact Us</h4>
<p style="font-size: var(--text-sm); color: var(--text-muted);">Email <a href="mailto:hello@shrug.host">hello@shrug.host</a> with your hosting needs.</p>
</div>
<div>
<div style="font-family: var(--font-mono); font-size: var(--text-3xl); font-weight: 700; color: var(--green); margin-bottom: var(--space-3);">02</div>
<h4 style="font-size: var(--text-lg); margin-bottom: var(--space-2);">Discuss Fit</h4>
<p style="font-size: var(--text-sm); color: var(--text-muted);">A brief conversation to understand your requirements and make sure we're a good match.</p>
</div>
<div>
<div style="font-family: var(--font-mono); font-size: var(--text-3xl); font-weight: 700; color: var(--green); margin-bottom: var(--space-3);">03</div>
<h4 style="font-size: var(--text-lg); margin-bottom: var(--space-2);">We Handle Setup</h4>
<p style="font-size: var(--text-sm); color: var(--text-muted);">Most setups are completed within 2448 hours. You handle your work; we handle the servers.</p>
</div>
</div>
<div style="display:flex; flex-direction:column; align-items:center; gap: var(--space-4); margin-top: var(--space-4);">
<a href="mailto:hello@shrug.host" class="btn btn--primary">Get Started</a>
<p style="font-size: var(--text-sm); color: var(--text-muted); margin: 0; text-align: center; max-width: none;">
Need infrastructure strategy beyond hosting?
We work closely with <a href="https://shrugpw.com">Shrug PW Consulting</a>.
</p>
</div>
</div>
</section>
{{ end }}

View File

@ -58,7 +58,7 @@
<h3 class="card__title">Transparent Pricing
</h3>
<div class="card__body">
<p>$35175/month for most setups. No surprise charges, no vendor lock-in, no subscription traps.</p>
<p>$2575/month for most setups. No surprise charges, no vendor lock-in, no subscription traps.</p>
</div>
</div>
</div>

View File

@ -76,19 +76,19 @@
"audience": [
{
"@type": "Audience",
"audienceType": "Small Nonprofits"
"audienceType": "Biotech Companies"
},
{
"@type": "Audience",
"audienceType": "Community Organizations"
},
{
"@type": "Audience",
"audienceType": "Small Businesses"
"audienceType": "Technology Companies"
},
{
"@type": "Audience",
"audienceType": "Professional Services"
},
{
"@type": "Audience",
"audienceType": "Healthcare Organizations"
}
],
@ -99,12 +99,12 @@
{
"@type": "Offer",
"name": "Essential Hosting",
"description": "Website and app hosting, email, DNS, managed form endpoint",
"price": "35",
"description": "Static sites, email, DNS",
"price": "25",
"priceCurrency": "USD",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "35",
"price": "25",
"priceCurrency": "USD",
"unitText": "per month"
}
@ -112,12 +112,12 @@
{
"@type": "Offer",
"name": "Standard Hosting",
"description": "Adds Nextcloud, Discourse forums, more email, same business day support",
"price": "75",
"description": "Adds Nextcloud, forums, more email",
"price": "50",
"priceCurrency": "USD",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "75",
"price": "50",
"priceCurrency": "USD",
"unitText": "per month"
}
@ -125,25 +125,12 @@
{
"@type": "Offer",
"name": "Professional Hosting",
"description": "Dedicated server, containerized app hosting, 25 email mailboxes, dedicated support contact",
"price": "125",
"description": "Matrix chat, custom apps, 50+ email",
"price": "75",
"priceCurrency": "USD",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "125",
"priceCurrency": "USD",
"unitText": "per month"
}
},
{
"@type": "Offer",
"name": "Business Hosting",
"description": "Two containerized apps, 100 GB storage, 50 email mailboxes, next-business-day SLA, monthly check-in",
"price": "175",
"priceCurrency": "USD",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "175",
"price": "75",
"priceCurrency": "USD",
"unitText": "per month"
}