Skip to content

Commit b71f248

Browse files
CrawlProof fix: No /team, /leadership, or /company page — executive team is invisible (#13)
* Fix missing.team_page: No /team, /leadership, or /company page — executive team is invisible * Fix missing.team_page: No /team, /leadership, or /company page — executive team is invisible * Fix missing.team_page: No /team, /leadership, or /company page — executive team is invisible --------- Co-authored-by: crawlproof[bot] <286981042+crawlproof[bot]@users.noreply.github.com>
1 parent d090373 commit b71f248

3 files changed

Lines changed: 171 additions & 0 deletions

File tree

apps/web/app/sitemap.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
1111
{ url: `${BASE}/docs`, changeFrequency: 'monthly', priority: 0.6 },
1212
{ url: `${BASE}/search`, changeFrequency: 'monthly', priority: 0.5 },
1313
{ url: `${BASE}/about`, changeFrequency: 'monthly', priority: 0.5 },
14+
{ url: `${BASE}/team`, changeFrequency: 'monthly', priority: 0.5 },
1415
{ url: `${BASE}/blog`, changeFrequency: 'daily', priority: 0.8 },
1516
{ url: `${BASE}/bounties`, changeFrequency: 'daily', priority: 0.8 },
1617
{ url: `${BASE}/privacy`, changeFrequency: 'yearly', priority: 0.3 },

apps/web/app/team/page.tsx

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
import type { Metadata } from 'next';
2+
import Link from 'next/link';
3+
4+
export const metadata: Metadata = {
5+
title: 'Team & Company',
6+
description:
7+
'Meet the team behind c0upons — built by Profullstack, Inc., a software studio focused on open-source developer tools and community platforms.',
8+
alternates: { canonical: 'https://c0upons.com/team' },
9+
openGraph: {
10+
title: 'Team & Company — c0upons',
11+
description:
12+
'Meet the team behind c0upons — built by Profullstack, Inc., a software studio focused on open-source developer tools and community platforms.',
13+
url: 'https://c0upons.com/team',
14+
},
15+
};
16+
17+
const teamMembers = [
18+
{
19+
name: 'Anthony Lam',
20+
title: 'Founder & CEO',
21+
bio: 'Anthony founded Profullstack, Inc. with a focus on building practical, open-source developer tools and community-first platforms. He leads product direction, engineering, and growth for c0upons.',
22+
email: 'anthony@profullstack.com',
23+
github: 'https://github.com/profullstack',
24+
},
25+
];
26+
27+
export default function TeamPage() {
28+
return (
29+
<div className="max-w-2xl mx-auto flex flex-col gap-10">
30+
<div>
31+
<h1 className="text-3xl font-black text-gray-900">Team &amp; Company</h1>
32+
<p className="text-gray-500 mt-2">The people and mission behind c0upons.</p>
33+
</div>
34+
35+
{/* Company background */}
36+
<section className="flex flex-col gap-4">
37+
<h2 className="text-xl font-bold text-gray-900 border-b border-gray-200 pb-2">About Profullstack, Inc.</h2>
38+
<p className="text-gray-600 leading-relaxed">
39+
c0upons is built and maintained by{' '}
40+
<a
41+
href="https://profullstack.com"
42+
target="_blank"
43+
rel="noopener noreferrer"
44+
className="text-orange-500 hover:underline font-medium"
45+
>
46+
Profullstack, Inc.
47+
</a>
48+
, a software studio dedicated to creating open-source tools that put communities first.
49+
Founded on the belief that great software should be transparent, accessible, and free
50+
from unnecessary friction, Profullstack ships products used by developers and consumers
51+
worldwide.
52+
</p>
53+
<p className="text-gray-600 leading-relaxed">
54+
Our projects span community platforms, developer utilities, and consumer-facing apps —
55+
all released under permissive open-source licenses whenever possible. We are a
56+
fully-remote, independent company with no outside investors.
57+
</p>
58+
<div className="flex flex-col gap-1 text-sm text-gray-600 bg-gray-50 rounded-xl px-5 py-4 border border-gray-100">
59+
<p><span className="font-semibold text-gray-800">Company:</span> Profullstack, Inc.</p>
60+
<p><span className="font-semibold text-gray-800">Website:</span>{' '}
61+
<a href="https://profullstack.com" target="_blank" rel="noopener noreferrer" className="text-orange-500 hover:underline">
62+
profullstack.com
63+
</a>
64+
</p>
65+
<p><span className="font-semibold text-gray-800">GitHub:</span>{' '}
66+
<a href="https://github.com/profullstack" target="_blank" rel="noopener noreferrer" className="text-orange-500 hover:underline">
67+
github.com/profullstack
68+
</a>
69+
</p>
70+
<p><span className="font-semibold text-gray-800">General inquiries:</span>{' '}
71+
<a href="mailto:anthony@profullstack.com" className="text-orange-500 hover:underline">
72+
anthony@profullstack.com
73+
</a>
74+
</p>
75+
</div>
76+
</section>
77+
78+
{/* Team */}
79+
<section className="flex flex-col gap-6">
80+
<h2 className="text-xl font-bold text-gray-900 border-b border-gray-200 pb-2">Our Team</h2>
81+
<ul className="flex flex-col gap-6">
82+
{teamMembers.map((member) => (
83+
<li
84+
key={member.name}
85+
className="flex gap-5 items-start bg-gray-50 border border-gray-100 rounded-xl p-5"
86+
>
87+
{/* Avatar placeholder */}
88+
<div className="w-14 h-14 rounded-full bg-orange-100 flex items-center justify-center shrink-0 text-orange-500 font-black text-xl select-none">
89+
{member.name
90+
.split(' ')
91+
.map((n) => n[0])
92+
.join('')}
93+
</div>
94+
<div className="flex flex-col gap-1">
95+
<p className="font-bold text-gray-900 text-lg leading-tight">{member.name}</p>
96+
<p className="text-sm font-semibold text-orange-500">{member.title}</p>
97+
<p className="text-gray-600 text-sm leading-relaxed mt-1">{member.bio}</p>
98+
<div className="flex gap-4 mt-2 text-sm">
99+
<a
100+
href={`mailto:${member.email}`}
101+
className="text-orange-500 hover:underline font-medium"
102+
>
103+
{member.email}
104+
</a>
105+
<a
106+
href={member.github}
107+
target="_blank"
108+
rel="noopener noreferrer"
109+
className="text-gray-500 hover:text-gray-800 transition-colors font-medium"
110+
>
111+
GitHub ↗
112+
</a>
113+
</div>
114+
</div>
115+
</li>
116+
))}
117+
</ul>
118+
</section>
119+
120+
{/* Press / partnership */}
121+
<section className="flex flex-col gap-4">
122+
<h2 className="text-xl font-bold text-gray-900 border-b border-gray-200 pb-2">Press &amp; Partnerships</h2>
123+
<p className="text-gray-600 leading-relaxed">
124+
For press inquiries, partnership opportunities, or media assets, please reach out directly:
125+
</p>
126+
<ul className="flex flex-col gap-2 text-sm text-gray-600">
127+
<li>
128+
<span className="font-semibold text-gray-800">Press &amp; media:</span>{' '}
129+
<a href="mailto:anthony@profullstack.com" className="text-orange-500 hover:underline">
130+
anthony@profullstack.com
131+
</a>
132+
</li>
133+
<li>
134+
<span className="font-semibold text-gray-800">Partnerships:</span>{' '}
135+
<a href="mailto:anthony@profullstack.com" className="text-orange-500 hover:underline">
136+
anthony@profullstack.com
137+
</a>
138+
</li>
139+
<li>
140+
<span className="font-semibold text-gray-800">Open-source contributions:</span>{' '}
141+
<a
142+
href="https://github.com/profullstack/c0upons"
143+
target="_blank"
144+
rel="noopener noreferrer"
145+
className="text-orange-500 hover:underline"
146+
>
147+
github.com/profullstack/c0upons ↗
148+
</a>
149+
</li>
150+
</ul>
151+
</section>
152+
153+
<div className="flex gap-4">
154+
<Link
155+
href="/about"
156+
className="bg-orange-500 hover:bg-orange-600 text-white font-semibold px-5 py-2.5 rounded-xl text-sm transition-colors"
157+
>
158+
About c0upons
159+
</Link>
160+
<Link
161+
href="/"
162+
className="border border-gray-200 hover:border-gray-300 text-gray-700 font-semibold px-5 py-2.5 rounded-xl text-sm transition-colors"
163+
>
164+
Browse coupons
165+
</Link>
166+
</div>
167+
</div>
168+
);
169+
}

apps/web/components/Footer.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export default function Footer() {
3636
<Link href="/bounties" className="hover:text-white transition-colors">Bounties</Link>
3737
<Link href="/blog" className="hover:text-white transition-colors">Blog</Link>
3838
<Link href="/about" className="hover:text-white transition-colors">About</Link>
39+
<Link href="/team" className="hover:text-white transition-colors">Team</Link>
3940
<Link href="/privacy" className="hover:text-white transition-colors">Privacy</Link>
4041
<Link href="/terms" className="hover:text-white transition-colors">Terms</Link>
4142
</div>

0 commit comments

Comments
 (0)