Skip to content

Relaunch peakscale.ch - #27

Merged
johanngyger merged 51 commits into
mainfrom
relaunch-2026
Aug 20, 2026
Merged

Relaunch peakscale.ch#27
johanngyger merged 51 commits into
mainfrom
relaunch-2026

Conversation

@johanngyger

@johanngyger johanngyger commented May 3, 2026

Copy link
Copy Markdown
Contributor

🔗 Preview: https://peak-scale-relaunch-2026.peakscale.pages.dev


Rebuild peakscale.ch on the new IA, design system and content. Implementation plan tracked locally in relaunch/plan.md (gitignored working doc).

  • Pages: Home, Services, Produkte (NEW), Team, Impressum, Datenschutz – DE at root, EN at /en/. Old URLs kept as Hugo aliases.
  • Stack: Hugo extended + plain CSS (base.css + site.css) + ~30 lines of vanilla JS. No Node toolchain, no Hugo theme.
  • Design system: BEM-style component classes (.icon-tile, .card, .next-steps__card, ...) on top of a ~15-token palette. Brand colors are --bright-blue / --dark-blue / --bg-white after the logo. Photo overlays consolidated into a single --overlay-photo variable.
  • Data & i18n: data in data/*.yaml, UI strings in i18n/{de,en}.toml.
  • Migration: predecessor Clancy theme (inlined SCSS, Disqus, blog/portfolio/contact-form, legacy content folders) removed; customer logos and team photos moved to static/images/.

Open items

  • Visuals (with designer)
  • SEO
  • Real testimonials
  • Feedback from the whole team

johanngyger and others added 2 commits May 3, 2026 11:12
Per specs/relaunch-plan.md sprints 0–5: rebuild the site on Hugo extended
with plain CSS (tokens.css + site.css from the Claude PS Design System)
and ~30 lines of vanilla JS — no Tailwind, no Alpine, no Node toolchain.

- New IA: Home, Services, Produkte (NEW), Team, Impressum, Datenschutz,
  in DE (root) and EN (/en/). About and Contact merge into Team and a
  prominent mailto CTA. /angebot/, /about/, /contact/, /legalnotice/,
  /privacy/ kept as Hugo aliases for redirect continuity.
- New layouts: index, services/list, produkte/list, team/list, plus
  partials for header, footer, mobile menu, lang switch, contact-floating,
  and per-page hero visuals (compass, blocks, network, mountain, mail).
- Centralised data in data/{customers,partners,team,testimonials}.yaml
  and i18n strings in i18n/{de,en}.toml.
- SEO foundation in head.html: per-page title/description, OG/Twitter
  tags, canonical, hreflang, JSON-LD (Organization on every page,
  WebSite on home), Plausible analytics snippet.
- Migrated existing customer logos and team photos from content/ to
  static/images/. Added a read-only design-system-reference/ snapshot of
  the Claude PS Design System (tokens, preview pages, JSX component
  blueprints).
- Removed the predecessor SCSS pipeline, Disqus/Plausible-helper partials,
  blog/portfolio/subscribe sections, contact form, and the old About,
  Contact, Legalnotice, and Privacy content directories.

Sprints 6–7 (custom imagery, OG image generator, Lighthouse/Pa11y/
Playwright CI, native EN review, privacy-notice review, DNS switch)
remain open per the punch list.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Templates use the `hugo.Sites` and `hugo.Data` globals (introduced in
Hugo 0.156) to avoid the deprecation warnings on `.Site.Languages` and
`.Site.Data`. CI was still on 0.143.1 and failed to render with
"can't evaluate field Sites in type interface {}".

Bumps both workflow files to 0.161.1, adds `.hugo-version` for asdf/mise
users, and notes the version expectation in shell.nix (Nix users may
need `nix flake update` if `pkgs.hugo` lags behind).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented May 3, 2026

Copy link
Copy Markdown
built with Refined Cloudflare Pages Action

⚡ Cloudflare Pages Deployment

Name Status Preview Last Commit
peakscale ✅ Ready (View Log) Visit Preview 0f1bcab

Replaces the topo-mountain placeholders and the SVG hero partials on the
relaunch site with the curated raster crops from Peak Scale (DEV).fig.

- Heroes: home (low-poly mountain w/ stage pills), services (compass),
  produkte (modular blocks, replacing visuals/blocks-large.html), team
  (connected nodes, replacing visuals/network-large.html).
- Section media: 4 lifecycle rows on home, 5 values rows on team,
  challenges-glass background on home + services, produkte mid-page
  banner.
- Why grid: restores the "Peak steht für technische Tiefe" featured tile
  (back to 6 cards as in the HiFi) with the dark-blue topo-abstract
  anchored to the bottom of the card.

Drops em-dashes from all German content (en-dash is the German
Gedankenstrich), keeping em-dashes in the English siblings via
lang-conditional templates for testimonial citations and the team
LinkedIn aria-label.

Tones the .display-xl cap from 128 px to 88 px since the original
Figma value rendered too large at desktop widths.

Adds /static/_figextract/ to .gitignore (working extracts; only the
curated images under static/images/{hero,section}/ are committed) and
documents the Sprint 6 progress in specs/relaunch-plan.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@johanngyger johanngyger changed the title Relaunch peakscale.ch (Sprints 0–5) Relaunch peakscale.ch (Sprints 0–5 + Sprint 6 imagery) May 3, 2026
Decision (3 May): we do not license the Figma stock placeholders we
currently ship. Instead we'll select replacement stock — or commission
the in-house alpine shoot per Mathias — once the rest of Sprint 6 is
closed, then license only the chosen final set. Picking imagery that
actually fits the brand is the bottleneck, not the licensing step.

- §16 risk row updated with the deferral and reasoning
- §17 decisions: new entry #12 capturing the call
- §18 punch-list item 2 sub-bullets reordered: (a) prune dead
  visuals/*.html partials, (b) review topo-abstract choice,
  (c) deferred image swap + licensing

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The brand-token SVGs in layouts/partials/visuals/ (compass, blocks,
network, mountain, topo, *-large variants) are hand-coded, ~300 lines
total, no external dependencies. They are candidates for the OG
generator (Sprint 6 item 3), the print stylesheet (§14), and as a
fallback for any raster photo that doesn't survive review. Worth
keeping; the previous plan note suggesting a prune was wrong.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Treated as optimisation rather than launch-blocking. The single
fallback OG (`/images/peakscale-logo-square.png`) keeps share previews
working. Revisit only if a stakeholder asks.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bigger Sprint 6 polish pass touching all four main pages:

- Header/footer use the proper Peak Scale logo SVG (light + dark);
  drops the inline brand-mark + text and the header contact CTA.
- Footer collapses to 3 columns (brand + about + LinkedIn icon,
  menu, legal); contact mail joins the bottom row.
- New `.accent` helper to colour-highlight single words inside
  headings; applied across pages.
- Home Why grid swaps numeric meta for per-tile icons; new
  "challenges-glass--split" layout (heading left, stacked cards
  right, optional featured card).
- Home Next-steps becomes a 1+2 mosaic with primary/gold/sage
  variants and an optional checklist on the primary card.
- Produkte own-solutions cards add a "Geeignet für" fit-block;
  partner cards now show role + themed bullet list.
- Services tightens engineering subhead and rewrites
  assessments/training cards; "Wie wir arbeiten" tag becomes a
  bulleted list.
- Team page refreshes mission, how-we-work, why-cloud-native,
  values, community and contact copy with footnotes where useful.
- data/team.yaml updates roles and focus areas; testimonials.yaml
  rewrites two of three quotes.
- icon.html adds building, messages, lab, globe, doc, spark.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@johanngyger johanngyger changed the title Relaunch peakscale.ch (Sprints 0–5 + Sprint 6 imagery) Relaunch peakscale.ch May 3, 2026
Replaces the flat greyscale logo strip with auto-scrolling boxed
tiles per the Figma reference. Pure-CSS marquee (no extra JS):
each customer is duplicated once so the keyframe loop is seamless,
hover pauses the animation, and the edges are masked into the
section background. prefers-reduced-motion falls back to a static
horizontally scrollable row.
Switches the logo strip from a CSS-keyframe marquee to a
transform-based slider with explicit left/right arrows. Auto-advance
still runs every 3.5s, pauses on hover or keyboard focus, and is
suppressed under prefers-reduced-motion. The track loops at both
ends so prev from the start jumps to the last full page and vice
versa.
johanngyger and others added 3 commits May 3, 2026 18:01
Removes ~140 lines of CSS that no template references:

- .icon-tile, .card-meta*, .card--brand + overrides, .card--glass,
  .eyebrow--pill, .eyebrow--sm
- The legacy boxed .lifecycle / .lifecycle__stage / .lifecycle__dot
  strip (replaced by .lifecycle-rows)
- .mountain-stages*, .stage-list* (only the unused visuals/mountain
  partial referenced these)
- .value-tile*, .partner-logos__name, .partner-logos__role
- Empty `.cat-card { /* extends .card */ }` rule
- Stale `.site-footer__social` selector in the print stylesheet

Adds four on-dark text/accent tokens to tokens.css and folds 25
hardcoded rgba/rgb instances through them:

- --text-on-dark        (rgba 255,255,255,.78)
- --text-on-dark-strong (rgba 255,255,255,.85)
- --text-on-dark-soft   (rgba 255,255,255,.72)
- --accent-on-dark      (rgb 122,192,232)

Print stylesheet refreshed to hide testimonial nav and the new
logo-carousel arrows alongside the contact-fab.

CSS surface goes from 1540 → 1450 lines.
Cuts inline `style=""` attributes across the four main layouts from
72 down to 11 (only dynamic background-image URLs remain). The
removed inline styles were almost all rebuilding the same handful
of patterns; they are now expressed as small CSS components.

New components in site.css:

- .checklist (+ .checklist--grid-2, .checklist--md, .checklist--on-dark)
  Replaces the manually-marked-up `<li><span style="color:var(--accent-sage)">✓</span>…`
  pattern repeated ~12 times across produkte own/partners, services
  engineering work-style tag, and services assessments output strip.
- .col-narrow / .col-narrow--md — 880 / 720 px centred columns.
- .section__footnote — small grey centred note (team how-we-work,
  community).
- .numbered-step{,__num} — produkte journey row.
- .lifecycle-cards__card.is-stack — swaps the inline icon/title/desc
  stack on team how-we-work and services assessments to use the
  existing .lifecycle-cards__title / __desc classes.
- .own-card{,__icon,__title,__eyebrow}, .own-cards (Produkte own
  solutions stack).
- .partner-cards / .partner-card__{logo,role,themes-title} (Produkte
  technology partners 2x2 grid).
- .journey-banner (Produkte mid-page banner).
- .service-stack(--tight), .service-card__items, .card__eyebrow,
  .tag-arbeitsweise__list, .assessment-cards, .output-block (Services
  page columns and dark glass output strip).
- .heading-xl, .lead--flush, .mission-grid (Team mission row).
- .section--gold, .section__icon--gold, .pill-row--center,
  .contact-cta{,__eyebrow,__title,__actions} (Team community + contact
  CTA).
- .section--deep — replaces 4 ad-hoc `style="background:var(--fg-deep)"`
  on the next-steps sections across all four pages.
- .training-cards margin helper.

Also removes the now-dead `.contact-block` rule from site.css and
fills in `.challenges-glass__intro .lead` so it can render
`var(--text-on-dark-strong)` without an inline override.
Both the relaunch implementation plan (previously
specs/relaunch-plan.md) and the read-only Peak Scale Design System
reference (previously design/design-system-reference/) move under
/relaunch/ on contributor machines. /relaunch/ is now ignored — it is a
local working area for plans, design references and Figma exports that
are not part of the build.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Logo strip:
- Shuffles tiles in place on every page load (Fisher-Yates).
- Becomes a true infinite carousel: clones the shuffled set so the
  track is twice as long, snaps the transform back by one set-width
  on each transitionend, and jumps invisibly to the mirror position
  before any prev that would go below zero.
- Each img now fills the full tile interior (`width: 100%; height: 100%;
  object-fit: contain`) so the visible "border" around every logo
  is identical regardless of the source aspect ratio. Generous
  18×32 padding gives all tiles a uniform frame.
- freezeAtRendered() halts in-flight transitions on hover/focus and
  before clicks so tiles don't slip out from under the cursor.
- Customer SVGs cropped to their visible content:
    bfh.svg viewBox 0 0 652 652 → 160 71 322 500
    eth.svg viewBox 0 0 320 320 → 3 134 314 51 (also dropped width/height attrs)
    ewb.svg viewBox 24.9 0.1 117.9 58.9 → 0 0 144 59 (the old box clipped content)
    postfinance.svg now has an explicit viewBox so it can scale.

Brand token rename:
- tokens.css: renames the three brand colors after the logo
  (--brand → --bright-blue, --fg → --dark-blue, with --bg-white
  staying the white). All call-sites in site.css and the
  visuals/*.html SVG partials follow the rename.
File rename
- tokens.css → base.css. The file holds design tokens + base element
  styles + small primitives (.btn, .pill, .card, .dot-square), so
  "tokens" overstated its scope. head.html and site.css updated to
  match.

Photo-anchored accent colors
- --accent-sage / -soft → --accent-green / -soft, value
  rgb(125, 175, 75) / rgb(228, 240, 210). Sampled from the green rope
  in static/images/section/platform-engineering.jpg.
- --accent-gold / -soft → --accent-yellow / -soft, value
  rgb(232, 184, 60) / rgb(252, 238, 180). Sampled from the yellow rope
  on the same image and the warm sky in cloud-architecture.jpg.
- The old sage/gold values were too desaturated to read alongside
  these images. The new pair is the complement of the brand blue
  (yellow at hue 44° vs dark-blue at 221°) with grass green bridging
  the two.

Drop dead / near-duplicate tokens
- --stroke-on-dark-1 (unused), --stroke-on-dark-3 (unused);
  --stroke-on-dark-2 renamed to --stroke-on-dark.
- --text-on-dark-soft (.72α), --text-on-dark-strong (.85α): both
  visually indistinguishable from --text-on-dark (.78α) on dark navy.
- --accent-gold-ink: ~= --accent-gold.
- --status-ok, --status-err: unused.
- --legacy-fg, --legacy-bg, --legacy-rope: unused.
- The entire shadcn :root block (--background, --foreground, --card,
  --primary, --secondary, --muted, --accent, --border-shadcn, --input,
  --ring, --radius and their *-foreground variants): all unused.
- --shadow-card: unused.

Final palette: 15 named color tokens + 3 shadows, down from ~41.

Comment cleanup
- Header reduced to the brand-identity callout (the three colors with
  their tokens, plus the brand-vs-supportive distinction). All
  references to Figma, the design system, hi-fi / lo-fi history,
  shadcn and "canonical" sourcing removed across base.css.
- Per-token comments reduced to short purpose markers (`body copy`,
  `meta`, `pale wash`, …) where they add something the name doesn't.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@johanngyger
johanngyger marked this pull request as ready for review August 14, 2026 17:21
@johanngyger johanngyger self-assigned this Aug 14, 2026
@johanngyger
johanngyger merged commit 3919739 into main Aug 20, 2026
1 check passed
@johanngyger
johanngyger deleted the relaunch-2026 branch August 20, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants