⚠️ Warning: This project is not yet stable and may undergo significant changes before reaching version 1.0.0. We strongly advise against using it in production environments.
Universal document format converter providing seamless transformation between Markdown, HTML, and DOCX formats. Built on TipTap/ProseMirror with comprehensive TypeScript support.
- docen - Universal document converter with unified API for Markdown, HTML, and DOCX transformations
- @docen/extensions - Comprehensive TipTap extension collection with full TypeScript types
- @docen/export-docx - Export TipTap/ProseMirror content to Microsoft Word DOCX format
- @docen/import-docx - Import Microsoft Word DOCX files to TipTap/ProseMirror content
- @docen/deduplicate - Document deduplication and similarity analysis utilities
For seamless conversion between Markdown, HTML, and DOCX formats, use the unified docen package:
# Install with npm
$ npm install docen
# Install with yarn
$ yarn add docen
# Install with pnpm
$ pnpm add docenimport { parseHTML, generateDOCX, parseMarkdown } from "docen";
// HTML → DOCX
const doc = parseHTML("<h1>Title</h1><p>Hello World</p>");
const docx = await generateDOCX(doc, { outputType: "nodebuffer" });
// Markdown → HTML
const doc2 = parseMarkdown("# Title\n\nHello World");
const html = generateHTML(doc2);$ npm install @docen/export-docximport { generateDOCX } from "@docen/export-docx";
import { writeFileSync } from "node:fs";
const content = {
type: "doc",
content: [
{
type: "paragraph",
content: [
{
type: "text",
marks: [{ type: "bold" }, { type: "italic" }],
text: "Hello, world!",
},
],
},
],
};
const docx = await generateDOCX(content, { outputType: "nodebuffer" });
writeFileSync("document.docx", docx);$ npm install @docen/import-docximport { parseDOCX } from "@docen/import-docx";
import { readFileSync } from "node:fs";
// Read DOCX file
const buffer = readFileSync("document.docx");
// Parse DOCX to TipTap JSON
const content = await parseDOCX(buffer);
// Use in TipTap editor
editor.commands.setContent(content);- Node.js 18.x or higher
- pnpm 9.x or higher (recommended package manager)
- Git for version control
-
Clone the repository:
git clone https://github.com/DemoMacro/docen.git cd docen -
Install dependencies:
pnpm install
-
Development mode:
pnpm dev
-
Build all packages:
pnpm build
-
Test locally:
# Link the package globally for testing cd packages/export-docx pnpm link --global # Test in your project import { generateDOCX } from '@docen/export-docx';
pnpm dev # Development mode with watch
pnpm build # Build all packages
pnpm lint # Run code formatting and lintingWe welcome contributions! Here's how to get started:
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/docen.git cd docen -
Add upstream remote:
git remote add upstream https://github.com/DemoMacro/docen.git
-
Install dependencies:
pnpm install
-
Development mode:
pnpm dev
-
Test locally:
# Link the package globally for testing cd packages/export-docx pnpm link --global # Test your changes import { generateDOCX } from '@docen/export-docx';
- Code: Follow our project standards
- Test:
pnpm build && <test your extension> - Commit: Use conventional commits (
feat:,fix:, etc.) - Push: Push to your fork
- Submit: Create a Pull Request to upstream repository
This project follows core principles:
- TipTap Focus: Built specifically for TipTap/ProseMirror ecosystem
- Type Safety: Full TypeScript support with comprehensive types
- Modular Design: Each converter handles specific content types
- Extensible: Easy to add new content type converters
- Performance: Optimized for large documents and batch processing
- User Experience: Simple API with powerful configuration options
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by Demo Macro