LibreDiary
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.
Overview
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
Tech Stack
| 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 |
Roadmap
See the full Project Roadmap for development milestones and progress.
Quick Start
# 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
Documentation
| 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 |
Deployment
For production self-hosted deployment with Docker, see the Deployment Guide.
Project Structure
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
Contributing
See CONTRIBUTING.md for development guidelines.
Help us translate LibreDiary
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.
License
GNU AGPLv3 — Derivative works used as a service must share source code.
Credits
Developed by Akaal Creatives
Disclaimer
“Notion is a registered trademark of Notion Labs, Inc. This project is not affiliated with or endorsed by Notion.”