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
2 changes: 2 additions & 0 deletions sites/sh1pt.com/app/blog/[slug]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { Metadata } from 'next';
import { notFound } from 'next/navigation';
import { getPostBySlug, formatDate, SITE_URL } from '@/lib/blog';
import AdUnit from '../../components/AdUnit';

export const dynamic = 'force-dynamic';

Expand Down Expand Up @@ -79,6 +80,7 @@ export default async function BlogPostPage({
{post.content_markdown ?? ''}
</pre>
)}
<AdUnit />
</main>
);
}
2 changes: 2 additions & 0 deletions sites/sh1pt.com/app/blog/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Metadata } from 'next';
import { listPosts, formatDate, SITE_URL } from '@/lib/blog';
import AdUnit from '../components/AdUnit';

export const metadata: Metadata = {
title: 'Blog — sh1pt',
Expand Down Expand Up @@ -85,6 +86,7 @@ export default async function BlogIndexPage() {
))}
</ul>
)}
<AdUnit />
</main>
);
}
32 changes: 32 additions & 0 deletions sites/sh1pt.com/app/components/AdUnit.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* CrawlProof ad slot, rendered inside page content (never at the tail of
* <body>, which puts it below the footer). The global ad.js loader in the
* root layout fills every [data-cp-ad] slot in place with a 300x250 iframe.
*/
const CP_AD_SLOT = '6faee067-68a2-40ef-aa20-2065bb306f4c';

export default function AdUnit() {
return (
<div
style={{
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
margin: '2.5rem 0',
}}
>
<span
className="muted"
style={{
fontSize: '0.65rem',
textTransform: 'uppercase',
letterSpacing: '0.05em',
marginBottom: '0.35rem',
}}
>
Advertisement
</span>
<div data-cp-ad="" data-slot={CP_AD_SLOT} data-format="banner_300x250" />
</div>
);
}
5 changes: 4 additions & 1 deletion sites/sh1pt.com/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import NavLink from './components/NavLink';
import RobautoPixel from './components/RobautoPixel';
import CrawlproofStats from './components/CrawlproofStats';
import { getSupabaseServerClient } from '@/lib/supabase/server';
import Script from "next/script";

export const metadata = {
title: 'sh1pt — Build. Promote. Scale. Iterate…',
Expand Down Expand Up @@ -85,7 +86,9 @@ export default async function RootLayout({ children }: { children: ReactNode })
</div>
</footer>
<CrawlproofStats />
<script async src="https://feedback.profullstack.com/embed/profullstack-feedback.js" data-property="sh1pt.com"></script></body>
<script async src="https://feedback.profullstack.com/embed/profullstack-feedback.js" data-property="sh1pt.com"></script>
<Script src="https://crawlproof.com/ad.js" strategy="afterInteractive" />
</body>
</html>
);
}
Expand Down
7 changes: 7 additions & 0 deletions sites/sh1pt.com/app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import CopyableCommand from './components/CopyableCommand';
import AdUnit from './components/AdUnit';

export default function Home() {
return (
Expand Down Expand Up @@ -169,6 +170,12 @@ sh1pt iterate # observe metrics → agent proposes fixes → ship, on loop`}
</p>
</div>
</section>

<section>
<div className="container">
<AdUnit />
</div>
</section>
</main>
);
}
Loading