Skip to main content

What is aleup?

aleup is a headless, modular document toolkit for React apps. It gives you:

  1. Import — files from local disk and cloud providers (Google Drive, OneDrive, Box, Dropbox) via Uppy + Companion, streamed server-side so bytes never touch the browser.
  2. View — pdf / docx / markdown / text / images with format-appropriate renderers.
  3. Edit — markdown and DOCX in-app (headless Tiptap), with high-fidelity DOCX round-tripping: only the blocks the user changed are patched, so every byte of untouched formatting survives.
  4. Export — the exact DOM the user is looking at, paginated to PDF.
  5. Save back — to a user's connected cloud drive.

The one rule

aleup never knows about your app. No auth, no database, no storage opinions. Host concerns are injected through small interfaces called portsDestinationPort says where uploaded bytes go, CredentialsPort supplies OAuth app credentials, and so on. That's also what makes npm update safe: vendor libraries (Uppy, Tiptap, docxodus, html2pdf.js) are peer dependencies touched only inside adapters, and the behaviors we rely on are pinned by contract tests that run in CI against the installed versions.

Headless first, themeable always

Every capability ships as hooks/logic with zero UI. The optional React components share one theming contract — per-slot classNames, components slot substitution, data-aleup-* attributes, and --aleup-* CSS variables — so the same picker renders native in shadcn, MUI, daisyUI, Mantine, or anything else. See the examples.

Packages

PackageWhat it does
@aleup/corePorts, MIME registry, format detection. Zero runtime deps.
@aleup/importuseUppyImport + useCloudDrivePicker headless hooks.
@aleup/companionConfig-mapped factory for the Uppy Companion server.
@aleup/editorHeadless Tiptap document editor preset + page component.
@aleup/viewFormat router; DOCX/markdown renderers behind opt-in subpaths.
@aleup/docxDOCX ⇄ HTML/Markdown translation + editing sessions (WASM).
@aleup/pdfDOM → paginated PDF export.
@aleup/connectOAuth + save-back write clients, fetch-only.

Install only what you use — @aleup/core is the single shared dependency.