tangled
alpha
login
or
join now
jaspermayone.com
/
website
Personal Website for @jaspermayone.com
jaspermayone.com
0
fork
atom
overview
issues
pulls
pipelines
switch canonical domain from www to non-www
jaspermayone.com
1 month ago
2109bf11
aa2623a5
+195
-195
24 changed files
expand all
collapse all
unified
split
next-sitemap.config.js
public
robots.txt
sitemap.xml
sitemap_index.xml
src
app
(home)
layout.tsx
blank
page.tsx
colophon
page.tsx
concerts
page.tsx
contact
page.tsx
elsewhere
page.tsx
green
page.tsx
keys
[key]
page.tsx
layout.tsx
now
page.tsx
open-source
page.tsx
panera
page.tsx
pfp
page.tsx
podroll
page.tsx
portfolio
page.tsx
robots.ts
slashes
page.tsx
to
page.tsx
uses
page.tsx
verify
page.tsx
+1
-1
next-sitemap.config.js
···
1
1
/** @type {import('next-sitemap').IConfig} */
2
2
module.exports = {
3
3
-
siteUrl: process.env.SITE_URL || "https://www.jaspermayone.com",
3
3
+
siteUrl: process.env.SITE_URL || "https://jaspermayone.com",
4
4
generateRobotsTxt: false, // Using Next.js native robots.ts instead
5
5
generateIndexSitemap: true,
6
6
exclude: ["/icon.png", "/robots.txt", "/blank", "/api/*"],
+2
-2
public/robots.txt
···
3
3
Allow: /
4
4
5
5
# Host
6
6
-
Host: https://www.jaspermayone.com
6
6
+
Host: https://jaspermayone.com
7
7
8
8
# Sitemaps
9
9
-
Sitemap: https://www.jaspermayone.com/sitemap.xml
9
9
+
Sitemap: https://jaspermayone.com/sitemap.xml
+16
-16
public/sitemap.xml
···
1
1
<?xml version="1.0" encoding="UTF-8"?>
2
2
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
3
3
-
<url><loc>https://www.jaspermayone.com</loc><lastmod>2025-12-02T01:54:21.434Z</lastmod><changefreq>weekly</changefreq><priority>1</priority></url>
4
4
-
<url><loc>https://www.jaspermayone.com/colophon</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
5
5
-
<url><loc>https://www.jaspermayone.com/concerts</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
6
6
-
<url><loc>https://www.jaspermayone.com/contact</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>1</priority></url>
7
7
-
<url><loc>https://www.jaspermayone.com/elsewhere</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
8
8
-
<url><loc>https://www.jaspermayone.com/green</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
9
9
-
<url><loc>https://www.jaspermayone.com/keys/gpg</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
10
10
-
<url><loc>https://www.jaspermayone.com/keys/ssh</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
11
11
-
<url><loc>https://www.jaspermayone.com/now</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
12
12
-
<url><loc>https://www.jaspermayone.com/panera</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
13
13
-
<url><loc>https://www.jaspermayone.com/pfp</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
14
14
-
<url><loc>https://www.jaspermayone.com/podroll</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
15
15
-
<url><loc>https://www.jaspermayone.com/portfolio</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>1</priority></url>
16
16
-
<url><loc>https://www.jaspermayone.com/to</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
17
17
-
<url><loc>https://www.jaspermayone.com/uses</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
18
18
-
<url><loc>https://www.jaspermayone.com/verify</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
3
3
+
<url><loc>https://jaspermayone.com</loc><lastmod>2025-12-02T01:54:21.434Z</lastmod><changefreq>weekly</changefreq><priority>1</priority></url>
4
4
+
<url><loc>https://jaspermayone.com/colophon</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
5
5
+
<url><loc>https://jaspermayone.com/concerts</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
6
6
+
<url><loc>https://jaspermayone.com/contact</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>1</priority></url>
7
7
+
<url><loc>https://jaspermayone.com/elsewhere</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
8
8
+
<url><loc>https://jaspermayone.com/green</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
9
9
+
<url><loc>https://jaspermayone.com/keys/gpg</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
10
10
+
<url><loc>https://jaspermayone.com/keys/ssh</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
11
11
+
<url><loc>https://jaspermayone.com/now</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
12
12
+
<url><loc>https://jaspermayone.com/panera</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
13
13
+
<url><loc>https://jaspermayone.com/pfp</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
14
14
+
<url><loc>https://jaspermayone.com/podroll</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
15
15
+
<url><loc>https://jaspermayone.com/portfolio</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>1</priority></url>
16
16
+
<url><loc>https://jaspermayone.com/to</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
17
17
+
<url><loc>https://jaspermayone.com/uses</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>weekly</changefreq><priority>0.7</priority></url>
18
18
+
<url><loc>https://jaspermayone.com/verify</loc><lastmod>2025-12-02T01:54:21.435Z</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
19
19
</urlset>
+1
-1
public/sitemap_index.xml
···
1
1
<?xml version="1.0" encoding="UTF-8"?>
2
2
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
3
-
<sitemap><loc>https://www.jaspermayone.com/sitemap.xml</loc></sitemap>
3
3
+
<sitemap><loc>https://jaspermayone.com/sitemap.xml</loc></sitemap>
4
4
</sitemapindex>
+1
-1
src/app/(home)/layout.tsx
···
2
2
3
3
export const metadata: Metadata = {
4
4
alternates: {
5
5
-
canonical: "https://www.jaspermayone.com",
5
5
+
canonical: "https://jaspermayone.com",
6
6
},
7
7
};
8
8
+8
-8
src/app/blank/page.tsx
···
5
5
title: "Blank",
6
6
description: "A page intentionally left blank",
7
7
alternates: {
8
8
-
canonical: "https://www.jaspermayone.com/blank",
8
8
+
canonical: "https://jaspermayone.com/blank",
9
9
},
10
10
};
11
11
···
14
14
"@graph": [
15
15
{
16
16
"@type": "WebPage",
17
17
-
"@id": "https://www.jaspermayone.com/blank#webpage",
18
18
-
url: "https://www.jaspermayone.com/blank",
17
17
+
"@id": "https://jaspermayone.com/blank#webpage",
18
18
+
url: "https://jaspermayone.com/blank",
19
19
name: "Blank Page - Jasper Mayone",
20
20
description: "A page intentionally left blank",
21
21
isPartOf: {
22
22
-
"@id": "https://www.jaspermayone.com/#website",
22
22
+
"@id": "https://jaspermayone.com/#website",
23
23
},
24
24
about: {
25
25
-
"@id": "https://www.jaspermayone.com/#person",
25
25
+
"@id": "https://jaspermayone.com/#person",
26
26
},
27
27
breadcrumb: {
28
28
"@type": "BreadcrumbList",
29
29
-
"@id": "https://www.jaspermayone.com/blank#breadcrumb",
29
29
+
"@id": "https://jaspermayone.com/blank#breadcrumb",
30
30
itemListElement: [
31
31
{
32
32
"@type": "ListItem",
33
33
position: 1,
34
34
name: "Home",
35
35
-
item: "https://www.jaspermayone.com",
35
35
+
item: "https://jaspermayone.com",
36
36
},
37
37
{
38
38
"@type": "ListItem",
39
39
position: 2,
40
40
name: "Blank",
41
41
-
item: "https://www.jaspermayone.com/blank",
41
41
+
item: "https://jaspermayone.com/blank",
42
42
},
43
43
],
44
44
},
+11
-11
src/app/colophon/page.tsx
···
9
9
description:
10
10
"A comprehensive look at the evolution, tools, and technologies that power this website.",
11
11
alternates: {
12
12
-
canonical: "https://www.jaspermayone.com/colophon",
12
12
+
canonical: "https://jaspermayone.com/colophon",
13
13
},
14
14
};
15
15
···
73
73
"@graph": [
74
74
{
75
75
"@type": "WebPage",
76
76
-
"@id": "https://www.jaspermayone.com/colophon#webpage",
77
77
-
url: "https://www.jaspermayone.com/colophon",
76
76
+
"@id": "https://jaspermayone.com/colophon#webpage",
77
77
+
url: "https://jaspermayone.com/colophon",
78
78
name: "Colophon - Jasper Mayone",
79
79
description:
80
80
"A comprehensive look at the evolution, tools, and technologies that power this website.",
81
81
isPartOf: {
82
82
-
"@id": "https://www.jaspermayone.com/#website",
82
82
+
"@id": "https://jaspermayone.com/#website",
83
83
},
84
84
about: {
85
85
-
"@id": "https://www.jaspermayone.com/#person",
85
85
+
"@id": "https://jaspermayone.com/#person",
86
86
},
87
87
mainEntity: {
88
88
-
"@id": "https://www.jaspermayone.com/colophon#tech-stack",
88
88
+
"@id": "https://jaspermayone.com/colophon#tech-stack",
89
89
},
90
90
breadcrumb: {
91
91
"@type": "BreadcrumbList",
92
92
-
"@id": "https://www.jaspermayone.com/colophon#breadcrumb",
92
92
+
"@id": "https://jaspermayone.com/colophon#breadcrumb",
93
93
itemListElement: [
94
94
{
95
95
"@type": "ListItem",
96
96
position: 1,
97
97
name: "Home",
98
98
-
item: "https://www.jaspermayone.com",
98
98
+
item: "https://jaspermayone.com",
99
99
},
100
100
{
101
101
"@type": "ListItem",
102
102
position: 2,
103
103
name: "Colophon",
104
104
-
item: "https://www.jaspermayone.com/colophon",
104
104
+
item: "https://jaspermayone.com/colophon",
105
105
},
106
106
],
107
107
},
108
108
},
109
109
{
110
110
"@type": "ItemList",
111
111
-
"@id": "https://www.jaspermayone.com/colophon#tech-stack",
111
111
+
"@id": "https://jaspermayone.com/colophon#tech-stack",
112
112
name: "Website Technology Stack",
113
113
description: "Technologies and frameworks powering jaspermayone.com",
114
114
numberOfItems: techStack.length,
···
126
126
},
127
127
{
128
128
"@type": "ItemList",
129
129
-
"@id": "https://www.jaspermayone.com/colophon#dev-tools",
129
129
+
"@id": "https://jaspermayone.com/colophon#dev-tools",
130
130
name: "Development Tools",
131
131
description: "Tools used for developing jaspermayone.com",
132
132
numberOfItems: devTools.length,
+10
-10
src/app/concerts/page.tsx
···
10
10
description:
11
11
"A chronological list of concerts and live performances attended by Jasper Mayone.",
12
12
alternates: {
13
13
-
canonical: "https://www.jaspermayone.com/concerts",
13
13
+
canonical: "https://jaspermayone.com/concerts",
14
14
},
15
15
};
16
16
···
27
27
"@graph": [
28
28
{
29
29
"@type": "WebPage",
30
30
-
"@id": "https://www.jaspermayone.com/concerts#webpage",
31
31
-
url: "https://www.jaspermayone.com/concerts",
30
30
+
"@id": "https://jaspermayone.com/concerts#webpage",
31
31
+
url: "https://jaspermayone.com/concerts",
32
32
name: "Concerts - Jasper Mayone",
33
33
description:
34
34
"A chronological list of concerts and live performances attended by Jasper Mayone.",
35
35
isPartOf: {
36
36
-
"@id": "https://www.jaspermayone.com/#website",
36
36
+
"@id": "https://jaspermayone.com/#website",
37
37
},
38
38
about: {
39
39
-
"@id": "https://www.jaspermayone.com/#person",
39
39
+
"@id": "https://jaspermayone.com/#person",
40
40
},
41
41
mainEntity: {
42
42
-
"@id": "https://www.jaspermayone.com/concerts#concert-list",
42
42
+
"@id": "https://jaspermayone.com/concerts#concert-list",
43
43
},
44
44
breadcrumb: {
45
45
"@type": "BreadcrumbList",
46
46
-
"@id": "https://www.jaspermayone.com/concerts#breadcrumb",
46
46
+
"@id": "https://jaspermayone.com/concerts#breadcrumb",
47
47
itemListElement: [
48
48
{
49
49
"@type": "ListItem",
50
50
position: 1,
51
51
name: "Home",
52
52
-
item: "https://www.jaspermayone.com",
52
52
+
item: "https://jaspermayone.com",
53
53
},
54
54
{
55
55
"@type": "ListItem",
56
56
position: 2,
57
57
name: "Concerts",
58
58
-
item: "https://www.jaspermayone.com/concerts",
58
58
+
item: "https://jaspermayone.com/concerts",
59
59
},
60
60
],
61
61
},
62
62
},
63
63
{
64
64
"@type": "ItemList",
65
65
-
"@id": "https://www.jaspermayone.com/concerts#concert-list",
65
65
+
"@id": "https://jaspermayone.com/concerts#concert-list",
66
66
name: "Concerts Attended by Jasper Mayone",
67
67
description:
68
68
"A chronological list of live music performances attended by Jasper Mayone",
+7
-7
src/app/contact/page.tsx
···
18
18
"professional inquiries",
19
19
],
20
20
alternates: {
21
21
-
canonical: "https://www.jaspermayone.com/contact",
21
21
+
canonical: "https://jaspermayone.com/contact",
22
22
},
23
23
};
24
24
···
27
27
"@graph": [
28
28
{
29
29
"@type": "WebPage",
30
30
-
"@id": "https://www.jaspermayone.com/contact#webpage",
31
31
-
url: "https://www.jaspermayone.com/contact",
30
30
+
"@id": "https://jaspermayone.com/contact#webpage",
31
31
+
url: "https://jaspermayone.com/contact",
32
32
name: "Contact - Jasper Mayone",
33
33
description:
34
34
"Contact Jasper Mayone - Email, Signal, and verified communication channels for professional inquiries and collaboration.",
35
35
isPartOf: {
36
36
-
"@id": "https://www.jaspermayone.com/#website",
36
36
+
"@id": "https://jaspermayone.com/#website",
37
37
},
38
38
about: {
39
39
-
"@id": "https://www.jaspermayone.com/#person",
39
39
+
"@id": "https://jaspermayone.com/#person",
40
40
},
41
41
breadcrumb: {
42
42
"@type": "BreadcrumbList",
···
45
45
"@type": "ListItem",
46
46
position: 1,
47
47
name: "Home",
48
48
-
item: "https://www.jaspermayone.com",
48
48
+
item: "https://jaspermayone.com",
49
49
},
50
50
{
51
51
"@type": "ListItem",
52
52
position: 2,
53
53
name: "Contact",
54
54
-
item: "https://www.jaspermayone.com/contact",
54
54
+
item: "https://jaspermayone.com/contact",
55
55
},
56
56
],
57
57
},
+11
-11
src/app/elsewhere/page.tsx
···
11
11
description:
12
12
"A list of Jasper Mayone's writings, contributions, and appearances on sites other than this one.",
13
13
alternates: {
14
14
-
canonical: "https://www.jaspermayone.com/elsewhere",
14
14
+
canonical: "https://jaspermayone.com/elsewhere",
15
15
},
16
16
};
17
17
···
20
20
"@graph": [
21
21
{
22
22
"@type": "WebPage",
23
23
-
"@id": "https://www.jaspermayone.com/elsewhere#webpage",
24
24
-
url: "https://www.jaspermayone.com/elsewhere",
23
23
+
"@id": "https://jaspermayone.com/elsewhere#webpage",
24
24
+
url: "https://jaspermayone.com/elsewhere",
25
25
name: "Elsewhere - Jasper Mayone",
26
26
description:
27
27
"A list of Jasper Mayone's writings, contributions, and appearances on sites other than this one.",
28
28
isPartOf: {
29
29
-
"@id": "https://www.jaspermayone.com/#website",
29
29
+
"@id": "https://jaspermayone.com/#website",
30
30
},
31
31
about: {
32
32
-
"@id": "https://www.jaspermayone.com/#person",
32
32
+
"@id": "https://jaspermayone.com/#person",
33
33
},
34
34
mainEntity: {
35
35
-
"@id": "https://www.jaspermayone.com/elsewhere#appearances",
35
35
+
"@id": "https://jaspermayone.com/elsewhere#appearances",
36
36
},
37
37
breadcrumb: {
38
38
"@type": "BreadcrumbList",
39
39
-
"@id": "https://www.jaspermayone.com/elsewhere#breadcrumb",
39
39
+
"@id": "https://jaspermayone.com/elsewhere#breadcrumb",
40
40
itemListElement: [
41
41
{
42
42
"@type": "ListItem",
43
43
position: 1,
44
44
name: "Home",
45
45
-
item: "https://www.jaspermayone.com",
45
45
+
item: "https://jaspermayone.com",
46
46
},
47
47
{
48
48
"@type": "ListItem",
49
49
position: 2,
50
50
name: "Elsewhere",
51
51
-
item: "https://www.jaspermayone.com/elsewhere",
51
51
+
item: "https://jaspermayone.com/elsewhere",
52
52
},
53
53
],
54
54
},
55
55
},
56
56
{
57
57
"@type": "ItemList",
58
58
-
"@id": "https://www.jaspermayone.com/elsewhere#appearances",
58
58
+
"@id": "https://jaspermayone.com/elsewhere#appearances",
59
59
name: "Appearances and Writings by Jasper Mayone",
60
60
description:
61
61
"Writings, contributions, and appearances on sites other than jaspermayone.com",
···
79
79
contributor: {
80
80
"@type": "Person",
81
81
name: "Jasper Mayone",
82
82
-
"@id": "https://www.jaspermayone.com/#person",
82
82
+
"@id": "https://jaspermayone.com/#person",
83
83
},
84
84
}),
85
85
},
+7
-7
src/app/green/page.tsx
···
9
9
title: "Green",
10
10
description: "How I try to live sustainably.",
11
11
alternates: {
12
12
-
canonical: "https://www.jaspermayone.com/green",
12
12
+
canonical: "https://jaspermayone.com/green",
13
13
},
14
14
};
15
15
···
18
18
"@graph": [
19
19
{
20
20
"@type": "WebPage",
21
21
-
"@id": "https://www.jaspermayone.com/green#webpage",
22
22
-
url: "https://www.jaspermayone.com/green",
21
21
+
"@id": "https://jaspermayone.com/green#webpage",
22
22
+
url: "https://jaspermayone.com/green",
23
23
name: "Green - Jasper Mayone",
24
24
description: "How I try to live sustainably.",
25
25
isPartOf: {
26
26
-
"@id": "https://www.jaspermayone.com/#website",
26
26
+
"@id": "https://jaspermayone.com/#website",
27
27
},
28
28
about: {
29
29
-
"@id": "https://www.jaspermayone.com/#person",
29
29
+
"@id": "https://jaspermayone.com/#person",
30
30
},
31
31
breadcrumb: {
32
32
"@type": "BreadcrumbList",
···
35
35
"@type": "ListItem",
36
36
position: 1,
37
37
name: "Home",
38
38
-
item: "https://www.jaspermayone.com",
38
38
+
item: "https://jaspermayone.com",
39
39
},
40
40
{
41
41
"@type": "ListItem",
42
42
position: 2,
43
43
name: "Green",
44
44
-
item: "https://www.jaspermayone.com/green",
44
44
+
item: "https://jaspermayone.com/green",
45
45
},
46
46
],
47
47
},
+9
-9
src/app/keys/[key]/page.tsx
···
34
34
title: `${key.toUpperCase()} Key`,
35
35
description: `Public ${key.toUpperCase()} key for Jasper Mayone`,
36
36
alternates: {
37
37
-
canonical: `https://www.jaspermayone.com/keys/${key}`,
37
37
+
canonical: `https://jaspermayone.com/keys/${key}`,
38
38
},
39
39
};
40
40
}
···
53
53
const { title, fingerprint, key: keyData, fileExtension } = record;
54
54
const directURL = buildDirectURL(title);
55
55
const downloadURL = buildDownloadURL(title, fileExtension);
56
56
-
const fullDirectURL = `https://www.jaspermayone.com${directURL}`;
56
56
+
const fullDirectURL = `https://jaspermayone.com${directURL}`;
57
57
58
58
const sshImportCommand = `curl -s ${fullDirectURL} >> ~/.ssh/authorized_keys`;
59
59
const gpgImportCommand = `curl -s ${fullDirectURL} | gpg --import`;
···
63
63
"@graph": [
64
64
{
65
65
"@type": "WebPage",
66
66
-
"@id": `https://www.jaspermayone.com/keys/${title}#webpage`,
67
67
-
url: `https://www.jaspermayone.com/keys/${title}`,
66
66
+
"@id": `https://jaspermayone.com/keys/${title}#webpage`,
67
67
+
url: `https://jaspermayone.com/keys/${title}`,
68
68
name: `${title.toUpperCase()} Key - Jasper Mayone`,
69
69
description: `Public ${title.toUpperCase()} key for Jasper Mayone`,
70
70
isPartOf: {
71
71
-
"@id": "https://www.jaspermayone.com/#website",
71
71
+
"@id": "https://jaspermayone.com/#website",
72
72
},
73
73
about: {
74
74
-
"@id": "https://www.jaspermayone.com/#person",
74
74
+
"@id": "https://jaspermayone.com/#person",
75
75
},
76
76
breadcrumb: {
77
77
"@type": "BreadcrumbList",
···
80
80
"@type": "ListItem",
81
81
position: 1,
82
82
name: "Home",
83
83
-
item: "https://www.jaspermayone.com",
83
83
+
item: "https://jaspermayone.com",
84
84
},
85
85
{
86
86
"@type": "ListItem",
87
87
position: 2,
88
88
name: "Keys",
89
89
-
item: "https://www.jaspermayone.com/keys",
89
89
+
item: "https://jaspermayone.com/keys",
90
90
},
91
91
{
92
92
"@type": "ListItem",
93
93
position: 3,
94
94
name: title.toUpperCase(),
95
95
-
item: `https://www.jaspermayone.com/keys/${title}`,
95
95
+
item: `https://jaspermayone.com/keys/${title}`,
96
96
},
97
97
],
98
98
},
+22
-22
src/app/layout.tsx
···
34
34
default: "Jasper Mayone",
35
35
},
36
36
alternates: {
37
37
-
canonical: "https://www.jaspermayone.com",
37
37
+
canonical: "https://jaspermayone.com",
38
38
},
39
39
description: `A ${age}-year-old college student from rural Vermont, currently residing in Boston, while attending Wentworth Institute of Technology as a computer science major. When not in school or at work, Jasper's hobbies include reading, being in the great outdoors, photography, computer programming, cooking, and running away to join the circus.`,
40
40
applicationName: "Jasper Mayone",
···
42
42
authors: [
43
43
{
44
44
name: "Jasper Mayone",
45
45
-
url: "https://www.jaspermayone.com",
45
45
+
url: "https://jaspermayone.com",
46
46
},
47
47
],
48
48
creator: "Jasper Mayone",
49
49
publisher: "Jasper Mayone",
50
50
-
metadataBase: new URL("https://www.jaspermayone.com"),
50
50
+
metadataBase: new URL("https://jaspermayone.com"),
51
51
52
52
// Enhanced Open Graph
53
53
openGraph: {
54
54
title: "Jasper Mayone",
55
55
description: `A ${age}-year-old college student from rural Vermont, currently residing in Boston, while attending Wentworth Institute of Technology as a computer science major. When not in school or at work, Jasper's hobbies include reading, being in the great outdoors, photography, computer programming, cooking, and running away to join the circus.`,
56
56
-
url: "https://www.jaspermayone.com",
56
56
+
url: "https://jaspermayone.com",
57
57
siteName: "Jasper Mayone",
58
58
type: "website",
59
59
locale: "en_US",
···
104
104
"@graph": [
105
105
{
106
106
"@type": "Person",
107
107
-
"@id": "https://www.jaspermayone.com/#person",
107
107
+
"@id": "https://jaspermayone.com/#person",
108
108
name: "Jasper Mayone",
109
109
givenName: "Jasper",
110
110
familyName: "Mayone",
111
111
gender: "male",
112
112
pronouns: "he/they",
113
113
description: `A ${age}-year-old post college student from rural Vermont. Circus performer, coder, and photographer pursuing a major in Computer Science at Wentworth Institute of Technology in Boston.`,
114
114
-
url: "https://www.jaspermayone.com",
114
114
+
url: "https://jaspermayone.com",
115
115
birthPlace: {
116
116
"@type": "Place",
117
117
name: "Vermont",
···
176
176
},
177
177
],
178
178
sameAs: [
179
179
-
"https://www.jaspermayone.com",
179
179
+
"https://jaspermayone.com",
180
180
"https://github.com/jaspermayone",
181
181
"https://bsky.app/profile/jaspermayone.com",
182
182
"https://www.linkedin.com/in/jaspermayone",
···
191
191
},
192
192
{
193
193
"@type": "WebSite",
194
194
-
"@id": "https://www.jaspermayone.com/#website",
195
195
-
url: "https://www.jaspermayone.com",
194
194
+
"@id": "https://jaspermayone.com/#website",
195
195
+
url: "https://jaspermayone.com",
196
196
name: "Jasper Mayone - Personal Website",
197
197
alternateName: "Jasper Mayone Portfolio",
198
198
description: `Personal website of Jasper Mayone - a ${age}-year-old circus performer, coder, and photographer from rural Vermont`,
199
199
about: {
200
200
-
"@id": "https://www.jaspermayone.com/#person",
200
200
+
"@id": "https://jaspermayone.com/#person",
201
201
},
202
202
author: {
203
203
-
"@id": "https://www.jaspermayone.com/#person",
203
203
+
"@id": "https://jaspermayone.com/#person",
204
204
},
205
205
creator: {
206
206
-
"@id": "https://www.jaspermayone.com/#person",
206
206
+
"@id": "https://jaspermayone.com/#person",
207
207
},
208
208
publisher: {
209
209
-
"@id": "https://www.jaspermayone.com/#person",
209
209
+
"@id": "https://jaspermayone.com/#person",
210
210
},
211
211
inLanguage: "en-US",
212
212
copyrightHolder: {
213
213
-
"@id": "https://www.jaspermayone.com/#person",
213
213
+
"@id": "https://jaspermayone.com/#person",
214
214
},
215
215
},
216
216
{
217
217
"@type": "WebPage",
218
218
-
"@id": "https://www.jaspermayone.com/#webpage",
219
219
-
url: "https://www.jaspermayone.com",
218
218
+
"@id": "https://jaspermayone.com/#webpage",
219
219
+
url: "https://jaspermayone.com",
220
220
name: "Jasper Mayone - Circus Artist, Coder & Photographer",
221
221
description: `Meet Jasper Mayone, a ${age}-year-old circus performer, software developer, and photographer from rural Vermont. Currently pursuing a major in Computer Science at Wentworth Institute of Technology in Boston.`,
222
222
isPartOf: {
223
223
-
"@id": "https://www.jaspermayone.com/#website",
223
223
+
"@id": "https://jaspermayone.com/#website",
224
224
},
225
225
about: {
226
226
-
"@id": "https://www.jaspermayone.com/#person",
226
226
+
"@id": "https://jaspermayone.com/#person",
227
227
},
228
228
mainEntity: {
229
229
-
"@id": "https://www.jaspermayone.com/#person",
229
229
+
"@id": "https://jaspermayone.com/#person",
230
230
},
231
231
breadcrumb: {
232
232
"@type": "BreadcrumbList",
···
235
235
"@type": "ListItem",
236
236
position: 1,
237
237
name: "Home",
238
238
-
item: "https://www.jaspermayone.com",
238
238
+
item: "https://jaspermayone.com",
239
239
},
240
240
],
241
241
},
···
428
428
<a className="u-email" href="mailto:me@jaspermayone.com">
429
429
me@jaspermayone.com
430
430
</a>
431
431
-
<a className="u-url" href="https://www.jaspermayone.com" rel="me">
431
431
+
<a className="u-url" href="https://jaspermayone.com" rel="me">
432
432
jaspermayone.com
433
433
</a>
434
434
<a className="u-url" href="https://github.com/jaspermayone" rel="me">
···
717
717
</code>{" "}
718
718
{/* SSH key */}
719
719
{/* === UNIQUE IDENTIFIER === */}
720
720
-
<data className="u-uid uid" value="https://www.jaspermayone.com">
720
720
+
<data className="u-uid uid" value="https://jaspermayone.com">
721
721
{/* Unique identifier, preferably canonical URL */}
722
722
</data>
723
723
{/* === BIOGRAPHICAL NOTE === */}
+11
-11
src/app/now/page.tsx
···
17
17
"real-time updates",
18
18
],
19
19
alternates: {
20
20
-
canonical: "https://www.jaspermayone.com/now",
20
20
+
canonical: "https://jaspermayone.com/now",
21
21
},
22
22
};
23
23
···
26
26
"@graph": [
27
27
{
28
28
"@type": "WebPage",
29
29
-
"@id": "https://www.jaspermayone.com/now#webpage",
30
30
-
url: "https://www.jaspermayone.com/now",
29
29
+
"@id": "https://jaspermayone.com/now#webpage",
30
30
+
url: "https://jaspermayone.com/now",
31
31
name: "Now - Jasper Mayone",
32
32
description:
33
33
"Real-time status updates from Jasper Mayone - current activities, projects, and location updates via automated system.",
34
34
isPartOf: {
35
35
-
"@id": "https://www.jaspermayone.com/#website",
35
35
+
"@id": "https://jaspermayone.com/#website",
36
36
},
37
37
about: {
38
38
-
"@id": "https://www.jaspermayone.com/#person",
38
38
+
"@id": "https://jaspermayone.com/#person",
39
39
},
40
40
breadcrumb: {
41
41
"@type": "BreadcrumbList",
···
44
44
"@type": "ListItem",
45
45
position: 1,
46
46
name: "Home",
47
47
-
item: "https://www.jaspermayone.com",
47
47
+
item: "https://jaspermayone.com",
48
48
},
49
49
{
50
50
"@type": "ListItem",
51
51
position: 2,
52
52
name: "Now",
53
53
-
item: "https://www.jaspermayone.com/now",
53
53
+
item: "https://jaspermayone.com/now",
54
54
},
55
55
],
56
56
},
57
57
},
58
58
{
59
59
"@type": "Blog",
60
60
-
"@id": "https://www.jaspermayone.com/now#blog",
61
61
-
url: "https://www.jaspermayone.com/now",
60
60
+
"@id": "https://jaspermayone.com/now#blog",
61
61
+
url: "https://jaspermayone.com/now",
62
62
name: "Now Updates - Jasper Mayone",
63
63
description: "Real-time status updates and current activities",
64
64
author: {
65
65
-
"@id": "https://www.jaspermayone.com/#person",
65
65
+
"@id": "https://jaspermayone.com/#person",
66
66
},
67
67
publisher: {
68
68
-
"@id": "https://www.jaspermayone.com/#person",
68
68
+
"@id": "https://jaspermayone.com/#person",
69
69
},
70
70
inLanguage: "en-US",
71
71
},
+9
-9
src/app/open-source/page.tsx
···
18
18
"foss",
19
19
],
20
20
alternates: {
21
21
-
canonical: "https://www.jaspermayone.com/open-source",
21
21
+
canonical: "https://jaspermayone.com/open-source",
22
22
},
23
23
};
24
24
···
27
27
"@graph": [
28
28
{
29
29
"@type": "WebPage",
30
30
-
"@id": "https://www.jaspermayone.com/open-source#webpage",
31
31
-
url: "https://www.jaspermayone.com/open-source",
30
30
+
"@id": "https://jaspermayone.com/open-source#webpage",
31
31
+
url: "https://jaspermayone.com/open-source",
32
32
name: "Open Source - Jasper Mayone",
33
33
description:
34
34
"Jasper Mayone's open source contributions, maintained projects, and hosted services.",
35
35
isPartOf: {
36
36
-
"@id": "https://www.jaspermayone.com/#website",
36
36
+
"@id": "https://jaspermayone.com/#website",
37
37
},
38
38
about: {
39
39
-
"@id": "https://www.jaspermayone.com/#person",
39
39
+
"@id": "https://jaspermayone.com/#person",
40
40
},
41
41
mainEntity: {
42
42
-
"@id": "https://www.jaspermayone.com/open-source#projects",
42
42
+
"@id": "https://jaspermayone.com/open-source#projects",
43
43
},
44
44
breadcrumb: {
45
45
"@type": "BreadcrumbList",
···
48
48
"@type": "ListItem",
49
49
position: 1,
50
50
name: "Home",
51
51
-
item: "https://www.jaspermayone.com",
51
51
+
item: "https://jaspermayone.com",
52
52
},
53
53
{
54
54
"@type": "ListItem",
55
55
position: 2,
56
56
name: "Open Source",
57
57
-
item: "https://www.jaspermayone.com/open-source",
57
57
+
item: "https://jaspermayone.com/open-source",
58
58
},
59
59
],
60
60
},
61
61
},
62
62
{
63
63
"@type": "ItemList",
64
64
-
"@id": "https://www.jaspermayone.com/open-source#projects",
64
64
+
"@id": "https://jaspermayone.com/open-source#projects",
65
65
name: "Open Source Projects",
66
66
numberOfItems: maintainedProjects.length,
67
67
itemListElement: maintainedProjects.map((project, index) => ({
+7
-7
src/app/panera/page.tsx
···
9
9
description:
10
10
"What I usually get at Panera, in case anyone wants to get me Panera.",
11
11
alternates: {
12
12
-
canonical: "https://www.jaspermayone.com/panera",
12
12
+
canonical: "https://jaspermayone.com/panera",
13
13
},
14
14
};
15
15
···
18
18
"@graph": [
19
19
{
20
20
"@type": "WebPage",
21
21
-
"@id": "https://www.jaspermayone.com/panera#webpage",
22
22
-
url: "https://www.jaspermayone.com/panera",
21
21
+
"@id": "https://jaspermayone.com/panera#webpage",
22
22
+
url: "https://jaspermayone.com/panera",
23
23
name: "Panera - Jasper Mayone",
24
24
description:
25
25
"What I usually get at Panera, in case anyone wants to get me Panera.",
26
26
isPartOf: {
27
27
-
"@id": "https://www.jaspermayone.com/#website",
27
27
+
"@id": "https://jaspermayone.com/#website",
28
28
},
29
29
about: {
30
30
-
"@id": "https://www.jaspermayone.com/#person",
30
30
+
"@id": "https://jaspermayone.com/#person",
31
31
},
32
32
breadcrumb: {
33
33
"@type": "BreadcrumbList",
···
36
36
"@type": "ListItem",
37
37
position: 1,
38
38
name: "Home",
39
39
-
item: "https://www.jaspermayone.com",
39
39
+
item: "https://jaspermayone.com",
40
40
},
41
41
{
42
42
"@type": "ListItem",
43
43
position: 2,
44
44
name: "Panera",
45
45
-
item: "https://www.jaspermayone.com/panera",
45
45
+
item: "https://jaspermayone.com/panera",
46
46
},
47
47
],
48
48
},
+12
-12
src/app/pfp/page.tsx
···
14
14
title: "PFPs",
15
15
description: "All the profile photos I've used over the years.",
16
16
alternates: {
17
17
-
canonical: "https://www.jaspermayone.com/pfp",
17
17
+
canonical: "https://jaspermayone.com/pfp",
18
18
},
19
19
};
20
20
···
31
31
"@graph": [
32
32
{
33
33
"@type": "WebPage",
34
34
-
"@id": "https://www.jaspermayone.com/pfp#webpage",
35
35
-
url: "https://www.jaspermayone.com/pfp",
34
34
+
"@id": "https://jaspermayone.com/pfp#webpage",
35
35
+
url: "https://jaspermayone.com/pfp",
36
36
name: "Profile Photos - Jasper Mayone",
37
37
description: "All the profile photos I've used over the years.",
38
38
isPartOf: {
39
39
-
"@id": "https://www.jaspermayone.com/#website",
39
39
+
"@id": "https://jaspermayone.com/#website",
40
40
},
41
41
about: {
42
42
-
"@id": "https://www.jaspermayone.com/#person",
42
42
+
"@id": "https://jaspermayone.com/#person",
43
43
},
44
44
mainEntity: {
45
45
-
"@id": "https://www.jaspermayone.com/pfp#gallery",
45
45
+
"@id": "https://jaspermayone.com/pfp#gallery",
46
46
},
47
47
breadcrumb: {
48
48
"@type": "BreadcrumbList",
49
49
-
"@id": "https://www.jaspermayone.com/pfp#breadcrumb",
49
49
+
"@id": "https://jaspermayone.com/pfp#breadcrumb",
50
50
itemListElement: [
51
51
{
52
52
"@type": "ListItem",
53
53
position: 1,
54
54
name: "Home",
55
55
-
item: "https://www.jaspermayone.com",
55
55
+
item: "https://jaspermayone.com",
56
56
},
57
57
{
58
58
"@type": "ListItem",
59
59
position: 2,
60
60
name: "Profile Photos",
61
61
-
item: "https://www.jaspermayone.com/pfp",
61
61
+
item: "https://jaspermayone.com/pfp",
62
62
},
63
63
],
64
64
},
65
65
},
66
66
{
67
67
"@type": "ImageGallery",
68
68
-
"@id": "https://www.jaspermayone.com/pfp#gallery",
68
68
+
"@id": "https://jaspermayone.com/pfp#gallery",
69
69
name: "Jasper Mayone Profile Photos",
70
70
description:
71
71
"A collection of profile photos used by Jasper Mayone over the years",
72
72
author: {
73
73
-
"@id": "https://www.jaspermayone.com/#person",
73
73
+
"@id": "https://jaspermayone.com/#person",
74
74
},
75
75
image: profilePhotos.map((photo, index) => ({
76
76
"@type": "ImageObject",
77
77
name: photo.name,
78
78
-
contentUrl: `https://www.jaspermayone.com${photo.src}`,
78
78
+
contentUrl: `https://jaspermayone.com${photo.src}`,
79
79
position: index + 1,
80
80
})),
81
81
},
+10
-10
src/app/podroll/page.tsx
···
10
10
title: "Podroll",
11
11
description: "Podcasts I recommend.",
12
12
alternates: {
13
13
-
canonical: "https://www.jaspermayone.com/podroll",
13
13
+
canonical: "https://jaspermayone.com/podroll",
14
14
},
15
15
};
16
16
···
19
19
"@graph": [
20
20
{
21
21
"@type": "WebPage",
22
22
-
"@id": "https://www.jaspermayone.com/podroll#webpage",
23
23
-
url: "https://www.jaspermayone.com/podroll",
22
22
+
"@id": "https://jaspermayone.com/podroll#webpage",
23
23
+
url: "https://jaspermayone.com/podroll",
24
24
name: "Podroll - Jasper Mayone",
25
25
description: "Podcasts I recommend.",
26
26
isPartOf: {
27
27
-
"@id": "https://www.jaspermayone.com/#website",
27
27
+
"@id": "https://jaspermayone.com/#website",
28
28
},
29
29
about: {
30
30
-
"@id": "https://www.jaspermayone.com/#person",
30
30
+
"@id": "https://jaspermayone.com/#person",
31
31
},
32
32
mainEntity: {
33
33
-
"@id": "https://www.jaspermayone.com/podroll#podcast-list",
33
33
+
"@id": "https://jaspermayone.com/podroll#podcast-list",
34
34
},
35
35
breadcrumb: {
36
36
"@type": "BreadcrumbList",
37
37
-
"@id": "https://www.jaspermayone.com/podroll#breadcrumb",
37
37
+
"@id": "https://jaspermayone.com/podroll#breadcrumb",
38
38
itemListElement: [
39
39
{
40
40
"@type": "ListItem",
41
41
position: 1,
42
42
name: "Home",
43
43
-
item: "https://www.jaspermayone.com",
43
43
+
item: "https://jaspermayone.com",
44
44
},
45
45
{
46
46
"@type": "ListItem",
47
47
position: 2,
48
48
name: "Podroll",
49
49
-
item: "https://www.jaspermayone.com/podroll",
49
49
+
item: "https://jaspermayone.com/podroll",
50
50
},
51
51
],
52
52
},
53
53
},
54
54
{
55
55
"@type": "ItemList",
56
56
-
"@id": "https://www.jaspermayone.com/podroll#podcast-list",
56
56
+
"@id": "https://jaspermayone.com/podroll#podcast-list",
57
57
name: "Recommended Podcasts",
58
58
description: "Podcasts recommended by Jasper Mayone",
59
59
numberOfItems: podcasts.length,
+12
-12
src/app/portfolio/page.tsx
···
19
19
"coding portfolio",
20
20
],
21
21
alternates: {
22
22
-
canonical: "https://www.jaspermayone.com/portfolio",
22
22
+
canonical: "https://jaspermayone.com/portfolio",
23
23
},
24
24
};
25
25
···
28
28
"@graph": [
29
29
{
30
30
"@type": "WebPage",
31
31
-
"@id": "https://www.jaspermayone.com/portfolio#webpage",
32
32
-
url: "https://www.jaspermayone.com/portfolio",
31
31
+
"@id": "https://jaspermayone.com/portfolio#webpage",
32
32
+
url: "https://jaspermayone.com/portfolio",
33
33
name: "Portfolio - Jasper Mayone",
34
34
description:
35
35
"A collection of projects and work by Jasper Mayone - web applications, tools, and creative endeavors.",
36
36
isPartOf: {
37
37
-
"@id": "https://www.jaspermayone.com/#website",
37
37
+
"@id": "https://jaspermayone.com/#website",
38
38
},
39
39
about: {
40
40
-
"@id": "https://www.jaspermayone.com/#person",
40
40
+
"@id": "https://jaspermayone.com/#person",
41
41
},
42
42
mainEntity: {
43
43
-
"@id": "https://www.jaspermayone.com/portfolio#projects",
43
43
+
"@id": "https://jaspermayone.com/portfolio#projects",
44
44
},
45
45
breadcrumb: {
46
46
"@type": "BreadcrumbList",
47
47
-
"@id": "https://www.jaspermayone.com/portfolio#breadcrumb",
47
47
+
"@id": "https://jaspermayone.com/portfolio#breadcrumb",
48
48
itemListElement: [
49
49
{
50
50
"@type": "ListItem",
51
51
position: 1,
52
52
name: "Home",
53
53
-
item: "https://www.jaspermayone.com",
53
53
+
item: "https://jaspermayone.com",
54
54
},
55
55
{
56
56
"@type": "ListItem",
57
57
position: 2,
58
58
name: "Portfolio",
59
59
-
item: "https://www.jaspermayone.com/portfolio",
59
59
+
item: "https://jaspermayone.com/portfolio",
60
60
},
61
61
],
62
62
},
63
63
},
64
64
{
65
65
"@type": "ItemList",
66
66
-
"@id": "https://www.jaspermayone.com/portfolio#projects",
66
66
+
"@id": "https://jaspermayone.com/portfolio#projects",
67
67
name: "Portfolio Projects",
68
68
description: "Software projects and creative work by Jasper Mayone",
69
69
numberOfItems: projects.length,
···
82
82
...(project.image && {
83
83
image: project.image.startsWith("http")
84
84
? project.image
85
85
-
: `https://www.jaspermayone.com${project.image}`,
85
85
+
: `https://jaspermayone.com${project.image}`,
86
86
}),
87
87
...(project.tags && { keywords: project.tags.join(", ") }),
88
88
author: {
89
89
-
"@id": "https://www.jaspermayone.com/#person",
89
89
+
"@id": "https://jaspermayone.com/#person",
90
90
},
91
91
},
92
92
})),
+1
-1
src/app/robots.ts
···
36
36
disallow: ["/wp-admin/"],
37
37
},
38
38
],
39
39
-
sitemap: "https://www.jaspermayone.com/sitemap_index.xml",
39
39
+
sitemap: "https://jaspermayone.com/sitemap_index.xml",
40
40
};
41
41
}
+9
-9
src/app/slashes/page.tsx
···
18
18
"slashpages",
19
19
],
20
20
alternates: {
21
21
-
canonical: "https://www.jaspermayone.com/slashes",
21
21
+
canonical: "https://jaspermayone.com/slashes",
22
22
},
23
23
};
24
24
···
27
27
"@graph": [
28
28
{
29
29
"@type": "WebPage",
30
30
-
"@id": "https://www.jaspermayone.com/slashes#webpage",
31
31
-
url: "https://www.jaspermayone.com/slashes",
30
30
+
"@id": "https://jaspermayone.com/slashes#webpage",
31
31
+
url: "https://jaspermayone.com/slashes",
32
32
name: "Slashes - Jasper Mayone",
33
33
description:
34
34
"A directory of all slash pages on jaspermayone.com - top-level URLs that may be of interest.",
35
35
isPartOf: {
36
36
-
"@id": "https://www.jaspermayone.com/#website",
36
36
+
"@id": "https://jaspermayone.com/#website",
37
37
},
38
38
about: {
39
39
-
"@id": "https://www.jaspermayone.com/#person",
39
39
+
"@id": "https://jaspermayone.com/#person",
40
40
},
41
41
breadcrumb: {
42
42
"@type": "BreadcrumbList",
···
45
45
"@type": "ListItem",
46
46
position: 1,
47
47
name: "Home",
48
48
-
item: "https://www.jaspermayone.com",
48
48
+
item: "https://jaspermayone.com",
49
49
},
50
50
{
51
51
"@type": "ListItem",
52
52
position: 2,
53
53
name: "Slashes",
54
54
-
item: "https://www.jaspermayone.com/slashes",
54
54
+
item: "https://jaspermayone.com/slashes",
55
55
},
56
56
],
57
57
},
58
58
},
59
59
{
60
60
"@type": "ItemList",
61
61
-
"@id": "https://www.jaspermayone.com/slashes#list",
61
61
+
"@id": "https://jaspermayone.com/slashes#list",
62
62
name: "Slash Pages Directory",
63
63
description: "Top-level URL pages on jaspermayone.com",
64
64
numberOfItems: slashPages.length,
···
69
69
"@type": "WebPage",
70
70
name: page.name,
71
71
description: page.description,
72
72
-
url: `https://www.jaspermayone.com/${page.slug}`,
72
72
+
url: `https://jaspermayone.com/${page.slug}`,
73
73
},
74
74
})),
75
75
},
+1
-1
src/app/to/page.tsx
···
6
6
title: "Links - Jasper Mayone",
7
7
description: "All my redirect links and social media profiles",
8
8
alternates: {
9
9
-
canonical: "https://www.jaspermayone.com/to",
9
9
+
canonical: "https://jaspermayone.com/to",
10
10
},
11
11
};
12
12
+10
-10
src/app/uses/page.tsx
···
16
16
"jasper mayone tools",
17
17
],
18
18
alternates: {
19
19
-
canonical: "https://www.jaspermayone.com/uses",
19
19
+
canonical: "https://jaspermayone.com/uses",
20
20
},
21
21
};
22
22
···
25
25
"@graph": [
26
26
{
27
27
"@type": "WebPage",
28
28
-
"@id": "https://www.jaspermayone.com/uses#webpage",
29
29
-
url: "https://www.jaspermayone.com/uses",
28
28
+
"@id": "https://jaspermayone.com/uses#webpage",
29
29
+
url: "https://jaspermayone.com/uses",
30
30
name: "Uses - Jasper Mayone",
31
31
description:
32
32
"Tools and software I use daily for development, productivity, and creative work - from code editors to project management apps.",
33
33
isPartOf: {
34
34
-
"@id": "https://www.jaspermayone.com/#website",
34
34
+
"@id": "https://jaspermayone.com/#website",
35
35
},
36
36
about: {
37
37
-
"@id": "https://www.jaspermayone.com/#person",
37
37
+
"@id": "https://jaspermayone.com/#person",
38
38
},
39
39
mainEntity: {
40
40
-
"@id": "https://www.jaspermayone.com/uses#tools-list",
40
40
+
"@id": "https://jaspermayone.com/uses#tools-list",
41
41
},
42
42
breadcrumb: {
43
43
"@type": "BreadcrumbList",
44
44
-
"@id": "https://www.jaspermayone.com/uses#breadcrumb",
44
44
+
"@id": "https://jaspermayone.com/uses#breadcrumb",
45
45
itemListElement: [
46
46
{
47
47
"@type": "ListItem",
48
48
position: 1,
49
49
name: "Home",
50
50
-
item: "https://www.jaspermayone.com",
50
50
+
item: "https://jaspermayone.com",
51
51
},
52
52
{
53
53
"@type": "ListItem",
54
54
position: 2,
55
55
name: "Uses",
56
56
-
item: "https://www.jaspermayone.com/uses",
56
56
+
item: "https://jaspermayone.com/uses",
57
57
},
58
58
],
59
59
},
60
60
},
61
61
{
62
62
"@type": "ItemList",
63
63
-
"@id": "https://www.jaspermayone.com/uses#tools-list",
63
63
+
"@id": "https://jaspermayone.com/uses#tools-list",
64
64
name: "Tools and Software Used by Jasper Mayone",
65
65
description:
66
66
"Daily tools and software for development, productivity, and creative work",
+7
-7
src/app/verify/page.tsx
···
49
49
"security",
50
50
],
51
51
alternates: {
52
52
-
canonical: "https://www.jaspermayone.com/verify",
52
52
+
canonical: "https://jaspermayone.com/verify",
53
53
},
54
54
};
55
55
···
78
78
"@graph": [
79
79
{
80
80
"@type": "WebPage",
81
81
-
"@id": "https://www.jaspermayone.com/verify#webpage",
82
82
-
url: "https://www.jaspermayone.com/verify",
81
81
+
"@id": "https://jaspermayone.com/verify#webpage",
82
82
+
url: "https://jaspermayone.com/verify",
83
83
name: "Verify - Jasper Mayone",
84
84
description:
85
85
"Verify Jasper Mayone's identity across domains, email addresses, social accounts, and cryptographic keys for secure communication.",
86
86
isPartOf: {
87
87
-
"@id": "https://www.jaspermayone.com/#website",
87
87
+
"@id": "https://jaspermayone.com/#website",
88
88
},
89
89
about: {
90
90
-
"@id": "https://www.jaspermayone.com/#person",
90
90
+
"@id": "https://jaspermayone.com/#person",
91
91
},
92
92
breadcrumb: {
93
93
"@type": "BreadcrumbList",
···
96
96
"@type": "ListItem",
97
97
position: 1,
98
98
name: "Home",
99
99
-
item: "https://www.jaspermayone.com",
99
99
+
item: "https://jaspermayone.com",
100
100
},
101
101
{
102
102
"@type": "ListItem",
103
103
position: 2,
104
104
name: "Verify",
105
105
-
item: "https://www.jaspermayone.com/verify",
105
105
+
item: "https://jaspermayone.com/verify",
106
106
},
107
107
],
108
108
},