clean up ai code. looks pretty good

This commit is contained in:
2026-01-13 14:31:12 -06:00
parent 9819b14e71
commit 70273af0d9
23 changed files with 133 additions and 49 deletions

View File

@@ -1,3 +1,4 @@
import Image from 'next/image';
import Link from 'next/link';
import { Button } from '@gib/ui/button';
@@ -15,15 +16,18 @@ export function CTA() {
everything pre-configured.
</p>
<div className="flex flex-col justify-center gap-3 sm:flex-row">
<Button size="lg" asChild>
<Link href="/sign-in">Get Started Free</Link>
</Button>
<Button size="lg" variant="outline" asChild>
<Link
href="https://git.gbrown.org/gib/convex-monorepo"
target="_blank"
rel="noopener noreferrer"
>
<Image
src='/misc/gitea/gitea.svg'
alt='Gitea'
width={20}
height={20}
/>
View Source Code
</Link>
</Button>
@@ -40,7 +44,7 @@ export function CTA() {
<br />
cd convex-monorepo
<br />
bun install
bun i
</code>
</div>
</div>

View File

@@ -2,7 +2,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@gib/ui/card';
const features = [
{
title: 'Turborepo Monorepo',
title: 'Turborepo',
description:
'Efficient build system with intelligent caching. Share code between web and mobile apps seamlessly.',
icon: '⚡',
@@ -76,8 +76,8 @@ export function Features() {
<div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
{features.map((feature) => (
<Card key={feature.title} className="border-border/40">
<CardHeader>
<div className="mb-2 text-4xl">{feature.icon}</div>
<CardHeader className='flex items-center gap-2'>
<div className="mb-2 text-3xl">{feature.icon}</div>
<CardTitle className="text-xl">{feature.title}</CardTitle>
</CardHeader>
<CardContent>

View File

@@ -1,6 +1,11 @@
import Link from 'next/link';
import { Button } from '@gib/ui/button';
import { Kanit } from 'next/font/google';
const kanitSans = Kanit({
subsets: ['latin'],
weight: ['400', '500', '600', '700'],
});
export function Hero() {
return (
@@ -13,10 +18,10 @@ export function Hero() {
</div>
{/* Heading */}
<h1 className="from-foreground to-foreground/70 bg-gradient-to-br bg-clip-text text-4xl font-bold tracking-tight text-transparent sm:text-5xl md:text-6xl lg:text-7xl">
<h1 className="from-foreground to-foreground/70 bg-linear-to-br bg-clip-text text-4xl font-bold tracking-tight text-transparent sm:text-5xl md:text-6xl lg:text-7xl">
Build Full-Stack Apps with{' '}
<span className="to-accent-foreground bg-gradient-to-r from-[#281A65] via-[#363354] bg-clip-text text-transparent dark:from-[#bec8e6] dark:via-[#F0EEE4] dark:to-[#FFF8E7]">
Convex Monorepo
<span className={`${kanitSans.className} to-accent-foreground bg-linear-to-r from-[#281A65] via-[#363354] bg-clip-text text-transparent dark:from-[#bec8e6] dark:via-[#F0EEE4] dark:to-[#FFF8E7] sm:text-6xl md:text-7xl lg:text-8xl`}>
convex monorepo
</span>
</h1>

View File

@@ -1,4 +1,10 @@
import Link from 'next/link';
import { Kanit } from 'next/font/google';
const kanitSans = Kanit({
subsets: ['latin'],
weight: ['400', '500', '600', '700'],
});
export default function Footer() {
return (
@@ -7,11 +13,13 @@ export default function Footer() {
<div className="grid gap-8 md:grid-cols-4">
{/* Brand */}
<div className="md:col-span-2">
<h3 className="mb-2 text-lg font-bold">Convex Monorepo</h3>
<h3 className={`mb-2 text-3xl font-bold ${kanitSans.className}`}>convex monorepo</h3>
<p className="text-muted-foreground text-sm">
A production-ready Turborepo starter with Next.js, Expo, and
self-hosted Convex backend. Built for developers who want complete
control.
a self-hosted Convex backend, including Convex Auth with a
custom useSend email provider to ensure everything can be
self-hosted. Built for developers who want complete control
without sacrificing ease of use.
</p>
</div>
@@ -26,7 +34,7 @@ export default function Footer() {
rel="noopener noreferrer"
className="text-muted-foreground hover:text-foreground transition-colors"
>
GitHub Repository
Gitea Repository
</Link>
</li>
<li>
@@ -100,9 +108,8 @@ export default function Footer() {
rel="noopener noreferrer"
className="hover:text-foreground font-medium transition-colors"
>
Gib
Gib.
</Link>
. Open source under MIT License.
</p>
</div>
</div>

View File

@@ -3,54 +3,65 @@
import type { ComponentProps } from 'react';
import Image from 'next/image';
import Link from 'next/link';
import { Kanit } from 'next/font/google';
import { Coffee, Server, Wrench } from 'lucide-react';
const kanitSans = Kanit({
subsets: ['latin'],
weight: ['400', '500', '600', '700'],
});
import { Controls } from './controls';
export default function Header(headerProps: ComponentProps<'header'>) {
return (
<header
className="border-border/40 bg-background/95 supports-[backdrop-filter]:bg-background/60 sticky top-0 z-50 w-full border-b backdrop-blur"
className="border-border/40 bg-background/95 supports-backdrop-filter:bg-background/60 sticky top-0 z-50 w-full border-b backdrop-blur"
{...headerProps}
>
<div className="container mx-auto flex h-16 items-center justify-between px-4 md:px-6">
{/* Logo */}
<Link
href="/"
className="flex items-center gap-2 transition-opacity hover:opacity-80"
className="flex items-center gap-2 transition-opacity hover:opacity-80 to-accent-foreground bg-linear-to-r from-[#281A65] via-[#363354] bg-clip-text text-transparent dark:from-[#bec8e6] dark:via-[#F0EEE4] dark:to-[#FFF8E7]"
>
<Image
src="/favicon.ico"
src="/misc/convex/convex-symbol-white.svg"
alt="Convex Monorepo"
width={32}
height={32}
className="h-8 w-8"
width={50}
height={50}
className='invert dark:invert-0'
/>
<span className="hidden text-lg font-bold sm:inline-block">
Convex Monorepo
<span className={`hidden lg:text-5xl lg:inline mb-3 font-extrabold ${kanitSans.className}`}>
convex monorepo
</span>
</Link>
{/* Navigation */}
<nav className="hidden items-center gap-6 text-sm font-medium md:flex">
<nav className="hidden items-center gap-6 text-base font-medium md:flex">
<Link
href="/#features"
className="text-foreground/60 hover:text-foreground transition-colors"
className="text-foreground/60 hover:text-foreground transition-colors flex gap-2 items-center"
>
<Wrench width={18} height={18} />
Features
</Link>
<Link
href="/#tech-stack"
className="text-foreground/60 hover:text-foreground transition-colors"
className="text-foreground/60 hover:text-foreground transition-colors flex gap-2 items-center"
>
Tech Stack
<Server width={18} height={18} />
Stack
</Link>
<Link
href="https://git.gbrown.org/gib/convex-monorepo"
target="_blank"
rel="noopener noreferrer"
className="text-foreground/60 hover:text-foreground transition-colors"
className="text-foreground/60 hover:text-foreground transition-colors flex gap-2 items-center"
>
GitHub
<Coffee width={20} height={20} />
Repository
</Link>
</nav>

View File

@@ -35,10 +35,10 @@ export const generateMetadata = (): Metadata => {
},
icons: {
icon: [
{ url: '/favicon.ico', type: 'image/x-icon', sizes: 'any' },
{ url: '/favicon.png', type: 'image/png', sizes: 'any' },
{
url: '/favicon.ico',
type: 'image/x-icon',
url: '/favicon-light.png',
type: 'image/png',
sizes: 'any',
media: '(prefers-color-scheme: dark)',
},

View File

@@ -1,4 +1,4 @@
import { banSuspiciousIPs } from '@/lib/middleware/ban-sus-ips';
import { banSuspiciousIPs } from '@/lib/proxy/ban-sus-ips';
import {
convexAuthNextjsMiddleware,
createRouteMatcher,