page.tsx27 lines · main
1import type { Metadata } from 'next';
2
3import { BackgroundGrid } from '../../components/marketing/background-grid';
4import { SiteFooter } from '../../components/marketing/site-footer';
5import { SiteHeader } from '../../components/marketing/site-header';
6import { getSessionUser } from '../../lib/session';
7import { PricingSection } from '../pricing-section';
8
9export const metadata: Metadata = {
10 title: 'pricing — briven',
11 description:
12 'briven pricing: free, pro €29, team €99 — flat fees, monthly buckets, no surprise upgrade walls. self-host free under agpl-3.0 or take a commercial licence.',
13};
14
15export default async function PricingPage() {
16 const user = await getSessionUser().catch(() => null);
17 return (
18 <main className="relative min-h-dvh overflow-hidden bg-[var(--color-bg)] text-[var(--color-text)]">
19 <BackgroundGrid />
20 <SiteHeader user={user} />
21 <div className="relative z-10">
22 <PricingSection />
23 </div>
24 <SiteFooter />
25 </main>
26 );
27}