diff --git a/apps/web/content/docs/registry.mdx b/apps/web/content/docs/registry.mdx index b454971..03c21b3 100644 --- a/apps/web/content/docs/registry.mdx +++ b/apps/web/content/docs/registry.mdx @@ -11,21 +11,24 @@ Inspired by [shadcn/ui](https://ui.shadcn.com), third parties can publish their A category has two independent properties: its **cardinality** — `one` (single-choice, like `framework` or `auth`) or `many` (coexisting, like `testing`) — and its **home**, where a module's output lands (`app`, `repo`, or `package`). See [Concepts](/docs/concepts#categories) for the full mental model. -| Category | Cardinality | Home | What it covers | -| ----------- | ----------- | ------- | ----------------------------------------------------------- | -| `framework` | one | app | App shell + router (Next, TanStack Start, Expo, …) | -| `api` | one | package | Typed RPC layer between framework and services | -| `ai` | one | package | AI SDK + provider wiring | -| `auth` | one | package | Authentication (Better Auth, Clerk, …) | -| `db` | one | package | Database driver (Postgres, SQLite) | -| `orm` | one | package | Schema + query layer (Drizzle, Prisma) | -| `ui` | one | package | Styling system + component primitives (Tailwind, shadcn, …) | -| `payments` | one | package | Checkout + webhooks (Stripe, Polar, …) | -| `email` | one | package | Transactional email (Resend) | -| `tooling` | one | repo | Lint/format toolchain | -| `testing` | many | app | Unit + e2e (Vitest, Playwright) | -| `deploy` | many | repo | Deploy targets (Vercel, Cloudflare, …) | -| `monorepo` | one | repo | Monorepo task runner (Turborepo) | +| Category | Cardinality | Home | What it covers | +| --------------- | ----------- | ------- | ---------------------------------------------- | +| `framework` | one | app | Web app shell + router | +| `api` | one | package | Typed RPC layer between framework and services | +| `ai` | one | package | AI SDK + provider wiring | +| `auth` | one | package | Authentication, user accounts | +| `db` | one | package | Database driver | +| `orm` | one | package | Schema + query layer | +| `ui` | one | package | Styling system + component primitives | +| `payments` | one | package | Checkout + webhooks | +| `email` | one | package | Transactional email | +| `storage` | one | package | Object / file storage | +| `observability` | many | app | Product analytics, error tracking | +| `analytics` | many | app | Privacy-friendly site analytics | +| `tooling` | one | repo | Lint/format toolchain | +| `testing` | many | app | Unit + E2E | +| `deploy` | many | repo | Deployment targets | +| `monorepo` | one | repo | Monorepo task runner | Single-choice categories with `home: "app"` (currently `framework`) are enforced **per app** — a multi-app project can pick `next` for the web app and `expo` for a native app side by side. See [Concepts → Apps](/docs/concepts#apps). @@ -69,6 +72,7 @@ Single-choice, installs into `packages/auth/`. | `better-auth` | 🟢 Available | Local data. Peers on `orm` and `framework`. | | `clerk` | 🟢 Available | Hosted database & UI. Peers on `framework`. | | `workos` | 🟨 Planned | WorkOS AuthKit. | +| `supabase` | 🟨 Planned | Supabase Auth; constrains `db`. | ## Database @@ -78,6 +82,8 @@ Single-choice, installs into `packages/db/`. | ---------- | ----------------- | ------------------------ | | `postgres` | 🟢 Available | `postgres` driver. | | `sqlite` | 🟢 Available | `better-sqlite3` driver. | +| `supabase` | 🟨 Planned | Hosted Postgres. | +| `turso` | 🟨 Planned | libSQL (edge SQLite). | ## ORM @@ -115,9 +121,40 @@ Single-choice, constraint-bearing. Installs into `packages/payments/`, plus a Be Single-choice, installs into `packages/email/`. -| Module | Status | Notes | -| -------- | ----------------- | ----------------------------------------------------------------------------------------------------- | -| `resend` | 🟢 Available | `resend` SDK + a sample `react-email` template; framework-native `/api/webhook/resend` Svix-verifier. | +| Module | Status | Notes | +| ---------- | ----------------- | ----------------------------------------------------------------------------------------------------- | +| `resend` | 🟢 Available | `resend` SDK + a sample `react-email` template; framework-native `/api/webhook/resend` Svix-verifier. | +| `postmark` | 🟨 Planned | `postmark` SDK + framework-native webhook handler. | + +## Storage + +Single-choice, installs into `packages/storage/`. + +| Module | Status | Notes | +| ------------- | --------------- | ------------------------------ | +| `s3` | 🟨 Planned | AWS S3 (`@aws-sdk/client-s3`). | +| `r2` | 🟨 Planned | Cloudflare R2 (S3-compatible). | +| `uploadthing` | 🟨 Planned | Managed uploads (UploadThing). | + +## Observability + +Coexisting, app-scoped. + +| Module | Status | Notes | +| --------- | --------------- | --------------------------------------- | +| `posthog` | 🟨 Planned | Product analytics, error tracking, etc. | +| `sentry` | 🟨 Planned | Heavier focus on error tracking | +| `axiom` | 🟨 Planned | Logs + event analytics. | + +## Analytics + +Coexisting, app-scoped — privacy-friendly site analytics, distinct from `observability`'s product analytics and error tracking. + +| Module | Status | Notes | +| ----------- | --------------- | --------------------------- | +| `plausible` | 🟨 Planned | Privacy-first, open source. | +| `umami` | 🟨 Planned | Self-hostable, open source. | +| `fathom` | 🟨 Planned | Privacy-first, hosted. | ## Tooling @@ -137,6 +174,7 @@ Coexisting, app-scoped. Vitest and Playwright are independent and routinely run | ------------ | ----------------- | ----------------------------------------------------------------- | | `vitest` | 🟢 Available | Unit + integration; `jsdom` + RTL; `test`/`test:watch` scripts. | | `playwright` | 🟢 Available | e2e; per-framework `webServer`; `test:e2e`/`test:e2e:ui` scripts. | +| `storybook` | 🟨 Planned | Component workshop + stories. | ## Deploy @@ -148,6 +186,9 @@ Coexisting, repo-scoped. | `cloudflare` | 🟨 Planned | Workers / Pages adapter per framework (e.g. Vite plugins, `wrangler.json`, …). | | `railway` | 🟨 Planned | `railway.toml` + Dockerfile. | | `docker` | 🟨 Planned | Generic `Dockerfile` + compose for self-host. | +| `netlify` | 🟨 Planned | `netlify.toml` + framework adapter. | +| `render` | 🟨 Planned | `render.yaml` + Dockerfile. | +| `fly` | 🟨 Planned | `fly.toml` + Dockerfile (Fly.io). | ## Monorepo diff --git a/apps/web/src/components/docs/docs-sidebar.tsx b/apps/web/src/components/docs/docs-sidebar.tsx index 8d7eb00..4bd8dd5 100644 --- a/apps/web/src/components/docs/docs-sidebar.tsx +++ b/apps/web/src/components/docs/docs-sidebar.tsx @@ -24,7 +24,7 @@ function NavLink({ url, name, pathname }: { url: string; name: ReactNode; pathna params={{ _splat: toSplat(url) }} aria-current={active ? "page" : undefined} className={cn( - "block rounded px-2 py-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", + "block px-2 py-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", active && "bg-accent font-medium text-accent-foreground", )} > @@ -82,7 +82,7 @@ export function DocsSidebar({ tree }: { tree: Root }) { <> {/* Mobile: a disclosure above the content so docs stay navigable < md. */}
- + Documentation