diff --git a/README.md b/README.md index b9c1c5a..b987661 100644 --- a/README.md +++ b/README.md @@ -190,11 +190,14 @@ photography existed: | `engineer-glass.jpg` | Method section | https://www.magnific.com/app/creation/3zdScUIREY | | `sector-5g.jpg` | Sectors, tab 1 | https://www.magnific.com/app/creation/s7ZQP52l8e | | `sector-substation.jpg` | Sectors, tab 2 | https://www.magnific.com/app/creation/yi0r27vPW9 | -| `sector-datacentre.jpg` | Sectors, tab 4 | https://www.magnific.com/app/creation/eIHAvetdqL | +| `sector-datacentre.jpg` | Sectors, tab 5 | https://www.magnific.com/app/creation/eIHAvetdqL | `sector-ot.jpg` (Sectors, tab 3, operational technology) is a real photograph from the Freepik stock catalogue via Magnific, "Workers in control room" (free licence, Canon EOS 5D Mark III, 2017), downloaded on 7 October 2026 and scaled to 2304 px. +`sector-rd-engineer.jpg` (Sectors, tab 4, products with digital elements) comes from the same +catalogue: "Male Industrial Engineer Solving Problems Working on a Personal Computer" (premium licence), downloaded on 7 October 2026 and +scaled to 2304 px. They are placeholders in the sense of the brief: swap them for the company's own documentary photography when it exists, keeping the same file names and the `img-doc` treatment. The grid diff --git a/src/assets/images/sector-rd-engineer.jpg b/src/assets/images/sector-rd-engineer.jpg new file mode 100644 index 0000000..23430b2 Binary files /dev/null and b/src/assets/images/sector-rd-engineer.jpg differ diff --git a/src/components/Header.astro b/src/components/Header.astro index 5c94cca..dbc65ef 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -7,7 +7,6 @@ const { lang, tone = 'paper' } = Astro.props; const ui = t(lang); const home = localePath(lang, '/'); const items = [ - { href: `${home}#capabilities`, label: ui.nav.capabilities }, { href: localePath(lang, '/cipherverifier'), label: ui.nav.product }, { href: localePath(lang, '/insights'), label: ui.nav.insights }, { href: localePath(lang, '/team'), label: ui.nav.team }, diff --git a/src/components/home/Proof.astro b/src/components/home/Partners.astro similarity index 75% rename from src/components/home/Proof.astro rename to src/components/home/Partners.astro index 0742ee7..04a244a 100644 --- a/src/components/home/Proof.astro +++ b/src/components/home/Partners.astro @@ -11,28 +11,18 @@ const ui = t(lang); /* The partner logos as on ciphercell.de (see PartnerLogo.astro for the two states). `h` balances optical size: the incubator wordmark is long and thin, the other two carry a mark. */ -const roles = ui.proof.partnerRoles; +const roles = ui.partners.roles; const logos = await Promise.all([ { name: 'xG-Incubator', role: roles.incubator, src: incubator, h: 'var(--space-5)' }, { name: 'xG-ALOE', role: roles.aloe, src: aloe, h: 'var(--space-7)' }, { name: lang === 'de' ? 'Universität Passau' : 'University of Passau', role: roles.passau, src: passau, h: 'var(--space-7)' }, ].map(async (l) => ({ ...l, url: (await getImage({ src: l.src, format: 'webp' })).src }))); --- -
+
-

{ui.proof.title}

-
    - {ui.proof.items.map((p) => ( -
  • -

    {p.name}

    -

    {p.body}

    -
  • - ))} -
- -
-

{ui.proof.partners}

-
    +
    +

    {ui.partners.title}

    +
      {logos.map((l) => (
    • @@ -48,18 +38,8 @@ const logos = await Promise.all([
diff --git a/src/data/team.ts b/src/data/team.ts index e82c085..53b93f1 100644 --- a/src/data/team.ts +++ b/src/data/team.ts @@ -8,7 +8,7 @@ import philipp from '../assets/images/people/philipp.png'; import karin from '../assets/images/people/karin.png'; import valentin from '../assets/images/people/valentin.png'; -export type RoleKey = 'ceo' | 'cto' | 'engineer' | 'bizdev' | 'studentF' | 'studentM'; +export type RoleKey = 'ceo' | 'cto' | 'engineer' | 'bizdev' | 'studentF' | 'studentM' | 'networkengineer'; export interface Person { name: string; @@ -20,7 +20,7 @@ export const team: Person[] = [ { name: 'Dr. Felix Klement', role: 'ceo', portrait: felix }, { name: 'Dr. Florian Frank', role: 'cto', portrait: florian }, { name: 'Alexander Braml', role: 'engineer', portrait: alexander }, - { name: 'Erik Foris', role: 'engineer', portrait: erik }, + { name: 'Erik Foris', role: 'networkengineer', portrait: erik }, { name: 'Marc Schlotzhauer', role: 'bizdev', portrait: marc }, { name: 'Philipp Mayr', role: 'engineer', portrait: philipp }, { name: 'Karin Kaufmann', role: 'studentF', portrait: karin }, diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts index 95e1d3f..ca7b486 100644 --- a/src/i18n/ui.ts +++ b/src/i18n/ui.ts @@ -39,7 +39,6 @@ const en = { }, nav: { skip: 'Skip to content', - capabilities: 'Capabilities', product: 'Product', sectors: 'Sectors', insights: 'Insights', @@ -54,7 +53,7 @@ const en = { }, manifesto: { lines: ['Security built in,', 'not bolted on.'], - p1: 'Infrastructure is software now. Private 5G networks, industrial control systems and cloud platforms are assembled from the code and components of many vendors, and every interface between them is an attack surface that off-the-shelf tools were never designed to cover.', + p1: 'Infrastructure is software now. Private 5G networks, industrial control systems, digital products and cloud platforms are assembled from the code and components of many vendors, and every interface between them is an attack surface that off-the-shelf tools were never designed to cover.', p2: 'CipherCell is a security engineering company built by specialists in networks and software. We take on the hard problems, whatever the vertical, and solve them with security at the core of every decision.', cta: 'About CipherCell', }, @@ -87,18 +86,13 @@ const en = { { title: 'Private 5G and campus networks', body: 'Software-defined networks with open interfaces and a multi-vendor supply chain. Our origin, and still the hardest case.', imageAlt: 'A private 5G antenna and radio cabinet on the parapet of a factory roof, cranes in the distance.' }, { title: 'Critical infrastructure', body: 'Control and network software where a breach stops production, damages equipment or endangers people.', imageAlt: 'An electrical substation seen straight from above: transformers, switchgear and a service road.' }, { title: 'Operational technology (OT)', body: 'Controllers, SCADA and the engineering software that configures them. Systems built to run for decades, often on protocols without authentication, and rarely patched.', imageAlt: 'Three operators in hard hats at their consoles in a plant control room, facing a wall-sized diagram of the process.' }, + { title: 'Products with digital elements', body: 'Devices, firmware and installable software sold in the EU. Under the Cyber Resilience Act, the manufacturer answers for their security for the whole support period.', imageAlt: 'An engineer at two monitors in a glass-walled development lab, engineering software on screen and a machined test part on the desk.' }, { title: 'Cloud-native systems', body: 'Containers, service meshes and CI/CD pipelines that carry infrastructure workloads. Security that runs as code, alongside yours.', imageAlt: 'A cold aisle between server racks in a data centre, a technician far in the distance.' }, ], }, - proof: { - title: 'Where we come from.', - items: [ - { name: 'University of Passau', body: 'Our method grew out of academic security research. The university remains our research partner.' }, - { name: 'xG-ALOE alliance and xG-Incubator', body: 'Partners in the alliance for open enterprise networks, from lab to deployment.' }, - { name: 'Federal Ministry of Research, Technology and Space', body: 'Our work is publicly funded.' }, - ], - partners: 'Trusted by and working with', - partnerRoles: { incubator: 'Incubator', aloe: 'Alliance for open enterprise networks', passau: 'Research partner' }, + partners: { + title: 'Trusted by and working with', + roles: { incubator: 'Incubator', aloe: 'Alliance for open enterprise networks', passau: 'Research partner' }, }, quote: { label: 'Statements from the founders', @@ -334,6 +328,7 @@ const en = { ceo: 'Founder and CEO', cto: 'Founder and CTO', engineer: 'Software Engineer', + networkengineer: 'Network & Infrastructure Engineer', bizdev: 'Business Development', studentF: 'Mathematical Engineer', studentM: 'Process Optimization & Automation', @@ -385,7 +380,6 @@ const de: typeof en = { }, nav: { skip: 'Zum Inhalt springen', - capabilities: 'Leistungen', product: 'Produkt', sectors: 'Einsatzfelder', insights: 'Einblicke', @@ -400,7 +394,7 @@ const de: typeof en = { }, manifesto: { lines: ['Sicherheit eingebaut,', 'nicht nachträglich angefügt.'], - p1: 'Infrastruktur ist heute Software. Private 5G-Netze, industrielle Steuerungssysteme und Cloud-Plattformen setzen sich aus Code und Komponenten vieler Hersteller zusammen und jede Schnittstelle dazwischen ist eine Angriffsfläche, für die Lösungen von der Stange nie gedacht waren.', + p1: 'Infrastruktur ist heute Software. Private 5G-Netze, industrielle Steuerungssysteme, digitale Produkte und Cloud-Plattformen setzen sich aus Code und Komponenten vieler Hersteller zusammen und jede Schnittstelle dazwischen ist eine Angriffsfläche, für die Lösungen von der Stange nie gedacht waren.', p2: 'CipherCell ist ein Security-Engineering-Unternehmen von Spezialisten für Netzwerke und Software. Wir packen die schwierigen Probleme an, ganz gleich in welcher Branche, und machen Sicherheit zum Kern jeder Entscheidung.', cta: 'Über CipherCell', }, @@ -433,18 +427,13 @@ const de: typeof en = { { title: 'Private 5G- und Campusnetze', body: 'Softwaredefinierte Netze mit offenen Schnittstellen und einer Lieferkette aus vielen Herstellern. Unser Ursprung, und noch immer der schwerste Fall.', imageAlt: 'Eine private 5G-Antenne mit Funkschrank auf der Attika eines Fabrikdachs, Kräne im Hintergrund.' }, { title: 'Kritische Infrastruktur', body: 'Steuerungs- und Netzsoftware, bei der ein Einbruch die Produktion stoppt, Anlagen beschädigt oder Menschen gefährdet.', imageAlt: 'Ein Umspannwerk senkrecht von oben: Transformatoren, Schaltanlagen und eine Zufahrt.' }, { title: 'Operational Technology (OT)', body: 'Steuerungen, SCADA und die Engineering-Software, mit der sie konfiguriert werden. Anlagen, die Jahrzehnte laufen, oft über Protokolle ohne Authentisierung, und selten Updates erhalten.', imageAlt: 'Drei Bediener mit Schutzhelm an ihren Pulten in der Leitwarte eines Werks, vor einem wandgroßen Schema der Anlage.' }, + { title: 'Produkte mit digitalen Elementen', body: 'Geräte, Firmware und installierbare Software, die in der EU verkauft werden. Nach dem Cyber Resilience Act steht der Hersteller über den gesamten Supportzeitraum für ihre Sicherheit ein.', imageAlt: 'Ein Ingenieur an zwei Monitoren in einem verglasten Entwicklungslabor, Engineering-Software auf dem Bildschirm und ein gefrästes Testteil auf dem Tisch.' }, { title: 'Cloud-native Systeme', body: 'Container, Service Meshes und CI/CD-Pipelines, die Infrastruktur tragen. Sicherheit als Code, neben Ihrem.', imageAlt: 'Ein Kaltgang zwischen Serverschränken in einem Rechenzentrum, ein Techniker weit hinten.' }, ], }, - proof: { - title: 'Woher wir kommen.', - items: [ - { name: 'Universität Passau', body: 'Unsere Methode ist aus akademischer Sicherheitsforschung entstanden. Die Universität bleibt unser Forschungspartner.' }, - { name: 'xG-ALOE-Allianz und xG-Incubator', body: 'Partner in der Allianz für offene Unternehmensnetze, vom Labor bis zum Betrieb.' }, - { name: 'Bundesministerium für Forschung, Technologie und Raumfahrt', body: 'Unsere Arbeit wird öffentlich gefördert.' }, - ], - partners: 'Vertrauen und Zusammenarbeit', - partnerRoles: { incubator: 'Inkubator', aloe: 'Allianz für offene Unternehmensnetze', passau: 'Forschungspartner' }, + partners: { + title: 'Vertrauen und Zusammenarbeit', + roles: { incubator: 'Inkubator', aloe: 'Allianz für offene Unternehmensnetze', passau: 'Forschungspartner' }, }, quote: { label: 'Aussagen der Gründer', @@ -680,6 +669,7 @@ const de: typeof en = { ceo: 'Gründer und CEO', cto: 'Gründer und CTO', engineer: 'Software Engineer', + networkengineer: 'Network & Infrastructure Engineer', bizdev: 'Business Development', studentF: 'Mathematical Engineer', studentM: 'Process Optimization & Automation', diff --git a/src/pages/_Home.astro b/src/pages/_Home.astro index e27bd59..100f70d 100644 --- a/src/pages/_Home.astro +++ b/src/pages/_Home.astro @@ -5,7 +5,7 @@ import Manifesto from '../components/home/Manifesto.astro'; import Method from '../components/home/Method.astro'; import Stages from '../components/home/Stages.astro'; import Sectors from '../components/home/Sectors.astro'; -import Proof from '../components/home/Proof.astro'; +import Partners from '../components/home/Partners.astro'; import Quote from '../components/home/Quote.astro'; import Insights from '../components/home/Insights.astro'; import Contact from '../components/home/Contact.astro'; @@ -21,7 +21,7 @@ const ui = t(lang); - +