page.tsx93 lines · main
| 1 | import type { Metadata } from 'next'; |
| 2 | |
| 3 | import { ComparePage } from '../../../components/marketing/compare-page'; |
| 4 | import { getSessionUser } from '../../../lib/session'; |
| 5 | |
| 6 | export const metadata: Metadata = { |
| 7 | title: 'briven vs convex — feature comparison', |
| 8 | description: |
| 9 | 'briven vs convex: reactive queries on plain postgres vs convex's proprietary engine. honest tradeoffs.', |
| 10 | }; |
| 11 | |
| 12 | const ROWS = [ |
| 13 | { |
| 14 | feature: 'database', |
| 15 | briven: 'plain postgres 17 + pgvector. pg_dump is your escape hatch.', |
| 16 | other: "proprietary engine. exports to json but you can't pg_dump out.", |
| 17 | }, |
| 18 | { |
| 19 | feature: 'query language', |
| 20 | briven: 'typed query functions with auto-generated client. raw sql when you want it.', |
| 21 | other: 'typed convex functions; no raw sql.', |
| 22 | }, |
| 23 | { |
| 24 | feature: 'reactive subscriptions', |
| 25 | briven: 'listen/notify-based reactive queries on real postgres tables.', |
| 26 | other: 'first-class reactive queries (the pattern briven adopts).', |
| 27 | }, |
| 28 | { |
| 29 | feature: 'self-host', |
| 30 | briven: 'agpl-3.0 core. self-host the full engine on your own postgres.', |
| 31 | other: 'no self-host. cloud-only.', |
| 32 | }, |
| 33 | { |
| 34 | feature: 'pricing', |
| 35 | briven: '€0 free, €29 pro, €99 team. or free self-hosted forever.', |
| 36 | other: 'free tier + usage-based; team plan $25/mo + bandwidth + functions metering.', |
| 37 | }, |
| 38 | { |
| 39 | feature: 'export', |
| 40 | briven: 'one command (`briven export`) gives you the whole project as pg_dump + bundles.', |
| 41 | other: 'json export of records. functions and schema do not export.', |
| 42 | }, |
| 43 | { |
| 44 | feature: 'sql access', |
| 45 | briven: 'sql editor in studio. psql from the cli. postgres clients connect directly.', |
| 46 | other: 'no sql access. queries go through convex functions only.', |
| 47 | }, |
| 48 | { |
| 49 | feature: 'open source', |
| 50 | briven: 'agpl-3.0 engine, mit cli + sdks. development happens in public.', |
| 51 | other: 'closed source. cli + client sdks are open.', |
| 52 | }, |
| 53 | { |
| 54 | feature: 'auth', |
| 55 | briven: 'better-auth with magic link, oauth (google/github/discord), email+password built in.', |
| 56 | other: 'convex auth via clerk, auth0, or custom provider integration.', |
| 57 | }, |
| 58 | { |
| 59 | feature: 'file storage', |
| 60 | briven: 'minio (s3-compatible) bundled. point at your own s3/r2 in self-host.', |
| 61 | other: 'convex file storage (own engine).', |
| 62 | }, |
| 63 | ]; |
| 64 | |
| 65 | const WHEN_OTHER_WINS = [ |
| 66 | 'you want a fully managed nosql-like store with zero postgres concepts to learn.', |
| 67 | 'you prefer convex's richer ecosystem of templates, hosted demos, and pre-built integrations.', |
| 68 | 'you need the convex action runtime's specific timing characteristics (we're close, but not bit-identical).', |
| 69 | ]; |
| 70 | |
| 71 | const WHEN_BRIVEN_WINS = [ |
| 72 | 'you want your data in real postgres, exportable any day with pg_dump.', |
| 73 | 'you want to self-host. briven runs anywhere docker runs; convex doesn't self-host.', |
| 74 | 'you need sql, materialised views, triggers, extensions, or any other postgres feature.', |
| 75 | 'you care about data residency. briven runs in eu, single-region, on your hardware if you want.', |
| 76 | 'you want a flat fee, not usage-based pricing surprises.', |
| 77 | ]; |
| 78 | |
| 79 | export default async function ConvexComparePage() { |
| 80 | const user = await getSessionUser().catch(() => null); |
| 81 | return ( |
| 82 | <ComparePage |
| 83 | user={user} |
| 84 | otherName="convex" |
| 85 | oneline="reactive queries on plain postgres, not a proprietary engine." |
| 86 | intro="convex pioneered the reactive-queries pattern briven adopts. the difference is the floor: convex stores your data in its own engine, briven stores it in plain postgres. that one decision changes everything downstream — exports, self-host, sql access, data residency." |
| 87 | rows={ROWS} |
| 88 | whenOtherWins={WHEN_OTHER_WINS} |
| 89 | whenBrivenWins={WHEN_BRIVEN_WINS} |
| 90 | migrationGuideHref="https://docs.briven.tech/migration/convex" |
| 91 | /> |
| 92 | ); |
| 93 | } |