mirror of
https://github.com/clockworklabs/SpacetimeDB.git
synced 2026-05-10 17:49:49 -04:00
73881e38f7
# Description of Changes Major documentation overhaul focusing on tables, column types, and indexes. **Quickstart Guides:** - Updated React, TypeScript, Rust, and C# quickstarts with table/reducer examples - Fixed CLI syntax (positional `--database` argument) - Improved template consistency across languages **Tables Documentation:** - Added "Why Tables" section explaining table-oriented design philosophy (tables as fundamental unit, system tables, data-oriented design principles) - Added "Physical and Logical Independence" section explaining how subscription queries use the relational model independently of physical storage - Added brief sections linking to related pages (Visibility, Constraints, Schedule Tables) - Renamed "Scheduled Tables" to "Schedule Tables" throughout (tables store schedules; reducers are scheduled) **Column Types:** - Split into dedicated page with unified type reference table - Added "Representing Collections" section (Vec/Array vs table tradeoffs) - Added "Binary Data and Files" section for Vec<u8> storage patterns - Added "Type Performance" section (smaller types, fixed-size types, column ordering for alignment) - Added complete example struct demonstrating all type categories - Renamed "Structured" category to "Composite" **Indexes:** - Complete rewrite with textbook-style documentation - Added "When to Use Indexes" guidance - Documented single-column and multi-column index syntax (field-level and table-level) - Comprehensive range query examples with correct TypeScript `Range` class syntax - Explained multi-column index prefix matching semantics - Added index-accelerated deletion examples - Included index design guidelines **Styling:** - Added CSS for table border radius and row separators - Created Check component for green checkmarks in tables # API and ABI breaking changes None. Documentation only. # Expected complexity level and risk 1 - Documentation changes only, no code changes. # Testing - [ ] Verify docs build without errors - [ ] Review rendered pages for formatting issues - [ ] Confirm code examples are syntactically correct --------- Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Signed-off-by: John Detter <4099508+jdetter@users.noreply.github.com> Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com>
210 lines
5.2 KiB
TypeScript
210 lines
5.2 KiB
TypeScript
import type { Config } from '@docusaurus/types';
|
|
import type * as Preset from '@docusaurus/preset-classic';
|
|
import rehypeShiki, { RehypeShikiOptions } from '@shikijs/rehype';
|
|
import bash from 'shiki/langs/bash.mjs';
|
|
import c from 'shiki/langs/c.mjs';
|
|
import csharp from 'shiki/langs/csharp.mjs';
|
|
import fsharp from 'shiki/langs/fsharp.mjs';
|
|
import json from 'shiki/langs/json.mjs';
|
|
import markdown from 'shiki/langs/markdown.mjs';
|
|
import protobuf from 'shiki/langs/proto.mjs';
|
|
import python from 'shiki/langs/python.mjs';
|
|
import rust from 'shiki/langs/rust.mjs';
|
|
import sql from 'shiki/langs/sql.mjs';
|
|
import toml from 'shiki/langs/toml.mjs';
|
|
import typescript from 'shiki/langs/typescript.mjs';
|
|
import tsx from 'shiki/langs/tsx.mjs';
|
|
import css from 'shiki/langs/css.mjs';
|
|
import nginx from 'shiki/langs/nginx.mjs';
|
|
import systemd from 'shiki/langs/systemd.mjs';
|
|
import ogTheme from 'shiki/themes/dracula.mjs';
|
|
import cpp from 'shiki/langs/cpp.mjs';
|
|
import { InkeepConfig } from '@inkeep/cxkit-docusaurus';
|
|
|
|
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
|
|
|
|
const shikiTheme = {
|
|
...ogTheme,
|
|
name: 'spacetime-dark',
|
|
};
|
|
shikiTheme.colors!['editor.background'] =
|
|
'var(--clockworklabs-code-background-color)';
|
|
|
|
const inkeepConfig: Partial<InkeepConfig> = {
|
|
baseSettings: {
|
|
// This API key is public, it's okay to have it in client code, https://docs.inkeep.com/cloud/ui-components/public-api-keys#public-clients
|
|
apiKey: '13504c49fb56b7c09a5ea0bcd68c2b55857661be4d6d311b',
|
|
organizationDisplayName: 'SpacetimeDB',
|
|
primaryBrandColor: '#4cf490',
|
|
colorMode: {
|
|
forcedColorMode: 'dark',
|
|
},
|
|
},
|
|
};
|
|
|
|
const config: Config = {
|
|
title: 'SpacetimeDB docs',
|
|
tagline: 'SpacetimeDB',
|
|
favicon: 'https://spacetimedb.com/favicon-32x32.png',
|
|
|
|
url: 'https://spacetimedb.com',
|
|
// this means the site is served at https://spacetimedb.com/docs/
|
|
baseUrl: '/docs/',
|
|
|
|
onBrokenLinks: 'throw',
|
|
onBrokenAnchors: 'throw',
|
|
markdown: {
|
|
hooks: {
|
|
onBrokenMarkdownImages: 'throw',
|
|
onBrokenMarkdownLinks: 'throw',
|
|
},
|
|
},
|
|
|
|
i18n: {
|
|
defaultLocale: 'en',
|
|
locales: ['en'],
|
|
},
|
|
|
|
clientModules: [
|
|
require.resolve('./src/client-modules/fonts'),
|
|
require.resolve('./src/client-modules/inkeep-font-override'),
|
|
],
|
|
|
|
headTags: [
|
|
{
|
|
tagName: 'link',
|
|
attributes: {
|
|
rel: 'preload',
|
|
as: 'font',
|
|
type: 'font/woff2',
|
|
href: '/docs/fonts/inter-latin-wght-normal.woff2',
|
|
crossorigin: 'anonymous',
|
|
},
|
|
},
|
|
{
|
|
tagName: 'link',
|
|
attributes: {
|
|
rel: 'preload',
|
|
as: 'font',
|
|
type: 'font/woff2',
|
|
href: '/docs/fonts/source-code-pro-latin-wght-normal.woff2',
|
|
crossorigin: 'anonymous',
|
|
},
|
|
},
|
|
],
|
|
|
|
presets: [
|
|
[
|
|
'classic',
|
|
{
|
|
docs: {
|
|
editUrl:
|
|
'https://github.com/clockworklabs/SpacetimeDB/edit/master/docs/',
|
|
routeBasePath: '/',
|
|
sidebarPath: './sidebars.ts',
|
|
sidebarCollapsed: false,
|
|
beforeDefaultRehypePlugins: [
|
|
[
|
|
rehypeShiki,
|
|
{
|
|
theme: shikiTheme,
|
|
langs: [
|
|
sql,
|
|
rust,
|
|
csharp,
|
|
markdown,
|
|
typescript,
|
|
bash,
|
|
json,
|
|
toml,
|
|
python,
|
|
c,
|
|
cpp,
|
|
protobuf,
|
|
fsharp,
|
|
systemd,
|
|
tsx,
|
|
css,
|
|
nginx,
|
|
],
|
|
} satisfies RehypeShikiOptions,
|
|
],
|
|
],
|
|
},
|
|
blog: false,
|
|
theme: {
|
|
customCss: './src/css/custom.css',
|
|
},
|
|
} satisfies Preset.Options,
|
|
],
|
|
],
|
|
|
|
themeConfig: {
|
|
navbar: {
|
|
logo: {
|
|
alt: 'SpacetimeDB Logo',
|
|
src: 'https://spacetimedb.com/images/brand.svg',
|
|
href: 'https://spacetimedb.com',
|
|
target: '_self',
|
|
},
|
|
hideOnScroll: false,
|
|
items: [
|
|
{ type: 'search', position: 'left' },
|
|
{
|
|
href: 'https://spacetimedb.com/install',
|
|
label: 'Install',
|
|
position: 'right',
|
|
},
|
|
{
|
|
href: 'https://spacetimedb.com/pricing',
|
|
label: 'Pricing',
|
|
position: 'right',
|
|
},
|
|
{
|
|
href: 'https://spacetimedb.com/blog',
|
|
label: 'Blog',
|
|
position: 'right',
|
|
},
|
|
{
|
|
href: 'https://spacetimedb.com/community',
|
|
label: 'Community',
|
|
position: 'right',
|
|
},
|
|
{
|
|
href: 'https://spacetimedb.com/spacerace',
|
|
label: 'Spacerace',
|
|
position: 'right',
|
|
},
|
|
{
|
|
href: 'https://spacetimedb.com/login',
|
|
label: 'Login',
|
|
position: 'right',
|
|
className: 'navbar__button',
|
|
},
|
|
],
|
|
},
|
|
footer: {},
|
|
prism: {},
|
|
colorMode: {
|
|
disableSwitch: true,
|
|
defaultMode: 'light',
|
|
},
|
|
} satisfies Preset.ThemeConfig,
|
|
|
|
plugins: [
|
|
[
|
|
'@inkeep/cxkit-docusaurus',
|
|
{
|
|
SearchBar: {
|
|
...inkeepConfig,
|
|
},
|
|
ChatButton: {
|
|
...inkeepConfig,
|
|
},
|
|
},
|
|
],
|
|
],
|
|
};
|
|
|
|
export default config;
|