Owlistic is a self-hosted, open-source notetaking and productivity app built with Flutter and Go, designed for users who want full control over their notes and tasks without relying on cloud vendors. It solves the problem of fragmented note-taking tools by combining rich text editing, real-time collaboration, and task management in a single interface. Ideal for researchers, students, and teams needing secure, offline-capable knowledge bases.
Technically, Owlistic uses Dart/Flutter for the frontend, Go for the backend, and JWT-based authentication with role-based access control. It supports Markdown import, real-time sync via WebSockets, and can be deployed via Docker or compiled binaries. The app is designed to be a privacy-focused alternative to Evernote and Joplin.
What You Get
- Rich WYSIWYG Editor - A full-featured visual editor with toolbar controls for formatting, lists, headings, and embedded content, enabling intuitive note creation without Markdown syntax.
- Real-time Sync - Notes and tasks update instantly across all devices using WebSocket-based synchronization, eliminating manual save/refresh cycles.
- Notebooks/Notes Tree - Hierarchical organization of notes into nested notebooks, allowing structured knowledge management similar to Evernote’s folder system.
- Inline Todo Items - Create and track checklists directly within notes with clickable checkboxes that persist across sessions and devices.
- JWT-Based Auth & Role-Based Access Control - Secure user authentication with role permissions (e.g., admin, editor, viewer) for collaborative workspaces and team sharing.
- Trash Management - Soft-deletion system that retains deleted notes and tasks for recovery, preventing accidental data loss.
- Dark/Light Mode - System-aware theme switching with manual toggle for comfortable viewing in any lighting environment.
- Markdown Import - Import existing .md files to migrate content from other note-taking apps like Joplin or Obsidian without re-typing.
Common Use Cases
- Running a personal knowledge base - A researcher uses Owlistic to collect, tag, and link research notes with inline tasks, keeping everything synced across laptop and tablet with full privacy.
- Team documentation hub - A startup team uses Owlistic to collaboratively write and update internal docs with real-time edits and role-based permissions for different departments.
- Student project organization - A university student organizes lecture notes, assignments, and to-dos in nested notebooks, importing PDF annotations as Markdown and syncing to their phone.
- Replacing Evernote/Joplin - A long-time Evernote user migrates their 500+ notes to Owlistic to avoid subscription fees while gaining real-time sync and self-hosting control.
Under The Hood
Architecture
- Clean separation of concerns with distinct layers for data models, business logic, and access control, enforced through interface-based dependency injection and role-based permissions
- Event-driven design using message brokering to decouple data persistence from real-time notifications and downstream processing
- Centralized state management via broadcast streams that synchronize authentication and application state across UI components
- Modular microservice structure with isolated components for backend, frontend, database, and messaging, orchestrated through containerized environments
Tech Stack
- Go with Gin framework for high-performance API services and microservice communication
- Flutter frontend with Provider pattern and ServiceLocator for scalable state management
- PostgreSQL for structured data storage with migration support
- NATS with JetStream for reliable, persistent event streaming between services
- Docker Compose for consistent multi-container deployment with network isolation and environment-aware configuration
- React, Next.js, and Docusaurus for documentation and web-based content rendering
Code Quality
- Extensive test coverage across unit, integration, and database layers with mocking and transaction validation
- Consistent use of custom error types and structured HTTP responses to enhance API reliability and client-side handling
- Strong type safety through UUID identifiers, explicit struct tags, and compile-time validation
- Uniform naming, parameter handling, and middleware-based context propagation across routes and services
- Comprehensive linting and test organization that enforce maintainability and reduce runtime failures
What Makes It Unique
- Real-time bidirectional synchronization between frontend and backend using WebSocket event streaming, eliminating the need for polling
- BlockNodeMapping utility that maintains precise bidirectional references between document nodes and database blocks for accurate edit reconciliation
- Unified event schema across all layers, ensuring consistent message structure and handling regardless of origin
- Multi-platform Docker builds with dynamic architecture targeting that enable native compilation across diverse hardware from a single codebase