Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
29771e6
docs: v3 docs structure
ymc9 Aug 1, 2025
4a3bc18
fix build
ymc9 Aug 1, 2025
ae00828
WIP
ymc9 Aug 3, 2025
2815551
WIP
ymc9 Aug 3, 2025
f215f86
progress on ORM part
ymc9 Aug 5, 2025
a43c1d8
update
ymc9 Aug 5, 2025
f649467
update embed mechanism
ymc9 Aug 5, 2025
5cfdf6d
fix stackblitz embed
ymc9 Aug 5, 2025
2c526ff
make code tabs sync
ymc9 Aug 5, 2025
a9d76ec
complete filter section
ymc9 Aug 9, 2025
09208d3
update docs
ymc9 Aug 9, 2025
b61a2e0
progress on delete
ymc9 Aug 9, 2025
80a8026
Merge remote-tracking branch 'origin/main' into docs/v3
ymc9 Aug 10, 2025
7531a18
more progress on ORM API
ymc9 Aug 10, 2025
c608cf4
ORM docs progress
ymc9 Aug 12, 2025
710b83c
query builder docs
ymc9 Aug 12, 2025
f0014f0
computed fields
ymc9 Aug 13, 2025
016fc3d
polymorphism
ymc9 Aug 13, 2025
963d91f
plugins part
ymc9 Aug 13, 2025
dda23fc
update plugins part
ymc9 Aug 14, 2025
d7b5e4e
add logging
ymc9 Aug 14, 2025
e087eb8
add inferred types section
ymc9 Aug 15, 2025
617275e
progress
ymc9 Aug 15, 2025
6ff3510
progress
ymc9 Aug 17, 2025
22de9b9
prisma migration guide
ymc9 Aug 17, 2025
63d5c61
Merge remote-tracking branch 'origin/main' into docs/v3
ymc9 Aug 17, 2025
2fd667e
update broken links
ymc9 Aug 17, 2025
b9e6193
update
ymc9 Aug 17, 2025
1a2a102
copywriting
ymc9 Aug 18, 2025
847a11e
zmodel language reference
ymc9 Aug 19, 2025
ec14645
update
ymc9 Aug 19, 2025
3ebe44f
fix links
ymc9 Aug 19, 2025
f847870
almost done
ymc9 Aug 19, 2025
07209d7
updates
ymc9 Aug 19, 2025
16d96b1
update
ymc9 Aug 19, 2025
25822c8
update
ymc9 Aug 20, 2025
192910f
update
ymc9 Aug 21, 2025
db39b21
add feature gap
ymc9 Aug 24, 2025
3dc70c7
update
ymc9 Aug 24, 2025
2a1cbbb
use git submodules to implement code snippet loading
ymc9 Aug 24, 2025
2fe949a
addressing review comments
ymc9 Aug 24, 2025
7d880b0
update
ymc9 Aug 26, 2025
8c059c5
v3 LP
ymc9 Aug 29, 2025
790de90
update
ymc9 Aug 29, 2025
014cbbe
update
ymc9 Aug 29, 2025
1356842
update responsiveness
ymc9 Aug 29, 2025
99c6b5a
update
ymc9 Aug 29, 2025
0fdcf9c
update
ymc9 Aug 30, 2025
2e229b3
update
ymc9 Aug 30, 2025
6b9d453
update
ymc9 Aug 30, 2025
4bd1637
nav bar
ymc9 Sep 1, 2025
277f966
update
ymc9 Sep 1, 2025
0111abb
update submodules
ymc9 Sep 1, 2025
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
18 changes: 18 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[submodule "code-repos/zenstackhq/v3-doc-orm"]
path = code-repos/zenstackhq/v3-doc-orm
url = https://github.com/zenstackhq/v3-doc-orm.git
[submodule "code-repos/zenstackhq/v3-doc-orm-computed-fields"]
path = code-repos/zenstackhq/v3-doc-orm-computed-fields
url = https://github.com/zenstackhq/v3-doc-orm-computed-fields.git
[submodule "code-repos/zenstackhq/v3-doc-orm-computed-polymorphism"]
path = code-repos/zenstackhq/v3-doc-orm-computed-polymorphism
url = https://github.com/zenstackhq/v3-doc-orm-polymorphism.git
[submodule "code-repos/zenstackhq/v3-doc-orm-typed-json"]
path = code-repos/zenstackhq/v3-doc-orm-typed-json
url = https://github.com/zenstackhq/v3-doc-orm-typed-json.git
[submodule "code-repos/zenstackhq/v3-doc-quick-start"]
path = code-repos/zenstackhq/v3-doc-quick-start
url = https://github.com/zenstackhq/v3-doc-quick-start.git
[submodule "code-repos/zenstackhq/v3-doc-orm-polymorphism"]
path = code-repos/zenstackhq/v3-doc-orm-polymorphism
url = https://github.com/zenstackhq/v3-doc-orm-polymorphism.git
1 change: 1 addition & 0 deletions code-repos/zenstackhq/v3-doc-orm
Submodule v3-doc-orm added at bafb46
1 change: 1 addition & 0 deletions code-repos/zenstackhq/v3-doc-orm-computed-fields
1 change: 1 addition & 0 deletions code-repos/zenstackhq/v3-doc-orm-polymorphism
1 change: 1 addition & 0 deletions code-repos/zenstackhq/v3-doc-orm-typed-json
Submodule v3-doc-orm-typed-json added at 710d2c
1 change: 1 addition & 0 deletions code-repos/zenstackhq/v3-doc-quick-start
Submodule v3-doc-quick-start added at 0c8786
32 changes: 32 additions & 0 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ const config = {
label: '1.x',
banner: 'none',
},
'3.x': {
label: '3.0 Beta',
banner: 'none',
},
},
},
blog: false,
Expand All @@ -63,6 +67,12 @@ const config = {
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
{
announcementBar: {
id: 'v3_beta',
content:
'ZenStack v3 Beta is released 🚀. The new version has replaced Prisma with a brand new query engine. <a href="/v3">Check it out</a>',
isCloseable: true,
},
colorMode: {
defaultMode: 'light',
respectPrefersColorScheme: false,
Expand Down Expand Up @@ -99,6 +109,11 @@ const config = {
position: 'left',
label: 'Handbook',
},
{
to: 'v3',
position: 'left',
label: 'V3 Beta 🚀',
},
{ to: '/blog', label: 'Blog', position: 'left' },
{
href: 'https://discord.gg/Ykhr738dUe',
Expand Down Expand Up @@ -193,6 +208,23 @@ const config = {
},
],
},
{
title: 'FlatIcon Credits',
items: [
{
label: 'Endure',
href: 'https://www.flaticon.com/free-icons/endure',
},
{
label: 'Diagram by Kiranshastry',
href: 'https://www.flaticon.com/free-icons/diagram',
},
{
href: 'https://www.flaticon.com/free-icons/database',
label: 'Database by kerismaker',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} ZenStack, Inc.`,
},
Expand Down
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
"typecheck": "tsc",
"pull-submodules": "git submodule foreach git pull origin main"
},
"dependencies": {
"@algolia/client-search": "^4.22.1",
Expand All @@ -22,12 +23,15 @@
"@docusaurus/theme-mermaid": "3.4.0",
"@giscus/react": "^2.4.0",
"@mdx-js/react": "^3.0.1",
"@stackblitz/sdk": "^1.11.0",
"autoprefixer": "^10.4.13",
"clsx": "^1.2.1",
"is-mobile": "^5.0.0",
"postcss": "^8.4.21",
"prism-react-renderer": "^2.3.1",
"prism-svelte": "^0.5.0",
"prismjs": "^1.29.0",
"raw-loader": "^4.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^5.0.1",
Expand Down
31 changes: 31 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 27 additions & 0 deletions src/components/GithubCodeBlock.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import CodeBlock from '@theme/CodeBlock';

interface GithubCodeBlockProps {
repoPath: string;
file: string;
}

const GithubCodeBlock: React.FC<GithubCodeBlockProps> = ({ repoPath, file }) => {
const code = require(`!!raw-loader!@site/code-repos/${repoPath}/${file}`).default;

const getLanguage = (file: string): string => {
if (file.endsWith('.ts')) {
return 'typescript';
} else if (file.endsWith('.zmodel')) {
return 'zmodel';
} else {
return 'plaintext';
}
};
return (
<CodeBlock language={getLanguage(file)} title={file}>
{code}
</CodeBlock>
);
};

export default GithubCodeBlock;
26 changes: 26 additions & 0 deletions src/components/StackBlitzEmbed.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React, { useEffect, useRef } from 'react';
import sdk from '@stackblitz/sdk';

interface StackBlitzEmbedProps {
projectId: string;
height?: string;
}

const StackBlitzEmbed: React.FC<StackBlitzEmbedProps> = ({ projectId, height = '600px' }) => {
const containerRef = useRef<HTMLDivElement>(null);

useEffect(() => {
if (containerRef.current) {
sdk.embedProjectId(containerRef.current, projectId, {
openFile: 'main.ts',
height,
view: 'editor',
forceEmbedLayout: true,
});
}
}, [projectId, height]);

return <div ref={containerRef} style={{ width: '100%', height }} />;
};

export default StackBlitzEmbed;
44 changes: 44 additions & 0 deletions src/components/StackBlitzGithub.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import sdk from '@stackblitz/sdk';
import React from 'react';
import GithubCodeBlock from './GithubCodeBlock';

interface StackBlitzGithubProps {
repoPath: string;
openFile?: string;
codeFiles?: string[];
startScript?: string;
}

const StackBlitzGithub: React.FC<StackBlitzGithubProps> = ({
repoPath,
openFile = 'main.ts',
codeFiles: plainCodeFiles = undefined,
startScript,
}) => {
const options = {
openFile,
view: 'editor',
startScript,
} as const;

if (!plainCodeFiles) {
plainCodeFiles = [openFile];
}

return (
<>
<div className="mb-1 italic text-sm">
Click{' '}
<a href="#" onClick={() => sdk.openGithubProject(repoPath, options)}>
here
</a>{' '}
to open an interactive playground.
</div>
{plainCodeFiles.map((file) => (
<GithubCodeBlock key={file} repoPath={repoPath} file={file} />
))}
</>
);
};

export default StackBlitzGithub;
6 changes: 3 additions & 3 deletions src/components/ValueProposition.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ const FeatureList: FeatureItem[] = [
img: '/img/ai-friendly.png',
description: (
<>
Schema-first reduces code complexity, helping AI understand better with fewer hallucinations.
Schema serves as a single source of truth for AI integration.
Schema-first reduces code complexity, helping AI understand better with fewer hallucinations. Schema
serves as a single source of truth for AI integration.
</>
),
},
Expand All @@ -47,7 +47,7 @@ function Proposition({ title, img, description }: FeatureItem) {
<img className="w-48 p-10" src={img} alt={title} />
</div>
<div className="text--center padding-horiz--md">
<h3 className="text-xl text-bold text-center lg:text-2xl text-gray-700 dark:text-gray-300">{title}</h3>
<h3 className="text-xl text-center lg:text-2xl text-gray-700 dark:text-gray-300">{title}</h3>
<p className="text-center text-base lg:text-lg text-gray-600 dark:text-gray-400">{description}</p>
</div>
</div>
Expand Down
17 changes: 17 additions & 0 deletions src/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,20 @@
right: 0;
pointer-events: mouse;
}

@media (max-width: 1200px) {
.navbar__items--right,
.navbar__items--left {
display: none;
}

.navbar__toggle {
display: inherit;
}
}

@media (min-width: 1201px) {
.navbar__toggle {
display: none;
}
}
15 changes: 3 additions & 12 deletions src/lib/prism-zmodel.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
Prism.languages.zmodel = Prism.languages.extend('clike', {
keyword: /\b(?:datasource|enum|generator|model|type|abstract|import|extends|attribute|view|plugin|proc)\b/,
function: /@@?[A-Za-z_]\w*/,
keyword: /\b(?:datasource|enum|generator|model|type|abstract|import|extends|attribute|view|plugin|proc|with)\b/,
entity: /\b(?:Int|String|Boolean|DateTime|Float|Decimal|BigInt|Bytes|Json|Unsupported)\b/,
'type-class-name': /(\b()\s+)[\w.\\]+/,
});

Prism.languages.javascript['class-name'][0].pattern =
/(\b(?:model|datasource|enum|generator|type|plugin|abstract)\s+)[\w.\\]+/;

Prism.languages.insertBefore('zmodel', 'function', {
annotation: {
pattern: /(^|[^.])@+\w+/,
lookbehind: true,
alias: 'punctuation',
},
});

Prism.languages.insertBefore('zmodel', 'punctuation', {
'type-args': /\b(?:references|fields|onDelete|onUpdate):/,
});
Expand Down
Loading