bởi Arjun B.

A browser-based IDE for developing, validating, converting, and previewing AsyncAPI documents, with a built-in design system. Supports remote URL import, local folder access, schema editing, and Docker deployment.
AsyncAPI Studio is a full-featured browser-based editor for AsyncAPI documents built on Next.js 14 (App Router). It provides a Monaco-powered code editor, real-time validation, visual diagrams, template generation, and multi-file reference resolution. The typical buyer is a team embedding or self-hosting an AsyncAPI editing environment inside a developer portal or internal tooling platform.
src/app/ - Next.js App Router entry: root layout, main page, and API route handlerssrc/app/api/v1/generate/route.tsx - REST endpoint for template-based code generationsrc/components/ - All React UI components (editor, navigation, sidebar, modals, popovers)src/components/Editor/ - Monaco wrapper, editor toolbar, import/export/convert/generate dropdownssrc/components/Modals/ - All modal dialogs: generator, settings, import, convert, file managementsrc/components/Popovers/ - Survey and contextual popover componentssrc/components/common/ - Shared primitives: Dropdown, Markdown, Switch, Tooltipsrc/helpers/ - Utility functions for parsing, reference resolution, URL handlingsrc/services/ - Business logic: parser service, generator service, storage adapterssrc/state/ - Global application state (likely Zustand or similar)src/types/ - TypeScript type definitions and interfacessrc/schemas/ - JSON schemas used for validationsrc/examples/ - Bundled AsyncAPI example documentssrc/netlify/ - Netlify-specific serverless function helperscypress/ - End-to-end test suite and support commandspublic/ - Static assets: favicons, logo SVG, OG imagescripts/template-parameters.ts - Build-time script for template parameter extractionnext.config.js - Next.js configurationtailwind.config.js - Tailwind CSS configurationnetlify.toml - Netlify deployment configurationnpm install next react react-dom typescript
npm install @asyncapi/parser @asyncapi/generator
npm install @monaco-editor/react monaco-editor
npm install zustand
npm install tailwindcss postcss autoprefixer
npm install @tailwindcss/typography
npm install js-yaml
npm install axios
npm install react-split
npm install @asyncapi/react-component
Khởi chạy sandbox cách ly và chạy phía máy chủ — không cần cài đặt cục bộ.
Tetrees AI Review cho phiên bản này
This Next.js, React web app completed archive review with strong static results. Structure, dependency manifests, documentation, functional source, and common risk patterns were checked by the Tetrees verification pipeline; runtime phases are stated separately.
Deterministic AVCP artifact review
Quy trình avcp-2026-08-04.1 · SHA-256 a078c4f06e55a66b…
This version-scoped review deterministically inspects the submitted archive for structure, dependencies, documentation, functional source, and common malicious or high-risk signals. Build and test phases are reported as passed only after an isolated sandbox audition. It is not a guarantee of perfect security.
Đã đánh giá 4 thg 8, 2026
Đưa sản phẩm này thẳng vào AI IDE, trình tạo web hoặc cloud IDE của bạn.
Kết nối Tetrees với AI IDE tương thích để liệt kê sản phẩm bạn sở hữu và nhận ZIP đã xác minh mà không cấp quyền tải lên của người bán.
Chưa có đánh giá.
Sign in to join the discussion
Loading discussion…
Node.js v18.17+ is required. The project uses the Next.js App Router and native
fetch. No native binary modules, iOS/Android steps, orexpo prebuildare involved. If deploying to Netlify, the includednetlify.tomlhandles build configuration.
Copy the source/ directory (i.e., apps/studio) into your monorepo or project root, e.g., packages/studio/.
Add or merge into your root package.json workspaces:
{
"workspaces": ["packages/studio"]
}
Wire tsconfig.json paths. Ensure your root (or the studio package) tsconfig.json has:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
},
"lib": ["dom", "dom.iterable", "esnext"],
"module": "esnext",
"moduleResolution": "bundler",
"jsx": "preserve"
}
}
Configure required environment variables. Create .env.local in the studio package root:
NEXT_PUBLIC_API_BASE_URL=http://localhost:3000
# Optional: set a custom generator endpoint
ASYNCAPI_GENERATOR_URL=https://generator.asyncapi.com
Run the development server:
cd packages/studio
pnpm install
pnpm run dev
# or: next dev
Build for production:
pnpm run build:studio
# or: next build
import { Editor } from '@/components/Editor';
// or from the barrel:
import { Editor } from '@/components';
The top-level editor composition component. Renders the Monaco-based AsyncAPI document editor with toolbar, validation output, and sidebar. Drop it into any Next.js page or layout that needs a full editing surface.
import { MonacoWrapper } from '@/components/Editor';
interface MonacoWrapperProps {
language: string;
value: string;
onChange?: (value: string | undefined) => void;
// ...additional Monaco editor options
}
A thin wrapper around @monaco-editor/react pre-configured with AsyncAPI language support and theming. Use it when you need a standalone code editor surface without the full Editor chrome.
import { Content } from '@/components';
Renders the main split-pane layout that hosts the editor on one side and the visualiser/documentation panel on the other. Use it as the primary page body component when building a full studio page.
import { Navigation } from '@/components';
Top navigation bar with file controls, import/export menus, and settings access. Wire it above Content in your layout for a complete studio shell.
import { Dropdown } from '@/components/common';
interface DropdownProps {
label: React.ReactNode;
children: React.ReactNode;
// ...additional positioning/style props
}
A headless-style dropdown primitive used by all toolbar menus. Reuse it to extend the toolbar with custom actions without re-implementing the positioning logic.
Drop the complete editor UI into an existing Next.js 14 App Router page with minimal wiring.
// app/editor/page.tsx
'use client';
import { Navigation } from '@/components/Navigation';
import { Sidebar } from '@/components/Sidebar';
import { Content } from '@/components/Content';
export default function EditorPage() {
return (
<div className="flex flex-col h-screen w-screen overflow-hidden">
<Navigation />
<div className="flex flex-1 overflow-hidden">
<Sidebar />
<Content />
</div>
</div>
);
}
Embed just the Monaco editor for editing a raw AsyncAPI YAML string inside a custom form.
'use client';
import { useState } from 'react';
import { MonacoWrapper } from '@/components/Editor';
const INITIAL_DOC = `asyncapi: '3.0.0'
info:
title: My API
version: '1.0.0'
channels: {}
`;
export function SchemaEditor() {
const [doc, setDoc] = useState(INITIAL_DOC);
return (
<div style={{ height: 500 }}>
<MonacoWrapper
language="yaml"
value={doc}
onChange={(val) => val !== undefined && setDoc(val)}
/>
<pre style={{ marginTop: 8, fontSize: 12 }}>{doc}</pre>
</div>
);
}
Open the ImportURLModal programmatically to let users paste a remote AsyncAPI URL.
'use client';
import { useState } from 'react';
import { ImportURLModal } from '@/components/Modals';
export function ImportButton() {
const [open, setOpen] = useState(false);
return (
<>
<button onClick={() => setOpen(true)}>Import from URL</button>
{open && (
<ImportURLModal
onClose={() => setOpen(false)}
/>
)}
</>
);
}
'use client';
import { Tooltip } from '@/components/common';
export function SaveButton({ onClick }: { onClick: () => void }) {
return (
<Tooltip content="Save document to disk">
<button
onClick={onClick}
className="px-3 py-1 bg-blue-600 text-white rounded"
>
Save
</button>
</Tooltip>
);
}
src/app/layout.tsx - Root Next.js App Router layout; sets HTML metadata and global providers.src/app/page.tsx - Main studio page; composes navigation, sidebar, and content panes.src/app/api/v1/generate/route.tsx - API route that proxies or runs AsyncAPI Generator for template-based code generation.src/components/Editor/Editor.tsx - Full editor composition: Monaco + toolbar + validation output.src/components/Editor/MonacoWrapper.tsx - Configured Monaco editor instance with AsyncAPI language support.src/components/Editor/ConvertDropdown.tsx - Toolbar dropdown for converting between AsyncAPI spec versions.src/components/Editor/GenerateDropdown.tsx - Toolbar dropdown to trigger code generation via the API route.src/components/Editor/ImportDropdown.tsx - Toolbar dropdown exposing URL, UUID, base64, and folder import flows.src/components/Editor/SaveDropdown.tsx - Toolbar dropdown for save / save-as actions.src/components/Editor/ShareButton.tsx - Generates a shareable link encoding the current document.src/components/Modals/ - Self-contained modal dialogs for every discrete user action (import, convert, generate, settings).src/components/Popovers/SurveyPopover.tsx - Contextual popover prompting users for feedback.src/components/common/Dropdown.tsx - Base dropdown positioning primitive.src/components/common/Markdown.tsx - Markdown renderer with Mermaid diagram support.src/components/common/Switch.tsx - Accessible toggle switch input.src/components/common/Tooltip.tsx - Lightweight tooltip wrapper.src/components/Navigation.tsx - Top navigation bar.src/components/Sidebar.tsx - Left sidebar with file tree and navigation links.src/components/Content.tsx - Split-pane host for editor and visualiser panels.src/components/Toolbar.tsx - Horizontal toolbar housing all editor action dropdowns.src/state/ - Global state store (document content, UI flags, file tree).src/services/ - Parser, generator, and storage service abstractions.src/helpers/ - Pure utility functions: URL resolution, base64 encoding, ref traversal.src/examples/ - Bundled example AsyncAPI documents loaded on first launch.src/schemas/ - JSON Schema definitions for settings and configuration validation.src/types.ts - Top-level shared TypeScript interfaces.scripts/template-parameters.ts - Build-time script that extracts generator template parameters for the UI.cypress/ - Cypress E2E tests covering import, edit, and generate flows.@monaco-editor/react cannot run server-side; always import MonacoWrapper inside a 'use client' component or use next/dynamic with { ssr: false }.'use client' missing on common components: The src/components/common/index.ts barrel declares 'use client' at the top; if you re-export these through a server component barrel you will get hydration errors. Keep them in client component trees only.next build. Pin .nvmrc or engines field.package.json are replaced with relative paths or published package versions.NEXT_PUBLIC_ prefix on env vars: Values consumed in client components must be prefixed NEXT_PUBLIC_; server-only vars (e.g., generator service credentials) must not carry the prefix to avoid leaking them to the browser bundle.src/ to a non-standard location, update tailwind.config.js content globs to match; otherwise all utility classes will be purged and the UI will be unstyled.I have the AsyncAPI Studio source code in the `source/` directory and its
integration guide in `USAGE.md`. The upstream project is `asyncapi_studio`
(no npm package; it is a Next.js application source).
My project is a [describe your stack, e.g., "Next.js 14 monorepo with Tailwind
and Zustand"]. I want to integrate the AsyncAPI Studio editor into my project.
Please do the following step-by-step:
1. Read `USAGE.md` and `source/src/components/index.ts`,
`source/src/components/Editor/index.ts`, and
`source/src/components/Modals/index.tsx` to understand all public exports.
2. Copy `source/src/` into `packages/studio/src/` in my project and add the
package to my workspace.
3. Update my root `tsconfig.json` with the path aliases from `USAGE.md`.
4. Add all required dependencies from `USAGE.md` to my `package.json`.
5. Create a new route `app/editor/page.tsx` that renders the full Studio UI
using the `Navigation`, `Sidebar`, and `Content` components, wrapped in a
`'use client'` boundary.
6. Wire the `/api/v1/generate` route from `source/src/app/api/v1/generate/`
into my Next.js API routes.
7. Add the necessary environment variables to `.env.local` as listed in
`USAGE.md`.
8. Confirm there are no SSR issues with Monaco by checking that
`MonacoWrapper` is only imported in client components.
Show me the exact file changes, new files, and any commands to run.
The upstream license is not explicitly reproduced in the README excerpt; see source/LICENSE if present in the repository. The source originates from the AsyncAPI Studio open-source project maintained by the AsyncAPI Initiative. Check the repository for the current license (Apache-2.0 is typical for AsyncAPI projects).
This product’s unique contribution is clean room implementation of valuable code block into AVCP compatible standard.
Hướng dẫn cài đặt đầy đủ và prompt tích hợp sẽ mở khóa sau khi mua.
Automation, Utilities & Developer Tools
Miễn phí