A self-hosted, local-first workspace for notes, docs, and databases.
Built for focus, designed for clarity, and always under your control.
Warning
Active Development — LibreDiary is under active development and has not yet reached a stable release. APIs, database schemas, and configuration formats may change between versions without prior notice. You may encounter incomplete features, unexpected behaviour, or breaking changes when upgrading. We recommend pinning to a specific version in production and reviewing the changelog before updating. Bug reports and feedback are very welcome — please open an issue if something breaks.
LibreDiary is an open-source alternative to Notion, designed for complete data sovereignty. Unlike cloud-dependent tools, LibreDiary is engineered for self-hosting, ensuring your information remains private and accessible offline.
Key Features:
- Block-based editor powered by Tiptap
- Real-time collaboration with CRDT sync
- Multi-tenant organisation support
- Polymorphic storage (local, S3, MinIO) with provider migration
- Enterprise SSO with domain lockdown
- AI-powered content translation (31 languages via OpenRouter) with caching
- Hybrid search (Meilisearch + PostgreSQL FTS fallback) with faceted filtering
- Page version history with diff comparison
- Auto-delete trash after 30 days
- Guest share links with access tracking
- Time tracking with floating timer widget and time reports
- Onboarding wizard with getting started checklist
- KaTeX math blocks and markdown round-trip serialisation
- PWA support with offline viewing
- Mobile-optimised experience with bottom navigation and quick-capture mode
| Layer | Technology |
|---|---|
| Frontend | Vue 3, Vuestic UI, Tiptap, Pinia, Yjs |
| Backend | Node.js, Fastify, Hocuspocus, Prisma |
| Database | PostgreSQL |
| Search | Meilisearch (optional) / PostgreSQL FTS (default) |
| Infrastructure | pnpm, Turborepo, Docker |
See the full Project Roadmap for development milestones and progress.
# Clone the repository
git clone https://github.com/your-org/librediary.git
cd librediary
# Install dependencies
pnpm install
# Setup environment
cp .env.example .env
# Start development services
docker compose up -d
# Run database migrations
pnpm db:push
# Start development servers
pnpm dev| Guide | Description |
|---|---|
| User Guide | Editor, pages, databases, collaboration, search, AI |
| Admin Guide | Setup, user management, storage, backups, monitoring |
| API Reference | All 95+ REST endpoints with auth and examples |
| Troubleshooting | Common issues and solutions |
| Deployment | Docker production deployment |
| Translating | Contributing translations |
For production self-hosted deployment with Docker, see the Deployment Guide.
librediary/
├── apps/
│ ├── server/ # Fastify backend API
│ └── web/ # Vue 3 frontend
├── packages/
│ ├── shared/ # Shared types, schemas, utilities
│ ├── tsconfig/ # TypeScript configurations
│ └── eslint-config/ # ESLint configurations
└── tooling/ # Build and dev tools
See CONTRIBUTING.md for development guidelines.
LibreDiary supports 16 languages. Initial translations were generated by Claude and need native-speaker review to ensure accuracy and natural phrasing.
Whether you want to verify an existing translation or add a new language, see the Translation Guide to get started.
GNU AGPLv3 — Derivative works used as a service must share source code.
Developed by Akaal Creatives
“Notion is a registered trademark of Notion Labs, Inc. This project is not affiliated with or endorsed by Notion.”