Skip to content

refactor: eng docs#2173

Merged
chronark merged 4 commits intomainfrom
eng-docs
Oct 4, 2024
Merged

refactor: eng docs#2173
chronark merged 4 commits intomainfrom
eng-docs

Conversation

@chronark
Copy link
Collaborator

@chronark chronark commented Oct 4, 2024

  • feat: move eng docs to fuma
  • fix: merge conflicts

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced a new Layout component for structuring the application.
    • Added a HomePage component with a welcoming message and documentation link.
    • Implemented an advanced search API feature.
    • Launched a dynamic documentation page renderer.
    • Added various documentation files covering API design, error handling, and architecture.
    • Integrated Tailwind CSS for improved styling across the application.
  • Documentation

    • Overhauled the README to provide clearer guidance on running the project.
    • Created comprehensive documentation for error handling, RPC style in the API, and overall architecture.
  • Chores

    • Updated project dependencies and configuration files to enhance performance and maintainability.
    • Added .gitignore entries to exclude unnecessary files from version control.

@chronark chronark requested a review from perkinsjr as a code owner October 4, 2024 11:01
@vercel
Copy link

vercel bot commented Oct 4, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
play ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 4, 2024 11:18am
www ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 4, 2024 11:18am
3 Skipped Deployments
Name Status Preview Comments Updated (UTC)
dashboard ⬜️ Ignored (Inspect) Visit Preview Oct 4, 2024 11:18am
planetfall ⬜️ Ignored (Inspect) Visit Preview Oct 4, 2024 11:18am
workflows ⬜️ Ignored (Inspect) Visit Preview Oct 4, 2024 11:18am

@changeset-bot
Copy link

changeset-bot bot commented Oct 4, 2024

⚠️ No Changeset found

Latest commit: e77891a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 4, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes in this pull request involve multiple updates to the apps/engineering directory, including modifications to the .gitignore file, a complete rewrite of the README.md, and the introduction of several new components and configuration files. Notable additions include new layout and page components for a Next.js application, an API route for search functionality, and various documentation files in MDX format. Additionally, the project structure has been updated, including changes to the package.json file reflecting new dependencies and scripts.

Changes

File Path Change Summary
apps/engineering/.gitignore Added entries to ignore files and directories related to dependencies, generated content, TypeScript build info, logs, and environment variable files.
apps/engineering/README.md Overhauled content to introduce the application as a Next.js project, including setup instructions and resources for learning more about Next.js and Fumadocs.
apps/engineering/app/(home)/layout.tsx Introduced a new Layout component that renders HomeLayout and accepts children as a prop.
apps/engineering/app/(home)/page.tsx Added a new HomePage component that displays a centered heading and a link to documentation.
apps/engineering/app/api/search/route.ts Introduced a new API route for an "advanced" search feature using createSearchAPI.
apps/engineering/app/docs/[[...slug]]/page.tsx Added a new page renderer for documentation content, including functions for static parameters and metadata generation.
apps/engineering/app/docs/layout.tsx Introduced a new Layout component for documentation pages with a sidebar toggle.
apps/engineering/app/global.css Integrated Tailwind CSS by adding directives for base, components, and utilities.
apps/engineering/app/layout.config.tsx Created a new layout configuration file exporting baseOptions for shared layout settings.
apps/engineering/app/layout.tsx Introduced a new Layout component for the application structure, integrating global styles and context providers.
apps/engineering/app/source.ts Added a new file that exports a configured loader for MDX content.
apps/engineering/content/docs/api-design/errors.mdx Introduced documentation for error handling in the Unkey API, outlining error response structures.
apps/engineering/content/docs/api-design/index.mdx Added an introductory document for API design principles and goals.
apps/engineering/content/docs/api-design/meta.json Created metadata for documentation pages related to API design.
apps/engineering/content/docs/api-design/rpc.mdx Introduced documentation for RPC style used by the Unkey API, detailing method usage and conventions.
apps/engineering/content/docs/architecture/index.mdx Added an introductory document for architecture documentation.
apps/engineering/content/docs/architecture/meta.json Created metadata for architecture documentation.
apps/engineering/content/docs/index.mdx Introduced a welcome document for the documentation section with links to resources.
apps/engineering/content/docs/meta.json Created metadata for engineering documentation pages.
apps/engineering/content/docs/services/meta.json Added metadata for the "Fumadocs Core" service documentation.
apps/engineering/content/docs/services/vault.mdx Updated the Vault service documentation to use new UI components.
apps/engineering/content/docs/test.mdx Introduced a new Markdown file with a title and description section, including code snippets and card components.
apps/engineering/errors.mdx Deleted file containing documentation on error handling for Unkey APIs.
apps/engineering/introduction.mdx Deleted overview document for Unkey engineering documentation.
apps/engineering/mint.json Deleted configuration file for the "Unkey Engineering" application.
apps/engineering/next.config.mjs Introduced a new Next.js configuration file with MDX support.
apps/engineering/package.json Updated project name and version, added new scripts and dependencies, and removed old dependencies.
apps/engineering/postcss.config.js Introduced a new PostCSS configuration file with Tailwind CSS and Autoprefixer plugins.
apps/engineering/rfcs/0001-retrieving-keys.mdx Deleted documentation on retrieving keys in a multi-tenant architecture.
apps/engineering/source.config.ts Introduced a new configuration file for documentation management.
apps/engineering/tailwind.config.js Added a new Tailwind CSS configuration file with content sources and presets.
apps/engineering/tsconfig.json Introduced a new TypeScript configuration file with various compiler options.
biome.json Updated linter and formatter ignore settings in the biome.json configuration file.
tools/migrate/auditlog-import.ts Removed console logging statements from the audit log import script.
tools/migrate/main.ts Streamlined logging output in the migration process by removing specific log statements.
tools/migrate/tinybird-export.ts Removed console logging statements related to cursor values in the Tinybird export script.

Suggested labels

Documentation, Good first issue, hacktoberfest

Suggested reviewers

  • perkinsjr

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 4, 2024

Thank you for following the naming conventions for pull request titles! 🙏

@vercel vercel bot temporarily deployed to Preview – www October 4, 2024 11:04 Inactive
@vercel vercel bot temporarily deployed to Preview – planetfall October 4, 2024 11:06 Inactive
@vercel vercel bot temporarily deployed to Preview – dashboard October 4, 2024 11:07 Inactive
@vercel vercel bot temporarily deployed to Preview – play October 4, 2024 11:08 Inactive
@vercel vercel bot temporarily deployed to Preview – workflows October 4, 2024 11:08 Inactive
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Outside diff range and nitpick comments (26)
apps/engineering/next.config.mjs (1)

5-8: LGTM: Basic Next.js configuration with room for expansion

The configuration object is correctly defined with reactStrictMode: true, which is a good practice. The JSDoc type annotation is helpful for TypeScript support.

Consider if any additional Next.js configuration options are needed for this engineering documentation site, such as:

  • pageExtensions to include .mdx files
  • basePath if the docs will be served under a subpath
  • i18n for internationalization if required
apps/engineering/app/source.ts (2)

1-3: LGTM! Consider using a more robust import path.

The imports are correctly structured and necessary for the file's functionality. However, the import from "@/.source" might be fragile if the file structure changes.

Consider using a more robust import path for docs and meta, such as an absolute import or a path alias, to improve maintainability. For example:

import { docs, meta } from "@/path/to/source";

This change would make the import more resilient to file structure changes.


5-8: LGTM! Consider adding a brief comment for clarity.

The export of the source constant is well-structured and aligns with the PR objective of relocating the engineering documentation.

Consider adding a brief comment above the export to explain its purpose and how it relates to the documentation relocation. For example:

// Configure the MDX source loader for the relocated engineering documentation
export const source = loader({
  baseUrl: "/docs",
  source: createMDXSource(docs, meta),
});

This comment would enhance code readability and provide context for future developers.

apps/engineering/app/(home)/layout.tsx (1)

10-11: LGTM: Implementation is clean and follows React composition pattern.

The component effectively wraps the HomeLayout from fumadocs-ui, applying common configuration through baseOptions. This approach promotes consistency and reusability.

Consider adding the ability to override baseOptions by accepting an optional options prop:

 export default function Layout({
   children,
+  options = {},
 }: {
   children: ReactNode;
+  options?: Partial<typeof baseOptions>;
 }): React.ReactElement {
-  return <HomeLayout {...baseOptions}>{children}</HomeLayout>;
+  return <HomeLayout {...baseOptions} {...options}>{children}</HomeLayout>;
 }

This change would allow for more flexibility in cases where specific pages might need slight variations in the layout options.

apps/engineering/content/docs/test.mdx (3)

1-4: Consider enhancing the description in the frontmatter.

The title and description are currently identical. To improve SEO and provide better context for users, consider expanding the description to briefly explain what kind of components are covered in this document.

For example:

 ---
 title: Components
-description: Components
+description: Overview of custom components used in our engineering documentation
 ---

6-10: Consider using a more relevant code example.

While the current "Hello World" example demonstrates how to use a code block, it may not provide much value in the context of engineering documentation. Consider replacing it with a more relevant example that showcases a component or a specific feature of your system.

For instance:

 ## Code Block

 ```js
-console.log('Hello World');
+import { Card } from '@/components/Card';
+
+export function ExampleCard() {
+  return (
+    <Card title="Example" href="/docs/example">
+      This is an example card component.
+    </Card>
+  );
+}

---

`1-17`: **Align the content with PR objectives and enhance overall structure.**

This new file provides a good starting point for demonstrating components in your engineering documentation. However, to fully align with the PR objectives and maximize its value:

1. Consider adding a section that explicitly mentions the move to the new "fuma" location, explaining any benefits or changes this brings.
2. Expand the content to showcase more of your custom components or provide more in-depth examples.
3. Structure the document to serve as a clear introduction or index to your engineering documentation components.


These enhancements will help make the document more informative and aligned with the stated PR objectives of moving and improving the engineering documentation.

</blockquote></details>
<details>
<summary>apps/engineering/tailwind.config.js (1)</summary><blockquote>

`12-12`: **LGTM: Appropriate use of fumadocs-ui preset.**

The use of `createPreset()` in the `presets` array is consistent with the import statement and aligns with the PR objectives. This preset likely provides default Tailwind configurations specific to "fumadocs-ui".



For improved clarity, consider adding a comment explaining the purpose of the `createPreset()` function. For example:

```diff
- presets: [createPreset()],
+ // Use the fumadocs-ui preset for consistent styling
+ presets: [createPreset()],
apps/engineering/app/(home)/page.tsx (2)

5-13: LGTM: JSX structure is clean and logical. Consider simplifying text spacing.

The component's JSX structure is well-organized. However, the use of {" "} for spacing can be simplified.

Consider simplifying the text content by removing the {" "} and using regular spaces:

-        You can open{" "}
+        You can open 
         <Link href="/docs" className="text-fd-foreground font-semibold underline">
           /docs
-        </Link>{" "}
+        </Link> 
-        and see the documentation.{" "}
+        and see the documentation.

This change will make the code more readable while maintaining the same visual output.


9-11: Enhance accessibility for the Link component.

While the overall structure is good for accessibility, the <Link> component could be improved for screen reader users.

Consider adding an aria-label to the <Link> component to provide more context:

 <Link
   href="/docs"
   className="text-fd-foreground font-semibold underline"
+  aria-label="Open documentation"
 >
   /docs
 </Link>

This change will help screen reader users understand the purpose of the link more clearly.

apps/engineering/app/layout.config.tsx (2)

3-9: Documentation is helpful, consider adding more details.

The comment effectively explains the purpose of the shared layout configurations and where to find individual layout configurations.

Consider adding a brief explanation of what "fumadocs-ui" is and its role in the project, as it might not be immediately clear to all developers.


10-26: Structure looks good, consider minor improvements.

The baseOptions object is well-structured and provides the necessary configuration for the layout. Here are some suggestions for improvement:

  1. Consider extracting the GitHub URL into a constant to avoid repetition:
const GITHUB_URL = "https://github.com/unkeyed/unkey";

export const baseOptions: HomeLayoutProps = {
  // ...
  githubUrl: GITHUB_URL,
  links: [
    // ...
    {
      text: "GitHub",
      url: GITHUB_URL,
    },
  ],
};
  1. The active property in the "Documentation" link is set to "nested-url". It might be helpful to add a comment explaining what this means or how it affects the navigation behavior.
apps/engineering/app/layout.tsx (1)

16-16: Consider refining the Banner message for clarity and permanence.

The current message, "The new place for our engineering docs", clearly indicates the purpose of the page. However, it might sound temporary or transitional. Consider refining it to something more permanent and informative, such as "Welcome to Unkey Engineering Documentation" or "Unkey Engineering: Documentation and Resources".

apps/engineering/package.json (2)

6-9: Update documentation to reflect new build and development process.

The changes to the scripts section indicate a shift from Mintlify to Next.js for development and building. This aligns with the PR objective of moving the engineering documentation to "fuma". The changes look good and are approved.

Consider the following actions:

  1. Update any existing documentation that references the old build or development process.
  2. Create or update a README file to explain the new scripts and how to use them.

Would you like assistance in drafting documentation updates for these changes?


11-18: Consider standardizing version ranges for dependencies.

The new dependencies align well with the PR objective of moving to "fuma" and transitioning to a React-based documentation system. These changes are approved.

However, there's an inconsistency in how versions are specified:

  • fumadocs packages use exact versions (e.g., "13.4.10")
  • Other packages use caret ranges (e.g., "^0.378.0")

Consider standardizing the version ranges for better consistency and easier maintenance. You might want to use caret ranges for all dependencies unless there's a specific reason for pinning exact versions.

Would you like a script to help standardize these version ranges?

apps/engineering/content/docs/api-design/rpc.mdx (4)

6-11: LGTM: Clear introduction and URL schema explanation.

The introduction and URL schema explanation are well-written and easy to understand. The example provided is helpful for clarifying the schema usage.

Consider adding a comma after "For example" on line 11 to improve readability:

-For example `GET https://api.unkey.dev/v1/apis.listKeys` to list all keys for an API.
+For example, `GET https://api.unkey.dev/v1/apis.listKeys` to list all keys for an API.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~6-~6: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...es HTTP RPC-style methods and generally follow the schema: ```bash https://api.unkey....

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[typographical] ~11-~11: After the expression ‘for example’ a comma is usually used.
Context: ...{version}/{service}.{procedure} ``` For example `GET https://api.unkey.dev/v1/apis.list...

(COMMA_FOR_EXAMPLE)


13-14: LGTM: Clear statement of HTTP methods used.

The documentation clearly states which HTTP methods are used and which are not. This is helpful for developers interacting with the API.

Consider adding a brief explanation of why only GET and POST are used, as this approach differs from typical RESTful API conventions. This context could help developers better understand the API design philosophy. For example:

 ## HTTP Methods
 We strictly use only `GET` and `POST` methods. `PUT` and `DELETE` are not used.
+
+This simplified approach allows for a more streamlined API interface while still providing full CRUD functionality through carefully designed endpoints.

17-23: LGTM: Clear explanation of GET usage with a helpful example.

The section effectively explains how GET requests are used in the API, including the use of query parameters for data manipulation.

Consider the following improvements to enhance clarity and usefulness:

  1. Add a brief example of query parameters for filtering or sorting.
  2. Use syntax highlighting for the curl command.
  3. Add a comment explaining what the curl command does.

Here's an example of how you could implement these suggestions:

 ### GET
 The `GET` methods is used for reading data. Filtering, sorting, or pagination is done via query parameters.
+
+For example, to filter keys by a specific name and sort them by creation date:
+`GET https://api.unkey.dev/v1/apis.listKeys?name=myKey&sort=createdAt`

-```
+```bash
+# Retrieve a key by its ID
 curl "https://api.unkey.dev/v1/keys.getKey?keyId=key_123" \
   -H "Authorization: Bearer <ROOT_KEY>"

---

`26-35`: **LGTM: Clear explanation of POST usage with a helpful example.**

The section effectively explains how POST requests are used in the API for all write operations.



Consider the following improvements to enhance clarity and usefulness:

1. Add a brief explanation of why POST is used for all write operations, including updates and deletes.
2. Use syntax highlighting for the curl command.
3. Add a comment explaining what the curl command does.
4. Consider adding examples for update and delete operations to illustrate how they differ from create operations.

Here's an example of how you could implement these suggestions:

```diff
 ### POST
 The `POST` method is used for creating, updating, and deleting data. Data is passed as `application/json` in the request body.
+
+We use POST for all write operations to maintain consistency and simplify the API interface. The specific operation (create, update, or delete) is determined by the endpoint and the data provided.

-```
+```bash
+# Create a new key
 curl -XPOST "https://api.unkey.dev/v1/keys.createKey" \
   -H "Authorization: Bearer <ROOT_KEY>" \
   -H "Content-Type: application/json" \
   -d '{ "apiId": "api_123", "name": "My Key" }'

+For update and delete operations, you would use different endpoints with the same HTTP method:
+
+```bash
+# Update a key
+curl -XPOST "https://api.unkey.dev/v1/keys.updateKey" \

  • -H "Authorization: Bearer <ROOT_KEY>" \
  • -H "Content-Type: application/json" \
  • -d '{ "keyId": "key_123", "name": "Updated Key Name" }'

+# Delete a key
+curl -XPOST "https://api.unkey.dev/v1/keys.deleteKey" \

  • -H "Authorization: Bearer <ROOT_KEY>" \
  • -H "Content-Type: application/json" \
  • -d '{ "keyId": "key_123" }'
    +```

</blockquote></details>
<details>
<summary>apps/engineering/content/docs/api-design/errors.mdx (2)</summary><blockquote>

`7-9`: **Consider hyphenating compound adjectives for improved readability.**

The phrases "human readable" and "machine readable" should be hyphenated when used as compound adjectives before a noun. This improves readability and adheres to common style guidelines.

Apply these changes:

```diff
-Machine and human readable error codes
+Machine- and human-readable error codes

-The Unkey API returns machine readable error codes to quickly identify the type of error as well as link to the docs and a requestId.
+The Unkey API returns machine-readable error codes to quickly identify the type of error as well as link to the docs and a requestId.
🧰 Tools
🪛 LanguageTool

[misspelling] ~7-~7: This word is normally spelled with a hyphen.
Context: ...dling for Unkey APIs' --- Machine and human readable error codes The Unkey API returns mach...

(EN_COMPOUNDS_HUMAN_READABLE)


[misspelling] ~9-~9: This word is normally spelled with a hyphen.
Context: ...able error codes The Unkey API returns machine readable error codes to quickly identify the typ...

(EN_COMPOUNDS_MACHINE_READABLE)


25-31: Great inclusion of future plans and RFC reference. Consider minor text improvement.

The information about future improvements and the reference to RFC9457 are valuable additions to the documentation. It shows forward-thinking and provides users with additional resources.

For a minor improvement:

Apply this change:

-to offer more error details to the user in a well defined format.
+to offer more error details to the user in a well-defined format.

This hyphenation improves readability when "well-defined" is used as a compound adjective before a noun.

🧰 Tools
🪛 LanguageTool

[misspelling] ~28-~28: This word is normally spelled with a hyphen.
Context: ...fer more error details to the user in a well defined format. [RFC9457](https://www.rfc-edi...

(EN_COMPOUNDS_WELL_DEFINED)

biome.json (2)

61-63: LGTM. Consider adding a trailing comma after the last item for consistency.

The changes in the formatter section look good:

  1. Adding a trailing comma after ".content-collections" improves maintainability.
  2. Including ".source" and ".trigger" in the formatter's ignore list maintains consistency with the linter configuration.

For even better consistency and to make future additions easier, consider adding a trailing comma after the last item in the ignore array:

 ".content-collections",
 ".source",
-".trigger"
+".trigger",

This small change will make it easier to add or remove items in the future without causing unnecessary diff noise.


Line range hint 1-79: Consider updating the "organizeImports" section for full consistency.

The changes to the linter and formatter configurations look good and align with the PR objectives. However, I noticed that the "organizeImports" section wasn't updated. For full consistency across all Biome configurations, consider adding the new ignore patterns to this section as well:

 "organizeImports": {
   "enabled": true,
   "ignore": [
     "node_modules",
     ".next",
     "dist",
     ".nuxt",
     ".wrangler",
     ".react-email",
-    ".content-collections"
+    ".content-collections",
+    ".source",
+    ".trigger"
   ]
 }

This change would ensure that all Biome features (linting, formatting, and import organization) treat these new patterns consistently.

apps/engineering/app/docs/layout.tsx (1)

10-45: LGTM with a suggestion: Component configuration is comprehensive.

The DocsLayout configuration is well-structured and provides a clear navigation system through the RootToggle component. The use of icons and descriptive text enhances usability.

Consider adding aria-label attributes to the icon elements to improve accessibility. For example:

-<Code className="size-4 text-blue-600 dark:text-blue-400" />
+<Code className="size-4 text-blue-600 dark:text-blue-400" aria-label="Code icon" />

Apply similar changes to other icon elements.

apps/engineering/content/docs/services/vault.mdx (2)

Line range hint 40-52: LGTM: Updated Q&A section structure.

The replacement of <AccordionGroup> with <Accordions> and the use of individual <Accordion> components for each scenario is a good improvement. It's consistent with the new imports and likely enhances the user interface.

Consider adding a brief introductory text before the <Accordions> component to provide context for the scenarios. For example:

+ ### Security Breach Scenarios
+ 
+ Here are some potential scenarios and their security implications:
+
<Accordions>
  <Accordion title="Scenario 1: Main database is leaked">
    An attacker can see the encrypted secrets, but they can't decrypt them.
  </Accordion>
  ...
</Accordions>

This addition would improve the readability and context of the Q&A section.


Line range hint 1-52: LGTM: Overall document structure and content preserved.

The document maintains its logical flow and coherence while incorporating the new UI components. The core content, including the Features section, Flow diagram, and Q&A, remains intact and informative.

For consistency with the updated Q&A section, consider using the new Accordion component for other sections where it might be beneficial. For example, the Features section could be presented as an accordion:

<Accordions>
  <Accordion title="Encryption">
    Encrypt and decrypt secrets
  </Accordion>
  <Accordion title="Key Management">
    Supports multiple keyrings, key rolling and secret re-encryption.
  </Accordion>
  <Accordion title="HTTP API">
    Exposes an HTTP API via buf connect to interact with the service.
  </Accordion>
</Accordions>

This would provide a consistent UI experience throughout the document and allow users to focus on specific features as needed.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between b5c153d and ed00c4c.

⛔ Files ignored due to path filters (2)
  • apps/engineering/unkey.png is excluded by !**/*.png
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (36)
  • apps/engineering/.gitignore (1 hunks)
  • apps/engineering/README.md (1 hunks)
  • apps/engineering/app/(home)/layout.tsx (1 hunks)
  • apps/engineering/app/(home)/page.tsx (1 hunks)
  • apps/engineering/app/api/search/route.ts (1 hunks)
  • apps/engineering/app/docs/[[...slug]]/page.tsx (1 hunks)
  • apps/engineering/app/docs/layout.tsx (1 hunks)
  • apps/engineering/app/global.css (1 hunks)
  • apps/engineering/app/layout.config.tsx (1 hunks)
  • apps/engineering/app/layout.tsx (1 hunks)
  • apps/engineering/app/source.ts (1 hunks)
  • apps/engineering/content/docs/api-design/errors.mdx (1 hunks)
  • apps/engineering/content/docs/api-design/index.mdx (1 hunks)
  • apps/engineering/content/docs/api-design/meta.json (1 hunks)
  • apps/engineering/content/docs/api-design/rpc.mdx (1 hunks)
  • apps/engineering/content/docs/architecture/index.mdx (1 hunks)
  • apps/engineering/content/docs/architecture/meta.json (1 hunks)
  • apps/engineering/content/docs/index.mdx (1 hunks)
  • apps/engineering/content/docs/meta.json (1 hunks)
  • apps/engineering/content/docs/services/meta.json (1 hunks)
  • apps/engineering/content/docs/services/vault.mdx (3 hunks)
  • apps/engineering/content/docs/test.mdx (1 hunks)
  • apps/engineering/errors.mdx (0 hunks)
  • apps/engineering/introduction.mdx (0 hunks)
  • apps/engineering/mint.json (0 hunks)
  • apps/engineering/next.config.mjs (1 hunks)
  • apps/engineering/package.json (1 hunks)
  • apps/engineering/postcss.config.js (1 hunks)
  • apps/engineering/rfcs/0001-retrieving-keys.mdx (0 hunks)
  • apps/engineering/source.config.ts (1 hunks)
  • apps/engineering/tailwind.config.js (1 hunks)
  • apps/engineering/tsconfig.json (1 hunks)
  • biome.json (2 hunks)
  • tools/migrate/auditlog-import.ts (0 hunks)
  • tools/migrate/main.ts (0 hunks)
  • tools/migrate/tinybird-export.ts (0 hunks)
💤 Files with no reviewable changes (7)
  • apps/engineering/errors.mdx
  • apps/engineering/introduction.mdx
  • apps/engineering/mint.json
  • apps/engineering/rfcs/0001-retrieving-keys.mdx
  • tools/migrate/auditlog-import.ts
  • tools/migrate/main.ts
  • tools/migrate/tinybird-export.ts
✅ Files skipped from review due to trivial changes (11)
  • apps/engineering/.gitignore
  • apps/engineering/app/global.css
  • apps/engineering/content/docs/api-design/meta.json
  • apps/engineering/content/docs/architecture/index.mdx
  • apps/engineering/content/docs/architecture/meta.json
  • apps/engineering/content/docs/index.mdx
  • apps/engineering/content/docs/meta.json
  • apps/engineering/content/docs/services/meta.json
  • apps/engineering/postcss.config.js
  • apps/engineering/source.config.ts
  • apps/engineering/tsconfig.json
🧰 Additional context used
🪛 Markdownlint
apps/engineering/README.md

16-16: null
Bare URL used

(MD034, no-bare-urls)

🪛 LanguageTool
apps/engineering/content/docs/api-design/errors.mdx

[misspelling] ~7-~7: This word is normally spelled with a hyphen.
Context: ...dling for Unkey APIs' --- Machine and human readable error codes The Unkey API returns mach...

(EN_COMPOUNDS_HUMAN_READABLE)


[misspelling] ~9-~9: This word is normally spelled with a hyphen.
Context: ...able error codes The Unkey API returns machine readable error codes to quickly identify the typ...

(EN_COMPOUNDS_MACHINE_READABLE)


[misspelling] ~28-~28: This word is normally spelled with a hyphen.
Context: ...fer more error details to the user in a well defined format. [RFC9457](https://www.rfc-edi...

(EN_COMPOUNDS_WELL_DEFINED)

apps/engineering/content/docs/api-design/index.mdx

[uncategorized] ~6-~6: A comma may be missing after the conjunctive/linking adverb ‘Therefore’.
Context: ...e with our API than with our dashboard. Therefore we need to carefully design the experie...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)

apps/engineering/content/docs/api-design/rpc.mdx

[uncategorized] ~6-~6: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...es HTTP RPC-style methods and generally follow the schema: ```bash https://api.unkey....

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[typographical] ~11-~11: After the expression ‘for example’ a comma is usually used.
Context: ...{version}/{service}.{procedure} ``` For example `GET https://api.unkey.dev/v1/apis.list...

(COMMA_FOR_EXAMPLE)

🔇 Additional comments (34)
apps/engineering/next.config.mjs (4)

1-1: LGTM: Appropriate import for MDX support

The import of createMDX from "fumadocs-mdx/next" is correct and aligns with the PR objective of enhancing engineering documentation.


3-3: LGTM: Correct setup of MDX wrapper

The withMDX wrapper is correctly created using the imported createMDX function. This setup will enable MDX support in the Next.js configuration.


10-10: LGTM: Correct export of MDX-enhanced configuration

The export statement correctly applies the withMDX wrapper to the config object, ensuring that the Next.js configuration includes MDX support.


1-10: LGTM: Proper setup for Next.js with MDX support

The next.config.mjs file correctly sets up a Next.js configuration with MDX support using the "fumadocs-mdx/next" package. This aligns well with the PR objective of enhancing engineering documentation.

To ensure everything is working as expected:

  1. Verify that MDX files are being properly rendered in the engineering documentation.
  2. Check if any additional Next.js configuration options are needed for optimal performance and functionality of the documentation site.

Run the following script to check for MDX files in the project:

This will help verify the presence and usage of MDX files in the project.

apps/engineering/app/source.ts (1)

1-8: Overall, great implementation of the documentation relocation!

This new file successfully sets up the necessary configuration for loading MDX content in the new documentation location. The implementation is concise, uses appropriate libraries, and aligns well with the PR objectives of moving the engineering documentation to a new location.

Great job on this addition to the codebase!

apps/engineering/app/(home)/layout.tsx (3)

1-3: LGTM: Imports are well-structured and appropriate.

The imports are correctly organized, separating external packages, React types, and local configurations. The use of "fumadocs-ui" aligns with the PR objective of enhancing engineering documentation.


5-9: LGTM: Component structure follows React and TypeScript best practices.

The Layout component is well-defined with proper TypeScript typing for its props and return value. The use of a functional component aligns with modern React patterns.


1-11: Overall assessment: Well-implemented layout component for engineering documentation.

This new Layout component effectively integrates fumadocs-ui into the project, aligning with the PR's objective of enhancing engineering documentation. The code is well-structured, type-safe, and follows React best practices. The use of a separate configuration file (layout.config) promotes maintainability.

The only suggestion for improvement is to consider adding flexibility for overriding layout options on a per-page basis, as detailed in the previous comment.

Great job on this implementation!

apps/engineering/tailwind.config.js (4)

1-1: LGTM: Import statement is correct and aligns with PR objectives.

The import of createPreset from "fumadocs-ui/tailwind-plugin" is appropriate for setting up the Tailwind configuration for the new engineering documentation location.


3-3: LGTM: Proper type annotation for Tailwind configuration.

The JSDoc type annotation @type {import('tailwindcss').Config} is correct and ensures type safety for the configuration object.


5-11: LGTM: Comprehensive content sources configuration.

The content array correctly specifies all necessary file types and locations for the engineering documentation, including:

  • TypeScript and TypeScript React files in components, app, and content directories
  • Markdown and MDX files in the content directory
  • Relevant files from the "fumadocs-ui" package

This configuration aligns well with the PR objective of moving engineering docs to "fuma".


1-13: Overall assessment: Well-structured Tailwind configuration for the new engineering documentation.

This new Tailwind CSS configuration file is well-structured and aligns perfectly with the PR objectives of moving engineering documentation to "fuma". It correctly imports and uses the necessary "fumadocs-ui" components, specifies appropriate content sources, and utilizes the required preset.

The configuration covers all necessary aspects:

  1. Proper import of createPreset
  2. Correct type annotation for the configuration object
  3. Comprehensive content sources specification
  4. Appropriate use of the fumadocs-ui preset

This setup should provide a solid foundation for styling the new engineering documentation.

apps/engineering/app/api/search/route.ts (3)

1-2: LGTM: Imports are appropriate for the search API implementation.

The imports are well-chosen for the purpose of this file:

  1. source from a local module, likely containing the page data.
  2. createSearchAPI from the "fumadocs-core" package, providing the search functionality.

1-12: Overall, this implementation aligns well with the PR objectives.

This new file successfully introduces a search API for the engineering documentation, which aligns with the PR's goal of enhancing the docs. The use of the "fumadocs-core" package suggests that this is part of the effort to move the documentation to the new "fuma" location mentioned in the PR objectives.

The implementation is clean and straightforward, providing a solid foundation for search functionality in the engineering docs. With the minor suggestions provided earlier, this should serve as a valuable addition to improve the accessibility and organization of the documentation.


4-12: LGTM: API creation looks good, but consider clarifying the "advanced" naming.

The search API implementation looks solid:

  • Appropriate use of createSearchAPI to set up the GET endpoint.
  • Comprehensive index structure including title, description, structuredData, id, and url.

However, I have one suggestion:

The API is named "advanced", but it's not clear from this implementation what makes it advanced. Consider either:

  1. Renaming it to something more descriptive of its current functionality, or
  2. Adding a comment explaining what makes this search API "advanced".

Also, a minor observation:

The id and url fields are both set to page.url. Is this intentional, or should id be a unique identifier separate from the URL?

To verify the uniqueness of page URLs, you could run:

This script will help ensure that using the URL as both id and url won't lead to conflicts.

apps/engineering/app/(home)/page.tsx (3)

1-1: LGTM: Import statement is correct and necessary.

The Link component from Next.js is properly imported and used in the component.


3-16: LGTM: Component structure follows React and Next.js best practices.

The HomePage component is correctly defined as a functional component and exported as default, which is appropriate for a Next.js page component.


5-11: LGTM: Styling is consistent and follows Tailwind CSS best practices. Verify custom classes.

The component's styling using Tailwind CSS classes is well-structured and achieves the desired layout and text formatting.

Please ensure that the custom classes text-fd-muted-foreground and text-fd-foreground are defined in your global stylesheet or Tailwind configuration. Run the following script to verify:

apps/engineering/app/layout.config.tsx (1)

1-1: LGTM: Import statement is correct.

The import of HomeLayoutProps from "fumadocs-ui/home-layout" is appropriate for typing the baseOptions constant.

apps/engineering/app/layout.tsx (3)

1-5: LGTM: Imports are appropriate and align with PR objectives.

The import statements are well-structured and include necessary components from "fumadocs-ui", which aligns with the PR objective of moving engineering docs to "fuma". The inclusion of the Google font and React types is also appropriate for the component's needs.


7-9: LGTM: Font setup is efficient and follows best practices.

The setup of the Inter font with a Latin subset is a good practice. It helps to optimize performance by reducing the font file size while still covering the necessary character set for the documentation.


11-22: LGTM: Layout structure is well-organized, but consider hydration warnings.

The Layout component is well-structured and correctly implements the fumadocs-ui components, which aligns with the PR objectives. The use of RootProvider and the Banner component with the "rainbow" variant adds a nice touch to the documentation layout.

However, be cautious about suppressing hydration warnings (suppressHydrationWarning). While this is sometimes necessary, it might hide potential issues. Ensure that you've thoroughly tested the component to confirm there are no actual hydration problems.

To verify that hydration suppression is necessary, run the following script:

If the script returns matches, review those areas to ensure they're not causing hydration mismatches.

apps/engineering/package.json (2)

20-28: Approve devDependencies changes and suggest cleanup.

The changes to devDependencies align well with the shift to Next.js and React, and the addition of TypeScript types and modern CSS tooling will improve the developer experience. These changes are approved.

Action items:

  1. Ensure all Mintlify-related configurations or files have been removed from the project.
  2. Update any contribution guidelines or developer documentation to reflect the new development environment and tools.
#!/bin/bash
# Search for any remaining Mintlify configurations
echo "Searching for Mintlify-related files or configurations:"
rg -i "mintlify" --type yaml --type json --type javascript --type typescript
fd -i "mintlify"

2-3: Verify the package name change and version reset.

The package name has been changed from "@unkey/engineering" to "engineering", and the version has been reset to "0.0.0". These changes might have significant implications:

  1. The name change could affect how this package is referenced in other parts of the project.
  2. Resetting the version to 0.0.0 is unusual and might indicate a complete overhaul of the package.

Please confirm if these changes are intentional and consider the following:

  • Update any references to this package in other parts of the project.
  • Ensure the version reset aligns with your versioning strategy.
✅ Verification successful

Package name change and version reset verified.

No references to the old package name "@unkey/engineering" were found in the codebase. Additionally, no other package.json files with similar names exist. The changes to the package name and version are intentional and do not affect other parts of the project.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for references to the old package name
echo "Searching for references to @unkey/engineering:"
rg "@unkey/engineering" --type json --type typescript --type javascript

# Check if there are any other package.json files with similar names
echo "Checking for other engineering-related package.json files:"
fd "engineering.*package.json"

Length of output: 574


Script:

#!/bin/bash
# Search for references to the old package name
echo "Searching for references to @unkey/engineering:"
rg "@unkey/engineering" --type json --type ts --type js

# Check if there are any other package.json files with similar names
echo "Checking for other engineering-related package.json files:"
fd "engineering.*package\.json"

Length of output: 321

apps/engineering/content/docs/api-design/rpc.mdx (2)

1-4: LGTM: Frontmatter is well-structured and informative.

The frontmatter provides a clear title and concise description, which is helpful for readers and potentially for SEO.


1-36: Overall, excellent documentation with room for minor enhancements.

This documentation provides a clear and concise explanation of the RPC-style API used by Unkey. The structure is logical, and the examples are helpful. To further improve the documentation, consider implementing the suggested enhancements:

  1. Add more context about the API design choices, especially regarding the use of only GET and POST methods.
  2. Expand on examples, particularly for filtering and sorting with GET requests.
  3. Provide more detailed examples for different types of POST operations (create, update, delete).
  4. Use syntax highlighting for code blocks to improve readability.
  5. Add brief explanations or comments for the curl examples to clarify their purpose.

These enhancements will make the documentation even more valuable for developers working with the Unkey API.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~6-~6: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...es HTTP RPC-style methods and generally follow the schema: ```bash https://api.unkey....

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[typographical] ~11-~11: After the expression ‘for example’ a comma is usually used.
Context: ...{version}/{service}.{procedure} ``` For example `GET https://api.unkey.dev/v1/apis.list...

(COMMA_FOR_EXAMPLE)

apps/engineering/content/docs/api-design/errors.mdx (1)

1-4: LGTM: Frontmatter is well-structured.

The frontmatter provides clear and concise metadata for the document, which is essential for proper rendering and indexing.

biome.json (1)

45-45: LGTM. Can you clarify the purpose of the new ignore patterns?

The addition of ".source" to the linter's ignore list is noted. This change aligns with the PR objective of relocating engineering documentation. However, for better maintainability and to ensure these patterns are used correctly:

  1. Could you provide more context on what types of files or directories ".source" and ".trigger" represent?
  2. Are these patterns related to the new "fuma" location for engineering docs?

Understanding the purpose of these ignore patterns will help future maintainers and ensure they're applied consistently across the project.

apps/engineering/app/docs/layout.tsx (4)

1-6: LGTM: Imports are well-organized and relevant.

The import statements are clean, following best practices, and all imported items are utilized in the component.


8-9: LGTM: Component structure is well-defined.

The Layout component is properly structured as a functional component with TypeScript prop typing. It correctly wraps its children with the DocsLayout component, following React composition patterns.

Also applies to: 46-49


1-49: Overall implementation looks great and aligns with PR objectives.

This new Layout component effectively enhances the engineering documentation structure by providing a clear and visually appealing navigation system. It aligns well with the PR objective of improving documentation organization.

Key points:

  1. The use of fumadocs-ui components provides a consistent documentation layout.
  2. The RootToggle in the sidebar offers easy navigation to key documentation sections.
  3. The code is well-structured and follows React and TypeScript best practices.

Great job on improving the documentation structure!


6-6: Please clarify the contents of baseOptions.

The baseOptions import from "../layout.config" is used in the component, but its contents are not visible in this file. To ensure proper usage and maintainability, it would be helpful to have a brief comment explaining what baseOptions contains or its purpose.

To verify the contents of baseOptions, you can run the following script:

apps/engineering/content/docs/services/vault.mdx (1)

6-6: LGTM: Import statement for new UI components.

The import of Accordion and Accordions from fumadocs-ui is correct and aligns with the PR objective of updating the documentation structure. These components are used later in the file, making this import necessary.

apps/engineering/app/docs/[[...slug]]/page.tsx (1)

1-44: Overall code structure and component usage are appropriate

The file is well-structured, and the usage of imported components and types aligns with best practices. The JSX returned by the Page component correctly renders the documentation page with the provided data.

Comment on lines +12 to +15
const page = source.getPage(params.slug);
if (!page) {
notFound();
}
Copy link
Contributor

@coderabbitai coderabbitai bot Oct 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Missing 'await' when calling asynchronous 'source.getPage'

If source.getPage is an asynchronous function, you should use await to ensure the function resolves before proceeding:

- const page = source.getPage(params.slug);
+ const page = await source.getPage(params.slug);

Committable suggestion was skipped due to low confidence.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chronark, glad it makes sense!

(_/)
(• ᴗ •)
/

@chronark chronark changed the title eng docs refactor: eng docs Oct 4, 2024
@vercel vercel bot temporarily deployed to Preview – play October 4, 2024 11:17 Inactive
@vercel vercel bot temporarily deployed to Preview – www October 4, 2024 11:18 Inactive
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (3)
apps/engineering/content/docs/api-design/errors.mdx (3)

7-9: Improve readability with proper hyphenation.

Consider applying hyphens to compound adjectives for better readability and adherence to grammar rules.

Apply the following changes:

-Machine and human readable error codes
+Machine- and human-readable error codes

-The Unkey API returns machine readable error codes to quickly identify the type of error as well as link to the docs and a requestId.
+The Unkey API returns machine-readable error codes to quickly identify the type of error as well as link to the docs and a requestId.
🧰 Tools
🪛 LanguageTool

[misspelling] ~7-~7: This word is normally spelled with a hyphen.
Context: ...dling for Unkey APIs' --- Machine and human readable error codes The Unkey API returns mach...

(EN_COMPOUNDS_HUMAN_READABLE)


[misspelling] ~9-~9: This word is normally spelled with a hyphen.
Context: ...able error codes The Unkey API returns machine readable error codes to quickly identify the typ...

(EN_COMPOUNDS_MACHINE_READABLE)


25-28: Enhance clarity and provide more context on future plans.

The information about future improvements is valuable, but it could be more specific and properly formatted.

  1. Apply the following change for proper hyphenation:
-to offer more error details to the user in a well defined format.
+to offer more error details to the user in a well-defined format.
  1. Consider expanding on what "stateful servers" means in this context and how it will benefit error reporting. This additional information would provide more value to the readers.
🧰 Tools
🪛 LanguageTool

[misspelling] ~28-~28: This word is normally spelled with a hyphen.
Context: ...fer more error details to the user in a well defined format. [RFC9457](https://www.rfc-edi...

(EN_COMPOUNDS_WELL_DEFINED)


31-31: LGTM: Useful reference provided.

The reference to RFC9457 is valuable for readers who want to dive deeper into API error reporting standards.

Consider adding a brief description of what RFC9457 covers to provide more context for the readers. For example:

[RFC9457](https://www.rfc-editor.org/rfc/rfc9457.html) looks interesting. It provides guidelines for problem details in HTTP APIs.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between ed00c4c and e77891a.

📒 Files selected for processing (1)
  • apps/engineering/content/docs/api-design/errors.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
apps/engineering/content/docs/api-design/errors.mdx

[misspelling] ~7-~7: This word is normally spelled with a hyphen.
Context: ...dling for Unkey APIs' --- Machine and human readable error codes The Unkey API returns mach...

(EN_COMPOUNDS_HUMAN_READABLE)


[misspelling] ~9-~9: This word is normally spelled with a hyphen.
Context: ...able error codes The Unkey API returns machine readable error codes to quickly identify the typ...

(EN_COMPOUNDS_MACHINE_READABLE)


[misspelling] ~28-~28: This word is normally spelled with a hyphen.
Context: ...fer more error details to the user in a well defined format. [RFC9457](https://www.rfc-edi...

(EN_COMPOUNDS_WELL_DEFINED)

🔇 Additional comments (2)
apps/engineering/content/docs/api-design/errors.mdx (2)

1-5: LGTM: Frontmatter is well-structured.

The frontmatter provides clear and concise metadata for the document, which is essential for proper indexing and display in documentation systems.


11-20: LGTM: JSON example is well-formatted and informative.

The JSON example has been corrected as per previous suggestions. It now accurately represents the error response structure, which is crucial for API users to understand and handle errors effectively.

@chronark chronark merged commit 3edfe6f into main Oct 4, 2024
@chronark chronark deleted the eng-docs branch October 4, 2024 11:31
mcstepp pushed a commit that referenced this pull request Oct 8, 2024
* feat: move eng docs to fuma

* fix: merge conflicts

* fix: json format
@coderabbitai coderabbitai bot mentioned this pull request Oct 23, 2024
18 tasks
@coderabbitai coderabbitai bot mentioned this pull request Nov 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant