@@ -20,13 +20,121 @@ export default defineConfig({
2020 [ "meta" , { name : "google-site-verification" , content : "u6ZPW5bWbP9G1yF5Sv7B4fSOJm5rLbZWeH858tmisTc" } ] ,
2121 [ "link" , { rel : "icon" , type : "image/svg+xml" , href : "/favicon.svg" } ] ,
2222 [ "link" , { rel : "apple-touch-icon" , sizes : "180x180" , href : "/apple-touch-icon.png" } ] ,
23+ [ "meta" , { name : "author" , content : "Benoit Travers" } ] ,
24+ [ "meta" , { name : "robots" , content : "index, follow" } ] ,
25+ [
26+ "meta" ,
27+ {
28+ name : "keywords" ,
29+ content :
30+ "TypeScript, backend, Node.js, type-safe, contracts, AMQP, RabbitMQ, Temporal, workflows, errors as values, Result, schema validation, amqp-contract, temporal-contract, unthrown" ,
31+ } ,
32+ ] ,
33+
34+ // Open Graph
2335 [ "meta" , { property : "og:type" , content : "website" } ] ,
36+ [ "meta" , { property : "og:site_name" , content : SITE_TITLE } ] ,
37+ [ "meta" , { property : "og:locale" , content : "en_US" } ] ,
2438 [ "meta" , { property : "og:title" , content : `${ SITE_TITLE } — an expressive, robust TypeScript backend` } ] ,
2539 [ "meta" , { property : "og:description" , content : SITE_DESCRIPTION } ] ,
2640 [ "meta" , { property : "og:url" , content : `${ SITE_URL } /` } ] ,
2741 [ "meta" , { property : "og:image" , content : `${ SITE_URL } /og-btravstack.png` } ] ,
42+ [ "meta" , { property : "og:image:type" , content : "image/png" } ] ,
43+ [ "meta" , { property : "og:image:width" , content : "1280" } ] ,
44+ [ "meta" , { property : "og:image:height" , content : "640" } ] ,
45+ [
46+ "meta" ,
47+ {
48+ property : "og:image:alt" ,
49+ content : "btravstack — type-safe building blocks for the TypeScript backend" ,
50+ } ,
51+ ] ,
52+
53+ // Twitter Card
2854 [ "meta" , { name : "twitter:card" , content : "summary_large_image" } ] ,
55+ [ "meta" , { name : "twitter:title" , content : `${ SITE_TITLE } — an expressive, robust TypeScript backend` } ] ,
56+ [ "meta" , { name : "twitter:description" , content : SITE_DESCRIPTION } ] ,
2957 [ "meta" , { name : "twitter:image" , content : `${ SITE_URL } /og-btravstack.png` } ] ,
58+ [
59+ "meta" ,
60+ {
61+ name : "twitter:image:alt" ,
62+ content : "btravstack — type-safe building blocks for the TypeScript backend" ,
63+ } ,
64+ ] ,
65+
66+ // JSON-LD: the org, the site, and the three packages it publishes
67+ [
68+ "script" ,
69+ { type : "application/ld+json" } ,
70+ JSON . stringify ( {
71+ "@context" : "https://schema.org" ,
72+ "@type" : "Organization" ,
73+ name : SITE_TITLE ,
74+ url : `${ SITE_URL } /` ,
75+ logo : { "@type" : "ImageObject" , url : `${ SITE_URL } /logos/btravstack-dark.svg` } ,
76+ description : SITE_DESCRIPTION ,
77+ sameAs : [ "https://github.com/btravstack" , "https://www.npmjs.com/~btravers" ] ,
78+ } ) ,
79+ ] ,
80+ [
81+ "script" ,
82+ { type : "application/ld+json" } ,
83+ JSON . stringify ( {
84+ "@context" : "https://schema.org" ,
85+ "@type" : "WebSite" ,
86+ name : SITE_TITLE ,
87+ url : `${ SITE_URL } /` ,
88+ description : SITE_DESCRIPTION ,
89+ } ) ,
90+ ] ,
91+ [
92+ "script" ,
93+ { type : "application/ld+json" } ,
94+ JSON . stringify ( {
95+ "@context" : "https://schema.org" ,
96+ "@type" : "ItemList" ,
97+ name : "btravstack packages" ,
98+ itemListElement : [
99+ {
100+ "@type" : "ListItem" ,
101+ position : 1 ,
102+ item : {
103+ "@type" : "SoftwareApplication" ,
104+ name : "amqp-contract" ,
105+ applicationCategory : "DeveloperApplication" ,
106+ operatingSystem : "Cross-platform" ,
107+ url : "https://btravstack.github.io/amqp-contract/" ,
108+ description : "Type-safe contracts for AMQP & RabbitMQ." ,
109+ } ,
110+ } ,
111+ {
112+ "@type" : "ListItem" ,
113+ position : 2 ,
114+ item : {
115+ "@type" : "SoftwareApplication" ,
116+ name : "temporal-contract" ,
117+ applicationCategory : "DeveloperApplication" ,
118+ operatingSystem : "Cross-platform" ,
119+ url : "https://btravstack.github.io/temporal-contract/" ,
120+ description : "Type-safe contracts for Temporal.io." ,
121+ } ,
122+ } ,
123+ {
124+ "@type" : "ListItem" ,
125+ position : 3 ,
126+ item : {
127+ "@type" : "SoftwareApplication" ,
128+ name : "unthrown" ,
129+ applicationCategory : "DeveloperApplication" ,
130+ operatingSystem : "Cross-platform" ,
131+ url : "https://btravstack.github.io/unthrown/" ,
132+ description : "Explicit errors as values, for TypeScript." ,
133+ } ,
134+ } ,
135+ ] ,
136+ } ) ,
137+ ] ,
30138 ] ,
31139
32140 themeConfig : {
0 commit comments