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
21 changes: 21 additions & 0 deletions sites/sh1pt.com/app/components/PitFooter.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* The pit.world network footer, fetched on the server and rendered as the last
* thing in <body>. Cached for an hour; any failure (timeout, non-200, odd body)
* renders nothing so the page never breaks.
*/
const PIT_FOOTER_URL = 'https://pit.world/snippets/footer.html?site=sh1pt.com';

export default async function PitFooter() {
try {
const res = await fetch(PIT_FOOTER_URL, {
next: { revalidate: 3600 },
signal: AbortSignal.timeout(3000),
});
if (!res.ok) return null;
const html = await res.text();
if (!html.includes('data-pit-footer')) return null;
return <div dangerouslySetInnerHTML={{ __html: html }} />;
} catch {
return null;
}
}
5 changes: 5 additions & 0 deletions sites/sh1pt.com/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,8 @@ section:last-child { border-bottom: 0; }
text-shadow: 0 0 24px rgba(194, 255, 61, 0.75), 0 0 4px rgba(194, 255, 61, 0.9);
margin-left: 0.06em;
}

.site-footer { border-top: 1px solid var(--border, rgba(255,255,255,0.1)); margin-top: 3rem; font-size: 0.875rem; color: var(--muted); }
.site-footer .container { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.5rem 1.25rem; padding-top: 1.5rem; padding-bottom: 1.5rem; }
.site-footer a { color: inherit; text-decoration: none; }
.site-footer a:hover, .site-footer a:focus-visible { color: var(--fg, #fff); text-decoration: underline; }
26 changes: 12 additions & 14 deletions sites/sh1pt.com/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import RobautoPixel from './components/RobautoPixel';
import CrawlproofStats from './components/CrawlproofStats';
import { getSupabaseServerClient } from '@/lib/supabase/server';
import Script from "next/script";
import { Footer } from '@profullstack/footer/react';
import PitFooter from './components/PitFooter';

export const metadata = {
title: 'sh1pt — Build. Promote. Scale. Iterate…',
Expand Down Expand Up @@ -80,20 +80,18 @@ export default async function RootLayout({ children }: { children: ReactNode })
</nav>
</header>
{children}
<Footer
site="https://sh1pt.com/"
tagline="sh1pt is MIT-licensed."
links={[
{ label: 'Blog', href: '/blog' },
{ label: 'Investors', href: '/investors' },
{ label: 'Deck', href: '/deck' },
{ label: 'Waitlist', href: '/waitlist' },
{ label: 'Source', href: 'https://github.com/profullstack/sh1pt' },
{ label: 'vu1nz.com partner', href: 'https://vu1nz.com', rel: 'noopener noreferrer' },
]}
/>
<footer className="site-footer">
<div className="container">
<span>&copy; {new Date().getFullYear()} <a href="https://profullstack.com/">Profullstack, Inc.</a> · MIT licensed</span>
<a href="/docs">Docs</a>
<a href="/blog">Blog</a>
<a href="/investors">Investors</a>
<a href="https://github.com/profullstack/sh1pt">GitHub</a>
</div>
</footer>
<CrawlproofStats />
<Script src="https://crawlproof.com/ad.js" strategy="afterInteractive" />
<Script src="https://crawlproof.com/ad.js" strategy="afterInteractive" />
<PitFooter />
</body>
</html>
);
Expand Down
Loading