[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75667":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":14,"stars30d":16,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":13,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":13,"starSnapshotCount":13,"syncStatus":15,"lastSyncTime":25,"discoverSource":26},75667,"flowflow","mirkobozzetto\u002Fflowflow","mirkobozzetto","Mobile voice notes app — Rust, Dioxus iOS, local-first (SQLite + LanceDB + RIG)","",null,"Rust",143,0,1,2,117,"European Union Public License 1.2",false,"main",true,[],"2026-06-12 02:03:35","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Flogo.png\" alt=\"FlowFlow\" width=\"160\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">FlowFlow\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  Voice notes app for mobile — 100% Rust, built with \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDioxusLabs\u002Fdioxus\">Dioxus\u003C\u002Fa>.\u003Cbr\u002F>\n  Featured on \u003Ca href=\"https:\u002F\u002Fdioxuslabs.com\u002Fawesome\u002F\">Awesome Dioxus\u003C\u002Fa>.\n\u003C\u002Fp>\n\n---\n\nMost of my ideas come when I'm walking or between two tasks. And they vanish just as fast.\n\nFlowFlow is a voice notes app that captures what you say, transcribes it, and lets you **chat with your notes** later. You ask \"what was that pricing idea?\" and the right passages come up — with links to the original notes.\n\nNo manual searching. No folders to dig through. Just talk, and find it later.\n\n## What it does\n\n- **Voice capture** — tap to record, real-time waveform visualization, pause\u002Fresume, auto-transcription via Soniox\n- **Audio playback** — play, pause, and delete voice recordings directly from any note\n- **RAG chat** — powered by [rig](https:\u002F\u002Fgithub.com\u002F0xPlaygrounds\u002Frig), ask questions about your notes and get answers with tappable source references\n- **Hybrid search** — BM25 keyword + vector similarity + RRF fusion + LLM reranking for precise retrieval\n- **Temporal queries** — ask \"what did I note yesterday?\" with automatic French date detection (regex + LLM fallback)\n- **Folder-scoped chat** — chat searches only within the selected folder when one is active\n- **Agent tools** — the chat agent can search notes by meaning, create new notes, or summarize entire folders autonomously\n- **AI auto-title** — LLM generates a 1-3 word title while you write, with pulse animation\n- **Auto-tagging** — LLM generates single-word tags per note, or add your own\n- **Document import** — PDF (with native OCR for scanned documents), DOCX, TXT, CSV via native iOS picker\n- **Multi-provider** — OpenAI or Anthropic as LLM backend, switchable in settings\n- **Filler removal** — auto-strips hesitations (euh, um, hmm) from transcriptions so your notes read clean\n- **Local-first** — SQLite for metadata, LanceDB for semantic search, your data stays on device\n\n## Stack\n\n100% Rust. Zero JavaScript.\n\nThe UI runs on [Dioxus](https:\u002F\u002Fgithub.com\u002FDioxusLabs\u002Fdioxus), a React-like framework for Rust that renders natively on iOS through WKWebView. Styling is handled by [Tailwind CSS V4](https:\u002F\u002Ftailwindcss.com) — Dioxus auto-detects and compiles it, so every class just works without a separate build step.\n\nThe RAG pipeline is built on [rig](https:\u002F\u002Fgithub.com\u002F0xPlaygrounds\u002Frig), an LLM orchestration framework for Rust. It handles agent construction, tool calling, and provider dispatch (OpenAI and Anthropic) in a unified API. The agent gets custom tools — search notes, create notes, summarize folders — and can chain up to 4 tool calls per question before answering.\n\nEmbeddings go through OpenAI's text-embedding-3-small and land in [LanceDB](https:\u002F\u002Flancedb.com), a local vector database that runs entirely on device. Cosine similarity search over chunked notes and documents, no server needed.\n\nDocument import uses Apple's native PDFKit on iOS — text extraction with automatic OCR fallback for scanned documents. DOCX parsing is handled directly via zip + quick-xml, no external dependencies.\n\nEverything async runs on [tokio](https:\u002F\u002Ftokio.rs) — audio recording, API calls, embedding jobs, transcription polling. The iOS audio pipeline uses cpal for CoreAudio capture and hound for WAV encoding.\n\n|               |                                                                                                |\n| ------------- | ---------------------------------------------------------------------------------------------- |\n| UI            | [Dioxus 0.7](https:\u002F\u002Fgithub.com\u002FDioxusLabs\u002Fdioxus) (iOS, desktop, web)                         |\n| Styling       | [Tailwind CSS V4](https:\u002F\u002Ftailwindcss.com)                                                     |\n| LLM           | [rig-core 0.36](https:\u002F\u002Fgithub.com\u002F0xPlaygrounds\u002Frig) (OpenAI + Anthropic)                     |\n| Embeddings    | OpenAI text-embedding-3-small (1536 dims)                                                      |\n| Vector DB     | [LanceDB 0.27.2](https:\u002F\u002Flancedb.com) (local, cosine)                                          |\n| Async         | [tokio](https:\u002F\u002Ftokio.rs)                                                                      |\n| Database      | SQLite ([rusqlite](https:\u002F\u002Fgithub.com\u002Frusqlite\u002Frusqlite), bundled, WAL mode)                   |\n| Audio         | [cpal](https:\u002F\u002Fgithub.com\u002FRustAudio\u002Fcpal) + [hound](https:\u002F\u002Fgithub.com\u002Fruuda\u002Fhound)            |\n| Transcription | [Soniox](https:\u002F\u002Fsoniox.com) REST API                                                          |\n| PDF           | Apple PDFKit (iOS, native OCR) \u002F [pdf-extract](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fpdf-extract) (desktop) |\n| DOCX          | [quick-xml](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fquick-xml) + [zip](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fzip)          |\n| Icons         | [Phosphor](https:\u002F\u002Fphosphoricons.com) (MIT)                                                    |\n\n## How it works\n\n```\nTalk → Record → Transcribe → Clean fillers → Auto-embed → Store → AI title (1-3 words)\n\nLater: Ask → Embed query → Hybrid search (BM25 + vector + RRF)\n     → LLM rerank → Temporal boost → Tag-enriched context → Agent with tools → Answer with sources\n```\n\n## Setup\n\n```bash\nrustup target add aarch64-apple-ios aarch64-apple-ios-sim\ncargo install dioxus-cli\ncp .env.example .env   # add your API keys (or set them in-app)\n```\n\n```bash\nmake dev      # iOS simulator\nmake ddev     # physical iPhone (USB or Wi-Fi)\nmake desktop  # macOS desktop\nmake check    # fmt + clippy\n```\n\nAPI keys can be set in-app via Settings (stored in SQLite, no recompile). OpenAI is always required for embeddings. Anthropic is optional.\n\n## iOS Device Provisioning\n\nRunning on a physical iPhone requires a valid provisioning profile. Apple enforces code signing for all device builds.\n\n**Free Apple account**: profiles expire after 7 days. **Paid Apple Developer Program** (€99\u002Fyear): profiles last 1 year, plus App Store and TestFlight access.\n\nGenerate or renew a provisioning profile from the terminal (no Xcode GUI needed):\n\n```bash\n# 1. Create a minimal throwaway project\nmkdir -p \u002Ftmp\u002Fffprov\u002Fflowflow.xcodeproj \u002Ftmp\u002Fffprov\u002Fflowflow\ncat > \u002Ftmp\u002Fffprov\u002Fflowflow\u002FflowflowApp.swift \u003C\u003C 'EOF'\nimport SwiftUI\n@main struct flowflowApp: App { var body: some Scene { WindowGroup { Text(\"ok\") } } }\nEOF\n\n# 2. Get your team ID (shown in parentheses)\nsecurity find-identity -v -p codesigning | grep \"Apple Development\"\n\n# 3. Get your device UDID\nxcrun xctrace list devices | grep iPhone\n\n# 4. Build to device — this generates the provisioning profile\nxcodebuild -project \u002Ftmp\u002Fffprov\u002Fflowflow.xcodeproj \\\n  -scheme flowflow \\\n  -destination \"id=YOUR_DEVICE_UDID\" \\\n  -allowProvisioningUpdates \\\n  -allowProvisioningDeviceRegistration \\\n  CODE_SIGN_STYLE=Automatic \\\n  DEVELOPMENT_TEAM=YOUR_TEAM_ID \\\n  GENERATE_INFOPLIST_FILE=YES\n\n# 5. Verify the profile was created\nls ~\u002FLibrary\u002FDeveloper\u002FXcode\u002FUserData\u002FProvisioning\\ Profiles\u002F\n```\n\nThe `project.pbxproj` file for step 1 is included at `flowflow\u002Fflowflow.xcodeproj\u002Fproject.pbxproj`.\n\n**On your iPhone** (first time only): Settings → General → VPN & Device Management → tap your developer certificate → Trust.\n\nAfter provisioning, `make ddev` will work.\n\n## Tests\n\n```bash\ncargo test\ncargo test -- --ignored\n```\n\n## Status\n\nActively developed. The codebase evolves constantly — new features, better architecture, and deeper iOS integration land regularly.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nCopyright 2026 Mirko Bozzetto — [EUPL v1.2](LICENSE)\n","FlowFlow 是一款专为移动设备设计的语音笔记应用，完全使用 Rust 语言开发，并基于 Dioxus 框架构建。其核心功能包括语音捕捉、实时转录、以及通过自然语言处理技术与笔记进行互动查询。用户可以通过简单的对话方式，快速检索到特定内容或时间段内的笔记，无需手动搜索。此外，该应用还支持文档导入、自动标签生成和本地优先的数据存储策略，确保所有数据安全地保存在用户的设备上。FlowFlow 适用于需要高效记录和管理想法、会议纪要等场景，尤其适合经常在外或需要随时记录灵感的人士使用。","2026-06-11 03:53:03","CREATED_QUERY"]