feat: Added Docs & Blog Integration with Navigation#1583
feat: Added Docs & Blog Integration with Navigation#1583JagjeevanAK wants to merge 20 commits intoMail-0:stagingfrom JagjeevanAK:jagjeeva/docs
Conversation
Signed-off-by: Jagjeevan Kashid <jagjeevandev97@gmail.com>
Signed-off-by: Jagjeevan Kashid <jagjeevandev97@gmail.com>
Signed-off-by: Jagjeevan Kashid <jagjeevandev97@gmail.com>
Signed-off-by: Jagjeevan Kashid <jagjeevandev97@gmail.com>
…ection Signed-off-by: Jagjeevan Kashid <jagjeevandev97@gmail.com>
|
Warning Rate limit exceeded@JagjeevanAK has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 23 minutes and 4 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughThis change introduces a complete documentation and blog system for the Zero project. It adds a new documentation app using Next.js, MDX, and Fumadocs, with comprehensive guides, architecture, deployment, configuration, and contributing documentation. Navigation, theming, ESLint, TypeScript, and styling configurations are included. The main repository README and mail app navigation are updated to reference the new documentation resources. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant DocsApp (Next.js)
participant Fumadocs Source
participant MDX Renderer
participant Blog/Docs Content
User->>DocsApp (Next.js): Request /docs or /blog page
DocsApp->>Fumadocs Source: Fetch page/blog data by slug
Fumadocs Source-->>DocsApp: Return content metadata and MDX
DocsApp->>MDX Renderer: Render MDX with custom components
MDX Renderer->>Blog/Docs Content: Render content (including Mermaid diagrams)
Blog/Docs Content-->>MDX Renderer: Content HTML
MDX Renderer-->>DocsApp: Rendered page
DocsApp-->>User: Serve documentation or blog page
Suggested reviewers
Poem
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
PR Summary
Comprehensive integration of a Fumadocs-powered documentation site and blog functionality into the Zero project, introducing professional documentation features and improved navigation structure.
- Incorrect port reference in docs README (shows 3000) conflicts with PR description (states 3001), needs consistency
- Multiple dependency version issues in
apps/docs/package.json: invalid 'catalog:' specifiers and non-existent versions (e.g., tailwindcss v4.1.10) - Forward-dated blog post content (July 2025) in
apps/docs/content/blog/sample.mdxcould confuse users - Potential security concern in
apps/docs/components/Mermaid.tsxusing 'loose' security level for diagram rendering - PostCSS configuration in
apps/docs/postcss.config.mjscontains incorrect Tailwind CSS plugin name
35 files reviewed, 15 comments
Edit PR Review Bot Settings | Greptile
| // Optional: Configure languages (defaults include common ones) | ||
| langs: ['javascript', 'typescript', 'jsx', 'tsx', 'json', 'bash', 'shell', 'python', 'perl', 'ini', 'yaml', 'markdown'], | ||
| // Optional: Enable inline code highlighting | ||
| inline: 'tailing-curly-colon', |
There was a problem hiding this comment.
syntax: 'tailing-curly-colon' appears to be a typo of 'trailing-curly-colon'
| <Steps> | ||
| <Step>Fork the Repository</Step> | ||
| <Step>Clone the Repository</Step> | ||
| <Step>Install Dependencies</Step> | ||
| <Step>Environment Setup</Step> | ||
| <Step>Database Setup</Step> | ||
| <Step>Start Development Server</Step> | ||
| </Steps> |
There was a problem hiding this comment.
logic: Steps component shows 6 steps but section only details 5 steps (missing 'Fork the Repository' step despite being listed). Add fork instructions or remove from steps.
| <Steps> | |
| <Step>Fork the Repository</Step> | |
| <Step>Clone the Repository</Step> | |
| <Step>Install Dependencies</Step> | |
| <Step>Environment Setup</Step> | |
| <Step>Database Setup</Step> | |
| <Step>Start Development Server</Step> | |
| </Steps> | |
| <Steps> | |
| <Step>Clone the Repository</Step> | |
| <Step>Install Dependencies</Step> | |
| <Step>Environment Setup</Step> | |
| <Step>Database Setup</Step> | |
| <Step>Start Development Server</Step> | |
| </Steps> |
| - **Node.js** (v18 or higher) | ||
| - **pnpm** (v8 or higher) | ||
| - **Git** |
There was a problem hiding this comment.
style: Add Docker to prerequisites since it's required for database setup (mentioned later in line 91).
| 'radial-gradient(circle at 70% 10%, rgba(255,50,100,0.5), transparent)', | ||
| 'radial-gradient(circle at 0% 80%, rgba(190,0,255,0.5), transparent)', | ||
| 'radial-gradient(circle at 50% 50%, rgba(50,50,255,0.3), transparent)', | ||
| `url("data:image/svg+xml,${encodeURIComponent(svg)}")`, |
There was a problem hiding this comment.
style: SVG string being encoded inline on every render - consider moving to a static asset
|
Hello team this PR is ready to merge. |
There was a problem hiding this comment.
Actionable comments posted: 9
🧹 Nitpick comments (27)
apps/docs/app/global.css (1)
8-10: Hard-coded underline colour may fail WCAG contrast in dark modeThe hex value
#89b5falooks fine on a light background, but could be almost invisible against a dark theme. Consider using CSS custom properties (e.g.var(--link-underline)) and defining separate values in@media (prefers-color-scheme: dark)so the underline is always visible.- text-decoration-color: #89b5fa !important; + text-decoration-color: var(--link-underline, #89b5fa) !important;apps/docs/eslint.config.mjs (1)
3-10: ESLint config layering can be simplifiedAn array wrapper is only needed when you actually add multiple configs. If the only goal is to tweak a few rules, extending the base object keeps things readable:
import base from '@zero/eslint-config'; export default { ...base, rules: { ...base.rules, /* docs-specific overrides */ }, };apps/docs/app/api/search/route.ts (1)
4-4: Consider exporting HEAD handler for better cachingSearch endpoints often benefit from a quick
HEADcheck.createFromSourceexposes{ GET }; expose{ HEAD }too if the helper supports it.pnpm-workspace.yaml (1)
7-7: Prefer caret (^) to avoid pinningzodto an exact patch versionPinning
zodto3.25.67means you will miss future patch-level bug-fixes and security releases. Unless you have a strong reason to lock the version, keep the caret so new compatible releases are picked up automatically.- zod: 3.25.67 + zod: ^3.25.67apps/docs/next.config.mjs (1)
1-10: Missingoutput: 'standalone'/ runtime flags may hurt deploy-time flexibilityThe config is minimal and works locally, but when deploying (especially to Docker/Vercel) you often want:
output: 'standalone', // smaller image / server bundle experimental: { typedRoutes: true }If the docs site must run entirely at runtime (no pre-built SSG), apply
force-dynamicper the project’s Docker guideline (see long-term learning). Evaluate and extend the config before shipping.apps/docs/app/(home)/page.tsx (1)
3-19: Placeholder copy — replace “Hello World” before productionThe homepage still shows “Hello World”. That’s fine for now, but don’t forget to swap it for project-specific messaging before releasing.
apps/docs/app/layout.tsx (1)
14-15: Consider hosting favicon locally for better reliability.Using external URLs for favicons introduces a dependency on the external service (https://0.email). If this service becomes unavailable, the favicon will fail to load. Consider hosting the favicon files locally in the
publicdirectory for better reliability and performance.- <link rel="icon" href="https://0.email/white-icon.svg" type="image/svg+xml" /> - <link rel="shortcut icon" href="https://0.email/white-icon.svg" type="image/svg+xml" /> + <link rel="icon" href="/favicon.svg" type="image/svg+xml" /> + <link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml" />apps/docs/mdx-components.tsx (1)
6-17: LGTM! Clean MDX components implementation with Mermaid support.The implementation correctly detects Mermaid code blocks and falls back to standard code rendering. The component merging pattern follows MDX best practices.
Consider adding type safety for the children conversion:
- return <Mermaid chart={String(children)} />; + return <Mermaid chart={String(children ?? '')} />;apps/docs/app/(home)/blog/page.tsx (2)
5-9: Improve date sorting robustness.The current sorting logic falls back to filename when date is missing, which could lead to inconsistent ordering since filenames don't follow date format.
Consider using a more robust approach:
const posts = [...blog.getPages()].sort( (a, b) => { - new Date(b.data.date ?? b.file.name).getTime() - - new Date(a.data.date ?? a.file.name).getTime(), + const dateA = a.data.date ? new Date(a.data.date) : new Date(0); + const dateB = b.data.date ? new Date(b.data.date) : new Date(0); + return dateB.getTime() - dateA.getTime(); }, );
11-21: Consider extracting the SVG for reusability.The inline SVG noise filter could be extracted to a separate component or constant for better maintainability and reusability across the docs app.
Consider creating a
components/NoisePattern.tsxcomponent:export const NoisePattern = () => ( <svg viewBox='0 0 500 500' xmlns='http://www.w3.org/2000/svg'> <filter id='noiseFilter'> <feTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/> </filter> <rect width='100%' height='100%' filter='url(#noiseFilter)'/> </svg> );apps/docs/components/Mermaid.tsx (1)
14-14: Consider using deep comparison for chart changes.The current string comparison may miss chart updates if the chart content is identical but other dependencies change. Consider using a more robust comparison method if needed in the future.
- if (currentChartRef.current === chart || !containerRef.current) return; + if (currentChartRef.current === chart.trim() || !containerRef.current) return;apps/docs/app/layout.config.tsx (1)
32-37: Consider hosting the logo locally for reliability.The logo is currently loaded from an external domain (
0.email). If this domain becomes unavailable, it could break the navigation. Consider hosting the logo assets locally in thepublicdirectory.- <img - width="24" - height="24" - src="https://0.email/white-icon.svg" - alt="Logo" - /> + <img + width="24" + height="24" + src="/logo.svg" + alt="Logo" + />apps/mail/components/navigation.tsx (1)
288-318: Consider simplifying the external resource handling logic.The current implementation handles external and platform resources separately, which creates complexity. Consider refactoring for better maintainability.
- {resources.map((resource) => { - if (resource.external && !resource.platform) { - // Handle Documentation and Blog links - return ( - <a - key={resource.title} - href={resource.href} - target="_blank" - rel="noopener noreferrer" - className="flex items-center gap-2 font-medium" - > - {resource.title} - </a> - ); - } - - if (resource.platform) { - // Handle social platform links - const Icon = IconComponent[resource.platform]; - return ( - <Link - key={resource.title} - to={resource.href} - className="flex items-center gap-2 font-medium" - > - <Icon className="dark:fill-muted-foreground h-5 w-5" /> - </Link> - ); - } - - return null; + {resources.map((resource) => { + const isExternal = resource.external || resource.platform; + const linkProps = isExternal + ? { target: "_blank", rel: "noopener noreferrer" } + : {}; + + if (resource.platform) { + const Icon = IconComponent[resource.platform]; + return ( + <a + key={resource.title} + href={resource.href} + {...linkProps} + className="flex items-center gap-2 font-medium" + > + <Icon className="dark:fill-muted-foreground h-5 w-5" /> + </a> + ); + } + + if (resource.external) { + return ( + <a + key={resource.title} + href={resource.href} + {...linkProps} + className="flex items-center gap-2 font-medium" + > + {resource.title} + </a> + ); + } + + return null;apps/docs/content/docs/getting-started/index.mdx (1)
38-40: Update placeholder repository URL.The clone command uses a placeholder URL that should be updated to reflect the actual repository structure.
-git clone https://github.com/your-username/zero.git +git clone https://github.com/your-username/Zero.gitNote: Ensure the repository name case matches the actual GitHub repository.
apps/docs/README.md (1)
58-58: Update port reference to avoid conflicts.The documentation mentions running on port 3000, which conflicts with the main mail app. Consider updating to reflect the actual docs port.
-The documentation will be available at [http://localhost:3000](http://localhost:3000). +The documentation will be available at [http://localhost:3001](http://localhost:3001).apps/docs/content/docs/contributing.mdx (1)
390-415: Testing framework placeholder needs attention.The testing section indicates the framework is "being set up" with placeholder commands. Consider either implementing the testing framework or removing the placeholder commands until ready.
Would you like me to help design the testing strategy and implementation plan, or should this section be simplified until the testing framework is ready?
apps/docs/content/blog/sample.mdx (2)
31-35: Missing definite article (“the”)
enterprise level→the enterprise level-ensure performance and scalability at enterprise level: +ensure performance and scalability at the enterprise level:
80-86: Compound adjective should be hyphenated
Open Source Leadership→Open-Source Leadership
open source code(when used adjectivally) →open-source codeThis improves readability and aligns with common style guides.
Also applies to: 93-95
apps/docs/content/docs/getting-started/installation.mdx (1)
44-53: Duplicated phrasing inside code blockThe line comments repeat “Via” twice:
# Via npm npm install -g pnpm # Via Homebrew (macOS) brew install pnpm # Via curl curl -fsSL https://get.pnpm.io/install.sh | shConsider dropping the second “Via” for brevity:
-# Via npm +# npm ... -# Via Homebrew (macOS) +# Homebrew (macOS) ... -# Via curl +# curlapps/docs/content/docs/getting-started/configuration.mdx (4)
40-79: Flag placeholder & quoting style in.envexample
- Wrapping
DATABASE_URLin double-quotes is harmless for most shells, but some orchestration tools (e.g. Dockerenv_file) treat the quotes as literal characters.- Secrets (
BETTER_AUTH_SECRET, SMTP credentials, etc.) are shown with weak or obviously fake values; readers often copy/paste these verbatim into real deployments.Consider:
-DATABASE_URL="postgresql://postgres:postgres@localhost:5432/zerodotemail" +DATABASE_URL=postgresql://postgres:postgres@localhost:5432/zerodotemail # no quotes +# 👉 Always replace example secrets; never use these values in production
68-71: EmptyAI_SYSTEM_PROMPTcan break runtime validationIf the application expects this var to be non-empty (Zod schema, runtime check), shipping an example with
""will surface confusing errors in first-time setups. Either omit the var or give a safe default.
454-462: MissingdefineConfigimport in the Vite exampleThe snippet references
defineConfigwithout importing it, which will not compile if copied verbatim.+import { defineConfig } from 'vite' export default defineConfig({
423-430: CORS origin list will block mail app on port 5173 in production buildsThe logic switches to a single production origin array, discarding the 5173 dev port. That’s fine, but newcomers frequently test the prod build locally. Consider a callout clarifying this or add
process.env.ALLOW_DEV_ORIGINS === 'true'escape hatch.apps/docs/content/docs/architecture.mdx (4)
25-38: Mermaid diagram: SMTP/IMAP nodes aren’t wired to security layerThe diagram omits an auth-/token-management edge between
Auth(or a dedicated token service). Given subsequent text stresses OAuth token refresh, the visual could mislead readers.
60-67: React Router blurb is misleadingReact Router v7 is not a “full-stack web framework”; it’s a client-side/router library with primitives for data APIs. Suggest trimming the description to avoid confusion for engineers comparing it with Remix/Nx.
-<Card title="React Router v7" description="Full-stack web framework with Vite integration for routing and SSR" /> +<Card title="React Router v7" description="Modern routing library with data APIs and Vite integration" />
86-92: Duplicate Cloudflare Workers entryLines 88 and 90 list Cloudflare Workers and Cloudflare Durable Objects separately, yet Workers already covers edge runtime. Maybe re-label line 88 as “Workers Runtime” or drop it to avoid duplication.
190-220:useMailStoreexample lacks initial filter type definition
FilterStateis referenced but not defined in the snippet; newcomers copying this will hit TS errors. Either inline the type or add a comment linking to its definition.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
apps/docs/pnpm-lock.yamlis excluded by!**/pnpm-lock.yamlpnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (35)
README.md(1 hunks)apps/docs/.gitignore(1 hunks)apps/docs/README.md(1 hunks)apps/docs/app/(home)/blog/[slug]/page.tsx(1 hunks)apps/docs/app/(home)/blog/page.tsx(1 hunks)apps/docs/app/(home)/layout.tsx(1 hunks)apps/docs/app/(home)/page.tsx(1 hunks)apps/docs/app/api/search/route.ts(1 hunks)apps/docs/app/docs/[[...slug]]/page.tsx(1 hunks)apps/docs/app/docs/layout.tsx(1 hunks)apps/docs/app/global.css(1 hunks)apps/docs/app/layout.config.tsx(1 hunks)apps/docs/app/layout.tsx(1 hunks)apps/docs/components/Mermaid.tsx(1 hunks)apps/docs/content/blog/sample.mdx(1 hunks)apps/docs/content/docs/MCP.mdx(1 hunks)apps/docs/content/docs/architecture.mdx(1 hunks)apps/docs/content/docs/contributing.mdx(1 hunks)apps/docs/content/docs/deployment.mdx(1 hunks)apps/docs/content/docs/getting-started/configuration.mdx(1 hunks)apps/docs/content/docs/getting-started/index.mdx(1 hunks)apps/docs/content/docs/getting-started/installation.mdx(1 hunks)apps/docs/content/docs/index.mdx(1 hunks)apps/docs/eslint.config.mjs(1 hunks)apps/docs/lib/source.ts(1 hunks)apps/docs/mdx-components.tsx(1 hunks)apps/docs/next.config.mjs(1 hunks)apps/docs/package.json(1 hunks)apps/docs/postcss.config.mjs(1 hunks)apps/docs/source.config.ts(1 hunks)apps/docs/tsconfig.json(1 hunks)apps/mail/components/navigation.tsx(5 hunks)apps/mail/components/ui/navigation-menu.tsx(2 hunks)package.json(1 hunks)pnpm-workspace.yaml(2 hunks)
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
apps/docs/next.config.mjs (2)
Learnt from: dakdevs
PR: Mail-0/Zero#764
File: apps/mail/lib/ai.ts:50-51
Timestamp: 2025-04-25T08:33:16.956Z
Learning: In Next.js 15, the `headers()` function from 'next/headers' is asynchronous and requires using `await` when called, which is a breaking change from previous versions where it was synchronous.
Learnt from: dakdevs
PR: Mail-0/Zero#764
File: apps/mail/lib/ai.ts:50-51
Timestamp: 2025-04-25T08:33:16.956Z
Learning: In Next.js 15, the `headers()` function from 'next/headers' is asynchronous and requires using `await` when called, which is a breaking change from previous versions where it was synchronous.
apps/docs/.gitignore (2)
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:13:26.825Z
Learning: Next.js requires certain environment variables during static site generation at build time, particularly those with the NEXT_PUBLIC_ prefix. When using Docker, these should be passed as build args, while sensitive values like API keys and secrets should ideally only be passed at runtime as environment variables.
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
apps/docs/package.json (1)
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:13:26.825Z
Learning: Next.js requires certain environment variables during static site generation at build time, particularly those with the NEXT_PUBLIC_ prefix. When using Docker, these should be passed as build args, while sensitive values like API keys and secrets should ideally only be passed at runtime as environment variables.
apps/docs/tsconfig.json (1)
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
apps/mail/components/navigation.tsx (1)
Learnt from: danteissaias
PR: Mail-0/Zero#902
File: apps/mail/components/connection/add.tsx:77-77
Timestamp: 2025-05-07T16:55:46.513Z
Learning: For the "Upgrade" link in AddConnectionDialog, using a proper <button> element instead of a <span> with onClick is recognized as an accessibility improvement but was deferred as out of scope in PR #902 (CSS variables PR).
apps/docs/app/docs/[[...slug]]/page.tsx (1)
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
apps/docs/app/(home)/blog/[slug]/page.tsx (1)
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
🧬 Code Graph Analysis (6)
apps/docs/mdx-components.tsx (1)
apps/docs/components/Mermaid.tsx (1)
Mermaid(6-47)
apps/docs/app/(home)/blog/page.tsx (2)
apps/docs/app/(home)/blog/[slug]/page.tsx (1)
Page(10-64)apps/docs/source.config.ts (1)
blog(12-21)
apps/docs/lib/source.ts (1)
apps/docs/source.config.ts (2)
docs(25-32)blog(12-21)
apps/docs/app/api/search/route.ts (1)
apps/docs/lib/source.ts (1)
source(5-9)
apps/docs/app/layout.tsx (2)
apps/docs/app/(home)/layout.tsx (1)
Layout(5-7)apps/docs/app/docs/layout.tsx (1)
Layout(6-12)
apps/docs/app/(home)/blog/[slug]/page.tsx (4)
apps/docs/app/(home)/blog/page.tsx (1)
Page(4-63)apps/docs/source.config.ts (1)
blog(12-21)apps/mail/components/ui/button.tsx (1)
buttonVariants(71-71)apps/docs/mdx-components.tsx (1)
getMDXComponents(6-17)
🪛 Biome (1.9.4)
apps/docs/components/Mermaid.tsx
[error] 46-46: Avoid passing content using the dangerouslySetInnerHTML prop.
Setting content using code can expose users to cross-site scripting (XSS) attacks
(lint/security/noDangerouslySetInnerHtml)
🪛 LanguageTool
apps/docs/content/blog/sample.mdx
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...t ensure performance and scalability at enterprise level: ```typescript title="AI-powered...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~80-~80: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...omponents for consistent design ## Why Open Source Leadership Matters In today's landscap...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~93-~93: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...enarios. ### Regulatory Compliance Open source code enables thorough security audits a...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
apps/docs/content/docs/getting-started/installation.mdx
[duplication] ~45-~45: Possible typo: you repeated a word.
Context: ... ```bash title="Install pnpm" # Via npm npm install -g pnpm # Via Homebrew (macOS)...
(ENGLISH_WORD_REPEAT_RULE)
[duplication] ~51-~51: Possible typo: you repeated a word.
Context: ...mebrew (macOS) brew install pnpm # Via curl curl -fsSL https://get.pnpm.io/install.sh | ...
(ENGLISH_WORD_REPEAT_RULE)
apps/docs/content/docs/deployment.mdx
[uncategorized] ~518-~518: Loose punctuation mark.
Context: ... ECS RDS Cache end` }/> #### ECS Task Definition ```json ti...
(UNLIKELY_OPENING_PUNCTUATION)
🔇 Additional comments (26)
apps/docs/.gitignore (1)
1-28: Looks good – comprehensive ignore listCovers dependencies, builds, cache and env files; nothing missing for the docs app.
apps/docs/app/api/search/route.ts (1)
1-4: Verify path alias “@/” is configured for the docs app
@/lib/sourcerelies on a TS/Next alias. Ensuretsconfig.jsoninapps/docscontains:{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./*"] } } }Without it, the build will fail in CI.
pnpm-workspace.yaml (1)
19-20: React 19 is still an alpha – confirm that every package is compatible
react/react-dom@19.1.0are in alpha and contain breaking changes (e.g., off-main-thread architecture).
Make sure:
- All packages in
apps/*andpackages/*accept React 19.- No library in your lockfile hard-pins
react@18and thereby causes hoisting conflicts.If this upgrade is experimental, consider keeping it confined to
apps/docswith overrides instead of elevating it to the workspace catalog.apps/docs/app/(home)/layout.tsx (1)
1-7: Verify whether the layout needs an explicit'use client'directiveIf
HomeLayoutfromfumadocs-uiis a client component (contains interactivity oruse clientinternally) you’re fine.
If it is a server component but relies on browser APIs via props, the current server-component wrapper will break at runtime.Check the exported code of
fumadocs-ui/layouts/home; add'use client'here if required.apps/docs/app/docs/layout.tsx (1)
1-12: Same client/server concern as home layout
DocsLayoutmay be a client component.
Ensure the wrapper’s component boundary is correctly marked ('use client'if necessary) to prevent hydration errors.Also, consider memoising
source.pageTreeif it’s heavy to compute on every request.apps/mail/components/ui/navigation-menu.tsx (1)
115-117: LGTM! Secure external link implementation.The addition of the optional
externalprop with propertarget="_blank"andrel="noopener noreferrer"attributes follows security best practices for external links, preventing potential window.opener vulnerabilities.Also applies to: 136-137
apps/docs/app/layout.tsx (1)
12-12: Verify suppressHydrationWarning usage.The
suppressHydrationWarningprop is typically needed for theme providers that cause hydration mismatches due to theme detection. Ensure this is actually necessary for the RootProvider from fumadocs-ui and consider documenting why it's needed.package.json (1)
12-12: LGTM! Proper monorepo script integration.The added docs scripts follow the established pnpm workspace filter pattern and integrate well with the existing script structure.
Also applies to: 14-14, 19-19
apps/docs/tsconfig.json (1)
1-31: LGTM! Well-structured TypeScript configuration.The TypeScript configuration is properly set up for a Next.js documentation app with appropriate compiler options, path aliases, and plugin configuration.
apps/docs/lib/source.ts (1)
1-18: LGTM! Clean Fumadocs source configuration.The source loaders are properly configured with appropriate base URLs. The dual export of
blogSourceprovides good flexibility for different import patterns.apps/docs/app/(home)/blog/page.tsx (1)
44-59: LGTM! Well-structured blog post grid.The blog post grid layout is responsive and well-designed with appropriate hover states and semantic HTML structure.
apps/docs/source.config.ts (2)
12-21: LGTM! Well-designed blog collection schema.The blog collection is properly configured with a logical frontmatter schema extension that includes essential blog metadata fields.
34-50: LGTM! Comprehensive MDX and code highlighting configuration.The Fumadocs configuration includes:
- Appropriate syntax highlighting themes for light/dark modes
- Comprehensive language support for a technical documentation site
- Inline code highlighting for better developer experience
apps/docs/components/Mermaid.tsx (1)
6-46: Well-implemented Mermaid integration with proper error handling.The component correctly handles dynamic mermaid imports, theme integration, and chart rendering. The use of
dangerouslySetInnerHTMLis appropriate here since the SVG content comes from the trusted mermaid library's own rendering engine, making the static analysis warning a false positive.apps/docs/app/layout.config.tsx (1)
3-19: Clean navigation configuration with proper link types.The link configuration is well-structured with appropriate use of TypeScript types from fumadocs-ui. The inline GitHub SVG icon is a good choice for performance.
apps/docs/app/docs/[[...slug]]/page.tsx (2)
12-35: Excellent implementation of dynamic docs routing.The page component properly handles async parameters, implements error handling with
notFound(), and correctly integrates with the fumadocs UI components. The MDX rendering with custom components supports the enhanced documentation features.
37-52: Proper SSG implementation with metadata generation.Both
generateStaticParamsandgenerateMetadataare correctly implemented following Next.js App Router best practices. The error handling ingenerateMetadataensures graceful fallback for missing pages.apps/docs/content/docs/index.mdx (1)
1-71: Comprehensive and well-structured documentation index.The documentation index provides an excellent overview of the Zero project with clear sections for features, getting started, technology stack, and community resources. The use of fumadocs-ui components (Cards, Steps, CodeBlock) creates an engaging and professional documentation experience.
apps/docs/app/(home)/blog/[slug]/page.tsx (2)
10-64: Sophisticated blog post layout with excellent UX.The blog post page implements a visually appealing design with gradient backgrounds and proper content structure. The layout includes a styled header section, prose-formatted content area, and informative sidebar with author and date details.
66-88: Proper SSG implementation for blog posts.Both
generateMetadataandgenerateStaticParamsare correctly implemented, ensuring good SEO and static generation performance. The error handling ingenerateMetadataprovides appropriate fallback metadata for missing posts.apps/mail/components/navigation.tsx (1)
270-279: Excellent security implementation for external links.The proper use of
target="_blank"andrel="noopener noreferrer"for external links follows security best practices and prevents potential security vulnerabilities.apps/docs/content/docs/getting-started/index.mdx (1)
1-266: Excellent comprehensive getting started guide.This documentation provides a thorough, well-structured guide with:
- Clear step-by-step instructions using proper UI components
- Comprehensive environment setup with detailed examples
- Good use of callouts, tabs, and accordions for organization
- Helpful troubleshooting section
The MDX structure and component usage follow best practices for technical documentation.
apps/docs/content/docs/MCP.mdx (1)
1-94: Well-structured MCP documentation.This documentation effectively covers:
- Comprehensive capability overview with clear categorization
- Detailed authentication methods with appropriate security warnings
- Good use of MDX components (Tabs, Steps, Callouts) for organization
- Clear distinction between development and production authentication approaches
The content is informative and follows documentation best practices.
apps/docs/README.md (1)
1-177: Comprehensive and well-structured documentation README.This README effectively provides:
- Clear project overview and value proposition
- Detailed development setup instructions
- Comprehensive project structure explanation
- Good technology stack documentation
- Clear contribution guidelines
The structure and content quality are excellent for a documentation site.
apps/docs/content/docs/contributing.mdx (1)
1-706: Outstanding comprehensive contributing guide.This documentation provides exceptional coverage of:
- Complete development setup and workflow
- Detailed coding standards with examples
- Comprehensive guidelines for all contribution types
- Professional templates for PRs and issues
- Clear community guidelines and recognition
The structure, depth, and use of MDX components create an excellent developer resource.
apps/docs/content/blog/sample.mdx (1)
155-159: Repository URL is inconsistentThe blog alternates between
https://github.com/Zero-Email/Zeroandhttps://github.com/Mail-0/zero.
Pick one canonical URL to avoid broken links and SEO penalties.Also applies to: 168-190
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
PR.md (3)
5-5: Add the missing article “the” before Fumadocs framework.
Small grammar tweak for clarity.-Added comprehensive documentation and blog functionality to the Zero project using Fumadocs framework. +Added comprehensive documentation and blog functionality to the Zero project using the Fumadocs framework.
35-35: Avoid bare URLs – wrap it as a Markdown link.Markdown-lint (
MD034) flags this line. Wrapping the URL keeps the doc tidy.-Verified documentation site runs on http://localhost:3001 +Verified documentation site runs locally at [http://localhost:3001](http://localhost:3001)
61-63: Prefix menu names with “the” for grammatical consistency.-Moved Documentation and Blog links from "Company" menu to "Resources" menu -Resources menu now contains: Documentation, Blog, GitHub, Twitter, LinkedIn, Discord -Company menu now focuses on: About, Privacy, Terms of Service, Contributors +Moved Documentation and Blog links from the "Company" menu to the "Resources" menu +The Resources menu now contains: Documentation, Blog, GitHub, Twitter, LinkedIn, Discord +The Company menu now focuses on: About, Privacy, Terms of Service, Contributors
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
PR.md(1 hunks)apps/docs/README.md(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/docs/README.md
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
🪛 LanguageTool
PR.md
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...functionality to the Zero project using Fumadocs framework. Integrated professional docu...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...Moved Documentation and Blog links from "Company" menu to "Resources" menu - Reso...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...n and Blog links from "Company" menu to "Resources" menu - Resources menu now con...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
🪛 markdownlint-cli2 (0.17.2)
PR.md
35-35: Bare URL used
(MD034, no-bare-urls)
|
Also, feel free to update the docs as we have made the docs and blogs setup and just need to review the docs information. |
Sure but many are not that much important will comment on each one which are important and which are not. The reason being we have react codebase and fuma is based on next.js. |
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (1)
apps/docs/content/blog/sample.mdx (1)
178-178: Inconsistent GitHub URLEarlier links use
github.com/Mail-0/zero; here it switches togithub.com/Zero-Email/Zero.
Choose one canonical URL to avoid confusing readers.-[Get started with Zero today](https://github.com/Zero-Email/Zero) +[Get started with Zero today](https://github.com/Mail-0/zero)
🧹 Nitpick comments (2)
apps/docs/content/blog/sample.mdx (2)
33-34: Grammar nit: missing definite article“at enterprise level” → “at the enterprise level”.
- ensure performance and scalability at enterprise level: +ensure performance and scalability at the enterprise level:
77-78: Unclear wording in bullet list“Better Auth” is brand-style jargon and may confuse external readers.
Consider replacing with a concrete description:- **Authentication**: Better Auth with enterprise OAuth and SAML integration +**Authentication**: Robust OAuth 2.0 and SAML-based single-sign-on for enterprises
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
apps/docs/content/blog/sample.mdx(1 hunks)apps/docs/eslint.config.mjs(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: JagjeevanAK
PR: Mail-0/Zero#1583
File: apps/docs/package.json:1-0
Timestamp: 2025-07-01T12:53:32.467Z
Learning: The Zero project prefers to handle dependency updates through automated tools like Dependabot rather than immediate manual updates, allowing for proper testing and validation through their established workflow.
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
apps/docs/content/blog/sample.mdx (1)
Learnt from: JagjeevanAK
PR: Mail-0/Zero#1583
File: apps/docs/package.json:1-0
Timestamp: 2025-07-01T12:53:32.467Z
Learning: The Zero project prefers to handle dependency updates through automated tools like Dependabot rather than immediate manual updates, allowing for proper testing and validation through their established workflow.
🪛 LanguageTool
apps/docs/content/blog/sample.mdx
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...t ensure performance and scalability at enterprise level: ```typescript title="AI-powered...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~80-~80: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...omponents for consistent design ## Why Open Source Leadership Matters In today's landscap...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~93-~93: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...enarios. ### Regulatory Compliance Open source code enables thorough security audits a...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
🪛 Biome (1.9.4)
apps/docs/eslint.config.mjs
[error] 12-13: Expected a statement but instead found ','.
Expected a statement here.
(parse)
[error] 13-14: Expected a statement but instead found ',
]'.
Expected a statement here.
(parse)
[error] 10-10: Unexpected label.
Only loops should be labeled.
The use of labels for other statements is suspicious and unfamiliar.
(lint/suspicious/noConfusingLabels)
[error] 10-10: Unused label.
The label is not used by any break statement and continue statement.
Safe fix: Remove the unused label.
(lint/correctness/noUnusedLabels)
[error] 9-13: This block statement doesn't serve any purpose and can be safely removed.
Standalone block statements without any block-level declarations are redundant in JavaScript and can be removed to simplify the code.
(lint/complexity/noUselessLoneBlockStatements)
🔇 Additional comments (2)
apps/docs/content/blog/sample.mdx (2)
100-109: Verify referenced deployment artefacts & script paths
docker-compose.prod.yamlandscripts/configure-sso.share mentioned, but these files aren’t part of the repo snapshot.
Please confirm they exist (or update the names) to prevent 404s in the published docs.
186-189: Confirm internal link targetsThe paths
/docsand/docs/contributingassume the docs site is hosted at the domain root.
If the site is deployed under/(as in the Vercel preview), these links resolve; if hosted under/docs, they will self-link. Please verify the final base path and adjust to relative links if needed.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
|
Hey @MrgSub I have gone throught many of the comments and few of them were correct like wrong import of eslint and tailwind while other suggesitions were on naming of .env variables and some .mdx files(doc files) and nothing serious. |
|
Tailwind suggestion by code rabbit was wrong and I am reverting it back CC: @MrgSub, @ahmetskilinc and @nizzyabi |
Signed-off-by: Jagjeevan Kashid <jagjeevandev97@gmail.com>
|
I have tested this locally so there should not be problem now. |
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (6)
apps/docs/postcss.config.mjs (1)
3-3: Fix the incorrect Tailwind CSS plugin name.Previous reviewers correctly identified that
@tailwindcss/postcssis invalid. The plugin should betailwindcssto prevent build failures.- '@tailwindcss/postcss': {}, + tailwindcss: {},apps/docs/content/blog/sample.mdx (2)
5-7: Front-matter key is still incorrect – must useauthors, notauthorwhen providing an arrayFumadocs parses either
author: "<single name>"orauthors: ["name", "name"].
Keeping the key asauthorwhile supplying a sequence will be treated as a single YAML object and the build will fail silently (authors list won’t render).-author: - - Nizzy - - Adam +authors: + - Nizzy + - Adam
178-180: Broken repository link
https://github.com/Zero-Email/Zerodoes not exist. The canonical repo isMail-0/zero.-**Ready to join the revolution?** [Get started with Zero today](https://github.com/Zero-Email/Zero) ... +**Ready to join the revolution?** [Get started with Zero today](https://github.com/Mail-0/zero) ...apps/mail/components/navigation.tsx (1)
25-35: Consider the previous review comment about hardcoded URLs.A previous review comment recommended replacing hardcoded localhost URLs with environment variables, which you've partially implemented but with syntax errors. The approach is correct, but ensure the environment variables are properly configured.
apps/docs/content/docs/contributing.mdx (1)
646-646: Update the architecture documentation link as previously suggested.The link to the architecture documentation needs to be corrected to point to the actual file location.
apps/docs/content/docs/getting-started/configuration.mdx (1)
135-135: Fix environment variable inconsistency as previously noted.The environment variable name used in the code snippet doesn't match the documented variable name, which will cause runtime issues.
🧹 Nitpick comments (1)
apps/docs/content/blog/sample.mdx (1)
35-35: Minor wording – missing determiner “the”“performance and scalability at enterprise level” → “performance and scalability at the enterprise level”.
Pure copy-edit, but worth fixing for polish.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (9)
.env.example(2 hunks)apps/docs/content/blog/sample.mdx(1 hunks)apps/docs/content/docs/contributing.mdx(1 hunks)apps/docs/content/docs/getting-started/configuration.mdx(1 hunks)apps/docs/eslint.config.mjs(1 hunks)apps/docs/package.json(1 hunks)apps/docs/postcss.config.mjs(1 hunks)apps/docs/source.config.ts(1 hunks)apps/mail/components/navigation.tsx(5 hunks)
✅ Files skipped from review due to trivial changes (1)
- .env.example
🚧 Files skipped from review as they are similar to previous changes (3)
- apps/docs/source.config.ts
- apps/docs/eslint.config.mjs
- apps/docs/package.json
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: JagjeevanAK
PR: Mail-0/Zero#1583
File: apps/docs/package.json:1-0
Timestamp: 2025-07-01T12:53:32.467Z
Learning: The Zero project prefers to handle dependency updates through automated tools like Dependabot rather than immediate manual updates, allowing for proper testing and validation through their established workflow.
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
apps/docs/content/docs/contributing.mdx (1)
Learnt from: JagjeevanAK
PR: Mail-0/Zero#1583
File: apps/docs/package.json:1-0
Timestamp: 2025-07-01T12:53:32.467Z
Learning: The Zero project prefers to handle dependency updates through automated tools like Dependabot rather than immediate manual updates, allowing for proper testing and validation through their established workflow.
apps/docs/content/docs/getting-started/configuration.mdx (2)
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:13:26.825Z
Learning: Next.js requires certain environment variables during static site generation at build time, particularly those with the NEXT_PUBLIC_ prefix. When using Docker, these should be passed as build args, while sensitive values like API keys and secrets should ideally only be passed at runtime as environment variables.
Learnt from: txj-xyz
PR: Mail-0/Zero#131
File: Dockerfile:31-41
Timestamp: 2025-03-14T22:15:10.146Z
Learning: For Docker configurations in this project, environment variables should be managed using .env files rather than hardcoding them in the Dockerfile, especially for development environments.
apps/docs/content/blog/sample.mdx (1)
Learnt from: JagjeevanAK
PR: Mail-0/Zero#1583
File: apps/docs/package.json:1-0
Timestamp: 2025-07-01T12:53:32.467Z
Learning: The Zero project prefers to handle dependency updates through automated tools like Dependabot rather than immediate manual updates, allowing for proper testing and validation through their established workflow.
apps/mail/components/navigation.tsx (3)
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:13:26.825Z
Learning: Next.js requires certain environment variables during static site generation at build time, particularly those with the NEXT_PUBLIC_ prefix. When using Docker, these should be passed as build args, while sensitive values like API keys and secrets should ideally only be passed at runtime as environment variables.
Learnt from: txj-xyz
PR: Mail-0/Zero#131
File: Dockerfile:31-41
Timestamp: 2025-03-14T22:15:10.146Z
Learning: For Docker configurations in this project, environment variables should be managed using .env files rather than hardcoding them in the Dockerfile, especially for development environments.
Learnt from: adiologydev
PR: Mail-0/Zero#871
File: docker-compose.yaml:2-21
Timestamp: 2025-05-04T23:21:21.388Z
Learning: To completely disable SSG (Static Site Generation) in Next.js projects for Docker deployments, use 'force-dynamic' for App Router or getServerSideProps for Pages Router in all pages, and set output: 'standalone' in next.config.ts. This allows all environment variables to be passed at runtime instead of build time, improving security for sensitive values.
🪛 LanguageTool
apps/docs/content/docs/contributing.mdx
[uncategorized] ~446-~446: You might be missing the article “the” here.
Context: ...Documentation 1. Create .mdx file in appropriate directory 2. Add frontmatter with title...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
apps/docs/content/blog/sample.mdx
[uncategorized] ~35-~35: You might be missing the article “the” here.
Context: ...t ensure performance and scalability at enterprise level: ```typescript title="AI-powered...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~82-~82: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...omponents for consistent design ## Why Open Source Leadership Matters In today's landscap...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~95-~95: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...enarios. ### Regulatory Compliance Open source code enables thorough security audits a...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
🪛 Biome (1.9.4)
apps/mail/components/navigation.tsx
[error] 26-26: expected , but instead found :
Remove :
(parse)
🔇 Additional comments (4)
apps/mail/components/navigation.tsx (2)
147-156: Good implementation of external link handling.The addition of the
externalprop toListItemcomponents properly supports the new documentation and blog links with appropriate target and rel attributes.
288-318: Well-structured conditional rendering for different link types.The logic correctly differentiates between external documentation/blog links and social platform links, applying appropriate attributes and components for each type.
apps/docs/content/docs/contributing.mdx (1)
1-704: Excellent comprehensive contributing guide.This is a well-structured and thorough contributing guide that covers all essential aspects:
- Clear development setup instructions
- Detailed workflow guidelines
- Code style standards with examples
- Testing framework preparation
- Community guidelines and recognition
The guide provides excellent value for new contributors and maintains consistency with the project's documentation standards.
apps/docs/content/docs/getting-started/configuration.mdx (1)
1-527: Outstanding comprehensive configuration reference.This configuration guide is exceptionally thorough and well-organized, covering:
- Complete environment variable reference
- Database configuration options (SQLite, PostgreSQL)
- Authentication setup with Better Auth and OAuth
- Email provider configurations
- Storage options (local, R2, S3)
- AI integration settings
- Performance and security configurations
- Production deployment considerations
- Configuration validation with Zod
The use of tabs, callouts, and code blocks makes the information highly accessible and actionable for developers.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
|
Can we push the docs to our Docs repo? https://github.com/Mail-0/Docs |
|
ye good Idea that is what I said at the start @MrgSub but @ahmetskilinc said that keep it in main repo |
|
thank you, I realized it'll be a large addition to our repo which is already large |
Signed-off-by: Jagjeevan Kashid jagjeevandev97@gmail.com
Issue : #1298
Description
Added comprehensive documentation and blog functionality to the Zero project. Integrated professional documentation site and blog into the main application with proper navigation structure.
Key Changes:
apps/docs/Type of Change
Areas Affected
Testing Done
Testing Details:
Security Considerations
Notes: All documentation and blog content uses static MDX files with no dynamic user input.
Checklist
Additional Notes
Navigation Structure Changes:
Technical Implementation:
Documentation Features:
Live Demo
Live link to docs: https://zero-docs-pi.vercel.app/
By submitting this pull request, I confirm that my contribution is made under the terms of the project's license.
Summary by CodeRabbit
New Features
Documentation
Style
Chores