Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .cspell.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ words:
- fouc
- frontends
- frontmatter
- funder
- futureproof
- gallego
- ghisi
Expand Down
72 changes: 72 additions & 0 deletions src/lib/structured-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/**
* schema.org nodes shared by the pages that emit JSON-LD, so the home and
* About pages describe the company identically.
*/

const siteUrl = 'https://shorebird.dev/';

export const founder = {
'@type': 'Person',
'@id': `${siteUrl}#eric-seidel`,
name: 'Eric Seidel',
jobTitle: 'CEO and Founder',
description: 'Creator of Flutter.',
sameAs: ['https://www.linkedin.com/in/ericseidel/'],
};

export const organization = {
'@type': 'Organization',
'@id': `${siteUrl}#organization`,
name: 'Shorebird',
url: siteUrl,
logo: {
'@type': 'ImageObject',
url: `${siteUrl}shorebird-logo-wordmark.png`,
width: 2568,
height: 560,
},
description:
'Shorebird builds developer tools for Flutter teams. Its flagship service, Code Push, delivers over-the-air Dart updates to released Flutter apps without waiting for app store review.',
foundingDate: '2023',
founder,
funder: {
'@type': 'Organization',
name: 'Accel',
url: 'https://www.accel.com/',
},
sameAs: [
'https://github.com/shorebirdtech',
'https://www.linkedin.com/company/shorebirddev/',
'https://discord.gg/shorebird',
],
contactPoint: [
{
'@type': 'ContactPoint',
contactType: 'sales',
url: `${siteUrl}pricing`,
},
{
'@type': 'ContactPoint',
contactType: 'technical support',
url: 'https://discord.gg/shorebird',
},
],
legalName: 'Code Town Inc',
address: {
'@type': 'PostalAddress',
streetAddress: '2261 Market Street #5112',
addressLocality: 'San Francisco',
addressRegion: 'CA',
postalCode: '94114-1612',
addressCountry: 'US',
},
};

export const website = {
'@type': 'WebSite',
'@id': `${siteUrl}#website`,
url: siteUrl,
name: 'Shorebird',
publisher: { '@id': `${siteUrl}#organization` },
inLanguage: 'en-US',
};
28 changes: 27 additions & 1 deletion src/pages/about.astro
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import Section from '@/components/ui/section.astro';
import accelLogo from '@/assets/about/accel.webp';
import heroLogos from '@/assets/about/hero-logos.svg';
import teamData from '@/data/team.json';
import { organization, website } from '@/lib/structured-data';

/**
* Team grid (Webflow `.c_team--cms_list`): `src/data/team.json` is the
Expand All @@ -25,6 +26,23 @@ const team = teamData
if (!image) throw new Error(`Headshot ${member.headshot} not found`);
return { ...member, image: image.default };
});

const structuredData = {
'@context': 'https://schema.org',
'@graph': [
{
'@type': 'AboutPage',
'@id': 'https://shorebird.dev/about#webpage',
url: 'https://shorebird.dev/about',
name: 'About Shorebird',
isPartOf: { '@id': website['@id'] },
about: { '@id': organization['@id'] },
},
organization,
website,
],
};

/** Webflow `.social_icn` LinkedIn glyph (14x14). */
const linkedinIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.17852 14V4.55374H0.177409V14H3.17852ZM1.67795 3.26401C2.7245 3.26401 3.37589 2.53864 3.37589 1.63214C3.35639 0.705241 2.7245 4.89563e-07 1.69781 4.89563e-07C0.671215 4.89563e-07 0 0.705241 0 1.63214C0 2.53864 0.65125 3.26401 1.65839 3.26401H1.67795Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M4.83936 14H7.84044V8.72481C7.84044 8.44249 7.85994 8.16045 7.93919 7.95863C8.15614 7.39455 8.64995 6.81034 9.47901 6.81034C10.565 6.81034 10.9994 7.67659 10.9994 8.94647V14H14.0002V8.58365C14.0002 5.68218 12.5196 4.33208 10.5451 4.33208C8.92613 4.33208 8.21537 5.27883 7.82048 5.92369H7.84052V4.55374H4.83944C4.87882 5.44011 4.83936 14 4.83936 14Z" fill="currentColor"/></svg>`;
---
Expand All @@ -33,6 +51,13 @@ const linkedinIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="100%" heigh
title="About Shorebird | Building Better Tools for Flutter"
description="Founded by Eric Seidel, creator of Flutter, Shorebird helps developers ship apps faster with secure Code Push and modern CI for Flutter."
>
<Fragment slot="head">
<script
is:inline
type="application/ld+json"
set:html={JSON.stringify(structuredData)}
/>
</Fragment>
<Navbar client:load initialTheme="dark" />

{/* Hero (Webflow `header.g_page--section` + `.c_hero--about--logos`). */}
Expand Down Expand Up @@ -69,7 +94,8 @@ const linkedinIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="100%" heigh
<p class="body-m">
We care about making portable development the default and creating a
rich and robust Flutter ecosystem. Our flagship service, Code Push,
enables instant app updates without app store delays.
enables instant app updates without app store delays, and Shorebird CI
brings zero-config continuous integration to Flutter and Dart.
</p>
</div>
</div>
Expand Down
59 changes: 2 additions & 57 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -12,66 +12,11 @@ import Platform from '@/components/home/platform.astro';
import Resources from '@/components/home/resources.astro';
import Security from '@/components/home/security.astro';
import Testimonials from '@/components/home/testimonials.astro';
import { organization, website } from '@/lib/structured-data';

const structuredData = {
'@context': 'https://schema.org',
'@graph': [
{
'@type': 'Organization',
'@id': 'https://shorebird.dev/#organization',
name: 'Shorebird',
url: 'https://shorebird.dev/',
logo: {
'@type': 'ImageObject',
url: 'https://shorebird.dev/shorebird-logo-wordmark.png',
width: 2568,
height: 560,
},
description:
'Shorebird builds developer tools for Flutter teams. Its flagship service, Code Push, delivers over-the-air Dart updates to released Flutter apps without waiting for app store review.',
foundingDate: '2023',
founder: {
'@type': 'Person',
name: 'Eric Seidel',
jobTitle: 'CEO and Founder',
description: 'Creator of Flutter.',
},
sameAs: [
'https://github.com/shorebirdtech',
'https://www.linkedin.com/company/shorebirddev/',
'https://discord.gg/shorebird',
],
contactPoint: [
{
'@type': 'ContactPoint',
contactType: 'sales',
url: 'https://shorebird.dev/pricing',
},
{
'@type': 'ContactPoint',
contactType: 'technical support',
url: 'https://discord.gg/shorebird',
},
],
legalName: 'Code Town Inc',
address: {
'@type': 'PostalAddress',
streetAddress: '2261 Market Street #5112',
addressLocality: 'San Francisco',
addressRegion: 'CA',
postalCode: '94114-1612',
addressCountry: 'US',
},
},
{
'@type': 'WebSite',
'@id': 'https://shorebird.dev/#website',
url: 'https://shorebird.dev/',
name: 'Shorebird',
publisher: { '@id': 'https://shorebird.dev/#organization' },
inLanguage: 'en-US',
},
],
'@graph': [organization, website],
};
---

Expand Down
Loading