$ show flusterIO/fluster
Fluster is a desktop research note-taking application built with Tauri (Rust backend) and React (Vite + Redux) frontend, organized as a polyglot monorepo. It enables users to write notes in MDX with custom embedded components (plots, flashcards, equations, citations), manage bibliographies via BibTeX, run spaced-repetition flashcards, perform semantic search using local Ollama LLMs with LanceDB vector storage, and interact with AI through a chat interface. The system also includes a Python sidecar API for AI sync and indexing, a Next.js documentation website, a Go CLI for internal workspace tooling, and a shared UI component library (`@fluster.io/dev`). While the core application is feature-rich and demonstrates solid engineering patterns (entity/database abstraction via Arrow, command palette architecture, event-driven UI), the codebase shows signs of technical debt including duplicated code across packages, incomplete features (Jupyter, Kanban placeholders), mixed state management strategies, and a stated plan to rewrite in Swift for macOS, which may lead to drift. The extensive feature set and multi-language stack (Rust, Python, Go, TypeScript) increase maintenance surface but also provide a comprehensive research workflow tool.
The LLM identified 3 files worth highlighting for reuse:
A collection of embeddable React components (Admonition, Card, Grid, Image, Audio, Video, YouTube, etc.) that can be used in any React project to render rich content. Each component is self-contained, fully typed, and follows a consistent design system. These components could be extracted into a standalone npm package with minimal modification, showcasing clean component design and separation of concerns.
A self-contained FastAPI endpoint that watches a file directory (MDX notes), extracts text, splits into chunks, and indexes them into LanceDB with vector embeddings via Ollama. This implements a standard RAG document ingestion pipeline and can be reused for other projects needing to index local documents for semantic search. It demonstrates a clean separation of concerns with async endpoint, text processing, and database operations.
A reusable Rust crate that provides templated fixture generation using handlebars and tempfile. It allows creating test data for various entity types (e.g., MdxNoteEntity, BibEntry) with customizable fields. This pattern can be extracted and used by any Rust project that needs to generate complex test data sets, especially when using columnar data stores. The use of handlebars for templating and tempfile for isolation shows thoughtful test infrastructure design.