Alexandrie

The open-source, offline-first Notion, Obsidian & Confluence alternative with multi-tenant teams, OIDC/SSO, and one-command Docker deployment.

2.8Kstars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
86/100Excellent
Development Activity96
Maintenance96
Community56
Maturity56
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
73/100Good
Architecture82
Code Quality72
Innovation62
Learning Curve75

Alexandrie is a self-hosted knowledge base and wiki platform built for teams and individuals who want the flexibility of Notion or Confluence without giving up control of their data. It pairs an extended CodeMirror 6 Markdown editor — with LaTeX, custom containers, diagrams, and interactive checkboxes — with a multi-tenant structure of Teams, Workspaces, Categories, and nested Documents, so organizations can isolate content between groups while still sharing a single deployment.

The platform is built as an offline-first Progressive Web App: it installs on desktop or mobile, works without a connection, and syncs changes back once online. On the backend, a Go and Gin API backed by MySQL handles authentication (including OpenID Connect SSO), a five-level per-node permission model, and S3-compatible storage integration for media and full-system backups, so self-hosters can plug in MinIO, Garage, RustFS, or AWS without vendor lock-in.

Beyond note-taking, Alexandrie bundles the collaboration tooling that usually forces teams onto a hosted product: a global Ctrl+K command center, full-text search with relevancy ranking, per-workspace Kanban boards for task tracking, and ZIP-based import/export for moving whole workspaces in or out. The entire stack — Vue/Nuxt frontend, Go backend, and MySQL — comes up with a single docker compose up -d, making it practical to self-host in minutes rather than provisioning infrastructure by hand.

What You Get

  • An extended CodeMirror 6 Markdown editor with LaTeX, custom containers, native diagrams, and a reusable snippet manager
  • Multi-tenant Teams, Workspaces, Categories, and nested Documents for isolating content across groups
  • A five-level permission model (None, Read, Write, Admin, Owner) enforced per node or workspace
  • Built-in OpenID Connect (OIDC) SSO providers for enterprise-style authentication
  • S3-compatible storage integration (MinIO, Garage, RustFS, AWS) for media and automated backups
  • An offline-first Progressive Web App with installable desktop/mobile support and background sync
  • A global Ctrl+K command center plus full-text search with relevancy-ranked results
  • Per-workspace Kanban boards for lightweight task tracking alongside documentation

Common Use Cases

  • Standing up a self-hosted team wiki or internal knowledge base without Confluence’s licensing cost
  • Replacing Notion for teams that require self-hosting or SSO for compliance reasons
  • Building a personal, offline-capable notes system with rich Markdown and diagrams
  • Running a documentation hub with strict per-team or per-workspace access control
  • Migrating existing notes/wikis in bulk via the ZIP import/export tooling

Under The Hood

Architecture The backend is a layered Go application: router/router.go and router/routes/*.go map HTTP endpoints to thin controllers (controllers/*.controller.go), which delegate business logic to a services layer (services/auth.service.go, node.service.go, permission.service.go, backup.service.go, oidc.service.go) backed by a repositories layer for data access via sqlx. Authorization is centralized in a dedicated permissions package (permissions/constants.go, permissions/service.go) that models both global user roles as a bitmask (RoleNone/RoleAdministrator/RoleManager/RoleModerator) and a five-level per-node permission enum (PermNone through PermOwner) mapped to required actions, keeping access control out of individual controllers. Database schema evolves through embedded, versioned migrations (app/migrations.go using golang-migrate against MySQL) rather than ORM auto-sync, and configuration loads from either an environment-supplied CONFIG_PATH TOML file or an embedded default, which supports both containerized and bare-metal deployment. The frontend is a Nuxt 4 / Vue 3 application organized around composables, Pinia stores, and feature-scoped component folders (MarkdownEditor, Kanban, CommandCenter, Navigation), separating editor state from workspace/document state. Changing the core node/permission abstraction would ripple through the services, repositories, and permissions packages simultaneously, since all three reference the same node-tree model.

Tech Stack The backend runs on Go 1.26 with the Gin web framework, sqlx over MySQL for data access, golang-migrate for schema migrations, minio-go for S3-compatible object storage, golang-jwt for session tokens, pquerna/otp for two-factor authentication, wneessen/go-mail for SMTP delivery, and bluemonday for HTML sanitization. The frontend uses Nuxt 4 on Vue 3.5 with Pinia for state, CodeMirror 6 for the Markdown editor, markdown-it with a set of plugins (anchors, containers, emoji, highlighting) for rendering, mermaid and katex for diagrams and math, and zip.js/localforage for client-side archive handling and offline storage. Deployment is containerized end-to-end via Docker Compose, with a Makefile providing local dev shortcuts for the frontend, backend, and a local MinIO instance.

Code Quality The backend includes a dedicated backend/tests package using testify assertions that exercises real HTTP flows — login with correct/incorrect/missing credentials, cookie-based session tokens, user lifecycle, and admin operations — against a running client rather than only unit-level mocks, though the suite covers core auth and user flows rather than every service. Error handling favors explicit checks with early returns and logger-based reporting, and unrecoverable startup failures (missing config, failed DB connection) exit or panic deliberately rather than continuing in a broken state. The frontend is fully TypeScript with ESLint, Stylelint, and a Nuxt-native typecheck script, all enforced in CI (pr-check.yml runs lint, lint:css, and typecheck on every pull request touching the frontend), and a separate CodeQL workflow scans both the Go and JavaScript/TypeScript code for security issues on every push and pull request.

What Makes It Unique Most self-hosted Notion/Confluence alternatives pick either a rich editor or strong offline support, not both — Alexandrie combines an extensive CodeMirror-based Markdown environment (LaTeX, diagrams, custom containers) with genuine offline-first PWA behavior and background sync, while also folding in OIDC/SSO and a five-level per-node permission model that are usually reserved for a paid tier in comparable products. Bundling S3-compatible storage as a first-class dependency, rather than local disk only, lets self-hosters point it at MinIO, Garage, or RustFS for sovereign, decoupled object storage — a deployment pattern few comparable open-source knowledge bases expose as directly.

Self-Hosting

Licensing Model MIT licensed — all features available in self-hosted deployments with no restrictions or license keys required.

Self-Hosting Restrictions None found. No ee/, enterprise/, or pro/ directories exist in the repository, and no license-gating logic (feature flags, license keys, isPro/isEnterprise checks) appears in the codebase.

Enterprise Features OIDC/SSO, per-node permission management, and full-system backup/restore are part of the open-source project itself, not gated behind a paid tier.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search