Skip to content

docs: website update #1878

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jul 25, 2025
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
2 changes: 1 addition & 1 deletion LICENSE → LICENSE-MPL.txt
Original file line number Diff line number Diff line change
Expand Up @@ -370,4 +370,4 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------

This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.
defined by the Mozilla Public License, v. 2.0.
5 changes: 5 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
BlockNote is 100% Open Source Software.

Source code in this repository is covered by the "Mozilla Public License Version 2.0" (MPL-2.0) license, except for the XL packages. The MPL-2.0 license allows you to use BlockNote in commercial (and closed-source) applications. If you make changes to the BlockNote source files, you're expected to publish these changes so the wider community can benefit as well.

The XL packages (source code in the `packages/xl-*` directories and published in NPM as `@blocknote/xl-*`) are licensed under the "GNU Affero General Public License Version 3" (AGPL-3.0). Additionally, a commercial license is available. See our website (https://www.blocknotejs.org/pricing) for more information and the commercial license terms.
32 changes: 7 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,12 @@ Welcome to BlockNote! The open source Block-Based
React rich text editor. Easily add a modern text editing experience to your app.
</p>

<p align="center">
<a href="https://discord.gg/Qc2QTTH5dF"><img alt="Discord" src="https://img.shields.io/badge/Chat on discord%20-%237289DA.svg?&style=for-the-badge&logo=discord&logoColor=white"/></a>
</p>

<p align="center">
<a href="https://www.blocknotejs.org">
Homepage
</a> - <a href="https://www.blocknotejs.org/docs/introduction">
</a> - <a href="https://www.blocknotejs.org/docs">
Documentation
</a> - <a href="https://www.blocknotejs.org/docs/quickstart">
</a> - <a href="https://www.blocknotejs.org/docs/getting-started">
Quickstart
</a>- <a href="https://www.blocknotejs.org/examples">
Examples
Expand Down Expand Up @@ -48,8 +44,6 @@ function App() {

`@blocknote/react` comes with a fully styled UI that makes it an instant, polished editor ready to use in your app.

If you prefer to create your own UI components (menus), or don't want to use React, you can use `@blocknote/core` (_advanced_, [see docs](https://www.blocknotejs.org/docs/vanilla-js)).

# Features

BlockNote comes with a number of features and components to make it easy to embed a high-quality block-based editor in your app:
Expand Down Expand Up @@ -84,31 +78,19 @@ BlockNote comes with a number of features and components to make it easy to embe

# Feedback 🙋‍♂️🙋‍♀️

We'd love to hear your thoughts and see your experiments, so [come and say hi on Discord](https://discord.gg/Qc2QTTH5dF) or [Matrix](https://matrix.to/#/#typecell-space:matrix.org).
We'd love to hear your thoughts and see your experiments, so [come and say hi on Discord](https://discord.gg/Qc2QTTH5dF).

# Contributing 🙌

See [CONTRIBUTING.md](CONTRIBUTING.md) for more info and guidance on how to run the project (TLDR: just use `npm start`).

Directory structure:

```
blocknote
├── packages/core - The core of the editor
├── packages/react - The main library for use in React apps
├── packages/mantine - Mantine (default) implementation of BlockNote UI
├── packages/ariakit - AriaKit implementation of BlockNote UI
├── packages/shadcn - ShadCN / Tailwind / Radix implementation of BlockNote UI
├── examples - Example apps
├── playground - App to browse the example apps (https://playground.blocknotejs.org)
└── tests - Playwright end to end tests
```
See [CONTRIBUTING.md](CONTRIBUTING.md) for more info and guidance on how to run the project (TLDR: just use `pnpm start`).

The codebase is automatically tested using Vitest and Playwright.

# License 📃

BlockNote is licensed under the [MPL 2.0 license](https://fossa.com/blog/open-source-software-licenses-101-mozilla-public-license-2-0/), which allows you to use BlockNote in commercial (and closed-source) applications. If you make changes to the BlockNote source files, you're expected to publish these changes so the wider community can benefit as well.
BlockNote is 100% Open Source Software. The majority of BlockNote is licensed under the [MPL-2.0 license](LICENSE-MPL.txt), which allows you to use BlockNote in commercial (and closed-source) applications. If you make changes to the BlockNote source files, you're expected to publish these changes so the wider community can benefit as well. [Learn more](https://fossa.com/blog/open-source-software-licenses-101-mozilla-public-license-2-0/).

The XL packages (source code in the `packages/xl-*` directories and published in NPM as `@blocknote/xl-*`) are licensed under the AGPL-3.0. If you cannot comply with this license and want to use the XL libraries, you'll need a commercial license. Refer to [our website](https://www.blocknotejs.org/pricing) for more information.

# Credits ❤️

Expand Down
12 changes: 9 additions & 3 deletions docs/app/(home)/faq/FAQ.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const faqs = [
{
id: 2,
question: "Is BlockNote ready for production use?",
answer: `BlockNote is used by several companies in production. Also, we didn't reinvent the wheel. The core editor is built on top of Prosemirror - a battle tested framework that powers software from Atlassian, Gitlab, the New York Times, and many others.`,
answer: `BlockNote is used by dozens of companies in production, ranging from startups to large enterprises and public institutions. Also, we didn't reinvent the wheel. The core editor is built on top of Prosemirror - a battle tested framework that powers software from Atlassian, Gitlab, the New York Times, and many others.`,
},
{
id: 3,
Expand All @@ -23,8 +23,14 @@ const faqs = [
{
id: 4,
question: "Is BlockNote really free?",
answer: `100% of BlockNote is open source. While the library is free, we offer paid consultancy and support services to help sustain BlockNote.
If you are using BlockNote in a commercial project, we encourage to sign up for BlockNote Pro!`,
answer: (
<>
100% of BlockNote is open source. We offer consultancy, support services
and commercial licenses for specific XL packages to help sustain
BlockNote. Explore our <a href="/pricing">pricing page</a> for more
details.
</>
),
},
];

Expand Down
46 changes: 23 additions & 23 deletions docs/app/(home)/letter/Letter.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import cn from "classnames";
import CTAButton from "@/components/CTAButton";
import { Section } from "@/components/Section";
import { FadeIn } from "@/components/FadeIn";
import { HeroText } from "@/components/Headings";
import { Section } from "@/components/Section";
import gradients from "@/components/gradients.module.css";
import cn from "classnames";

export function Letter() {
return (
Expand All @@ -18,33 +18,33 @@ export function Letter() {
</FadeIn>
<FadeIn className="flex flex-col gap-3 leading-6 md:text-lg">
<p>
When we started building an Open Source Notion alternative, we
figured: &quot;How hard can it be?&quot;. Pretty hard, it turns out.
Text editors in 2024? More complex than we thought.
Building a modern, collaborative text editor is a complex
engineering challenge that used to take months of work, deep
technical expertise and a lot of patience - only within reach of the
largest companies.
</p>
<br />
<p>
After going down many rabbit holes and becoming accidental wizards
in Prosemirror (the industry standard used by giants like NY Times,
Atlassian, Gitlab and many others), we figured that we could save
other devs a lot of pain by creating a modern, batteries-included,
block-based text editor on top of it.
Leveraging our expertise, we set out to save developers months of
engineering work by creating a modern, batteries-included
block-based text editor built on top of industry standards like
Prosemirror and Yjs (used by giants like NY Times, Atlassian,
Wordpress, Gitlab and many others).
</p>
<br />
<p>Enter BlockNote.</p>
<p>
We&apos;re excited to share BlockNote with you. No more dealing with
low-level positions; use the strongly typed, block-based API to work
with your editor and documents. No need to build all interface
elements from scratch; it comes with modern UI components
out-of-the-box. Now, you can add a rich text editor with a polished
UX to your app with just a few lines of code.
BlockNote eliminates the need to deal with low-level details around
text positions and document structure. Instead, work with the
strongly typed, block-based API to work with your editor and
documents. You also get a full set of modern UI components
out-of-the-box: no need to build all interface elements from
scratch. With just a few lines of code, you can integrate a
polished, collaborative text editor into your app.
</p>
<br />
<p>
It&apos;s early days, but the excitement is real. We&apos;re seeing
a mix of companies, enthusiasts, and community heroes jumping in. As
a community-led open source project, we&apos;re looking forward to
your contributions, feedback, or collaboration!
Supported by an active and growing community of companies and
developers, we invite you to contribute, provide feedback, and
partner with us to shape the future of rich text editing and
collaborative software!
</p>
</FadeIn>
<FadeIn className="relative h-px w-full" noVertical viewTriggerOffset>
Expand Down
42 changes: 42 additions & 0 deletions docs/app/legal/blocknote-xl-commercial-license/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import CTAButton from "@/components/CTAButton";
import GitHubButton from "@/components/GitHubButton";
import { source } from "@/lib/source/pages";
import { getFullMetadata } from "@/util/getFullMetadata";
import { getMDXComponents } from "@/util/mdx-components";
import { DocsBody } from "fumadocs-ui/page";
import { notFound } from "next/navigation";

export default async function BlocknoteXlCommercialLicensePage() {
const page = source.getPage(["blocknote-xl-commercial-license"]);
if (!page) {
notFound();
}
const MDXContent = page.data.body;

return (
<div className="mx-auto max-w-3xl pt-8">
<DocsBody>
<MDXContent
components={getMDXComponents({
GitHubButton,
CTAButton,
})}
/>
</DocsBody>
</div>
);
}

export async function generateMetadata() {
const page = source.getPage(["blocknote-xl-commercial-license"]);
if (!page) {
notFound();
}

return getFullMetadata({
title: page.data.title,
description: page.data.description,
path: page.url,
ogImageTitle: page.data.imageTitle,
});
}
13 changes: 13 additions & 0 deletions docs/app/legal/service-level-agreement/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { HomeLayout } from "fumadocs-ui/layouts/home";
import type { ReactNode } from "react";
import { baseOptions } from "@/app/layout.config";
import { Footer } from "@/components/Footer";

export default function Layout({ children }: { children: ReactNode }) {
return (
<>
<HomeLayout {...baseOptions}>{children}</HomeLayout>
<Footer />
</>
);
}
42 changes: 42 additions & 0 deletions docs/app/legal/service-level-agreement/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import CTAButton from "@/components/CTAButton";
import GitHubButton from "@/components/GitHubButton";
import { source } from "@/lib/source/pages";
import { getFullMetadata } from "@/util/getFullMetadata";
import { getMDXComponents } from "@/util/mdx-components";
import { DocsBody } from "fumadocs-ui/page";
import { notFound } from "next/navigation";

export default async function ServiceLevelAgreementPage() {
const page = source.getPage(["service-level-agreement"]);
if (!page) {
notFound();
}
const MDXContent = page.data.body;

return (
<div className="mx-auto max-w-3xl pt-8">
<DocsBody>
<MDXContent
components={getMDXComponents({
GitHubButton,
CTAButton,
})}
/>
</DocsBody>
</div>
);
}

export async function generateMetadata() {
const page = source.getPage(["service-level-agreement"]);
if (!page) {
notFound();
}

return getFullMetadata({
title: page.data.title,
description: page.data.description,
path: page.url,
ogImageTitle: page.data.imageTitle,
});
}
13 changes: 13 additions & 0 deletions docs/app/legal/terms-and-conditions/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { HomeLayout } from "fumadocs-ui/layouts/home";
import type { ReactNode } from "react";
import { baseOptions } from "@/app/layout.config";
import { Footer } from "@/components/Footer";

export default function Layout({ children }: { children: ReactNode }) {
return (
<>
<HomeLayout {...baseOptions}>{children}</HomeLayout>
<Footer />
</>
);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import GitHubButton from "@/components/GitHubButton";
import CTAButton from "@/components/CTAButton";
import GitHubButton from "@/components/GitHubButton";
import { source } from "@/lib/source/pages";
import { getFullMetadata } from "@/util/getFullMetadata";
import { getMDXComponents } from "@/util/mdx-components";
Expand Down
Loading
Loading