History

Add fresh Google Workspace homepage (#1638)

Rhys Sullivan committed 2 months ago

Commit 7f5151e1 parent ffb28cc3 files · +195 −0Browse files

Unified · Split

3 files
  1. apps/cloud/src/edge/marketing.test.ts +1 −0
  2. apps/cloud/src/edge/marketing.ts +1 −0
  3. apps/marketing/src/pages/google-workspace.astro +193 −0
apps/cloud/src/edge/marketing.test.ts+1−0
@@ -13,6 +13,7 @@ describe("isMarketingPath", () => { · 12 unmodified lines
13 "/privacy",13 "/privacy",
14 "/terms",14 "/terms",
15 "/google-oauth",15 "/google-oauth",
16 "/google-workspace",
16 "/blog",17 "/blog",
17 "/blog/",18 "/blog/",
18 "/blog/some-post",19 "/blog/some-post",
apps/cloud/src/edge/marketing.ts+1−0
@@ -15,6 +15,7 @@ const MARKETING_PATHS = [ · 14 unmodified lines
15 "/privacy",15 "/privacy",
16 "/terms",16 "/terms",
17 "/google-oauth",17 "/google-oauth",
18 "/google-workspace",
18 "/blog",19 "/blog",
19 "/llms.txt",20 "/llms.txt",
20 "/api/detect",21 "/api/detect",
apps/marketing/src/pages/google-workspace.astro+193−0
@@ -0,0 +1,193 @@
1---
2const services = [
3 {
4 name: "Google Calendar",
5 description:
6 "Read calendars and events, and create, update, or remove events when you ask an agent to manage your schedule.",
7 },
8 {
9 name: "Gmail",
10 description:
11 "Read, search, compose, send, label, archive, or move messages to trash when you ask an agent to work with your email.",
12 },
13 {
14 name: "Google Sheets",
15 description:
16 "Read spreadsheet data and update cells, ranges, or worksheets when you ask an agent to work with a spreadsheet.",
17 },
18] as const;
19---
20
21<!doctype html>
22<html lang="en">
23 <head>
24 <meta charset="UTF-8" />
25 <meta name="viewport" content="width=device-width" />
26 <meta name="robots" content="index, follow" />
27 <meta
28 name="description"
29 content="Executor connects AI agents to Google Calendar, Gmail, and Google Sheets with your permission."
30 />
31 <link rel="canonical" href="https://executor.sh/google-workspace" />
32 <title>Executor</title>
33 <style>
34 :root {
35 color-scheme: light;
36 font-family:
37 Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
38 color: #161616;
39 background: #f7f6f1;
40 }
41
42 * {
43 box-sizing: border-box;
44 }
45
46 body {
47 margin: 0;
48 line-height: 1.6;
49 }
50
51 a {
52 color: #174ea6;
53 }
54
55 header,
56 main,
57 footer {
58 width: min(760px, calc(100% - 40px));
59 margin-inline: auto;
60 }
61
62 header {
63 padding: 72px 0 38px;
64 border-bottom: 1px solid #d8d6cd;
65 }
66
67 .brand {
68 margin: 0 0 24px;
69 font-size: 15px;
70 font-weight: 700;
71 letter-spacing: 0.04em;
72 text-transform: uppercase;
73 }
74
75 h1 {
76 margin: 0;
77 font-size: clamp(48px, 10vw, 76px);
78 line-height: 1;
79 letter-spacing: -0.055em;
80 }
81
82 .purpose {
83 max-width: 680px;
84 margin: 28px 0 0;
85 font-size: 20px;
86 line-height: 1.55;
87 }
88
89 section {
90 padding: 42px 0;
91 border-bottom: 1px solid #d8d6cd;
92 }
93
94 h2 {
95 margin: 0 0 16px;
96 font-size: 25px;
97 letter-spacing: -0.025em;
98 }
99
100 h3 {
101 margin: 0 0 5px;
102 font-size: 18px;
103 }
104
105 p {
106 margin: 0 0 18px;
107 }
108
109 ul {
110 display: grid;
111 gap: 22px;
112 margin: 26px 0 0;
113 padding: 0;
114 list-style: none;
115 }
116
117 li p {
118 margin: 0;
119 }
120
121 footer {
122 display: flex;
123 flex-wrap: wrap;
124 justify-content: space-between;
125 gap: 16px;
126 padding: 30px 0 64px;
127 font-size: 14px;
128 }
129 </style>
130 </head>
131 <body>
132 <header>
133 <p class="brand">Useful Software Company</p>
134 <h1>Executor</h1>
135 <p class="purpose">
136 Executor is an integration platform and MCP gateway for AI agents. Executor lets you
137 securely connect Google Calendar, Gmail, and Google Sheets so an agent can read your
138 Google data and take only the actions you request.
139 </p>
140 </header>
141
142 <main>
143 <section aria-labelledby="purpose-heading">
144 <h2 id="purpose-heading">Why Executor requests access to Google data</h2>
145 <p>
146 You choose which Google service to connect. Executor requests the permissions needed
147 to provide that connection and uses the resulting Google data to carry out your
148 instructions. Connecting Google does not give Executor permission to act on its own.
149 </p>
150 <ul>
151 {
152 services.map((service) => (
153 <li>
154 <h3>{service.name}</h3>
155 <p>{service.description}</p>
156 </li>
157 ))
158 }
159 </ul>
160 </section>
161
162 <section aria-labelledby="control-heading">
163 <h2 id="control-heading">You control the connection</h2>
164 <p>
165 Executor exposes specific Google actions and their inputs. You can allow an action,
166 require approval, or block it through the policies you configure in Executor. You can
167 remove a connection in Executor or revoke it from your
168 <a href="https://myaccount.google.com/permissions">Google Account permissions</a>.
169 </p>
170 </section>
171
172 <section aria-labelledby="privacy-heading">
173 <h2 id="privacy-heading">Privacy and Google API data</h2>
174 <p>
175 Executor does not sell Google user data. Executor uses Google data only to provide and
176 improve the user-facing integration features you request, as described in the
177 <a href="https://executor.sh/privacy">Executor Privacy Policy</a>.
178 </p>
179 <p>
180 Executor's use and transfer of information received from Google APIs adheres to the
181 <a href="https://developers.google.com/terms/api-services-user-data-policy"
182 >Google API Services User Data Policy</a
183 >, including the Limited Use requirements.
184 </p>
185 </section>
186 </main>
187
188 <footer>
189 <span>Executor · Useful Software Company</span>
190 <span><a href="https://executor.sh/privacy">Privacy Policy</a> · <a href="https://executor.sh/terms">Terms of Service</a></span>
191 </footer>
192 </body>
193</html>