Silencly/Silencly-
Project Overview
Silencly
AI voice dictation web/desktop app that transcribes speech and reformats it using LLMs.
True Intent (AI Assessment)
A voice-to-polished-text SaaS/desktop app that pipes user audio through third-party LLMs to produce formatted written output.
README Accuracy
Notes
README claims '100% local' and Firebase-based, but the code sends audio/text to remote LLM APIs (Gemini, Groq, AssemblyAI) and uses Supabase as the primary backend. Committed .env.example contains apparently live Clerk secret keys and Better Auth secrets, and supabase-client.ts hardcodes production Supabase credentials. A hardcoded email allowlist in server.ts grants specific individuals elevated audit-log access. Not obviously malicious, but the 'privacy-first, 100% local' marketing does not match the observed cloud-dependent architecture.
Silencly is a React + TypeScript web application (with an accompanying Tauri desktop shell) that provides AI-powered voice dictation. Users record audio, which is transcribed and then passed through an LLM (Google Gemini, with references to Groq/Llama and AssemblyAI) that rewrites the raw speech into polished formats like emails, academic notes, bullet points, or general clean prose.
The problem it targets is the gap between messy spoken thoughts and clean written output. Rather than acting as a raw speech-to-text tool, it positions itself as an 'intermediate layer' that produces structured, professional text from stream-of-consciousness dictation, with tone presets and a custom-prompt system.
The intended users are individual knowledge workers, students, and developers who prefer speaking over typing. It also targets developers via a mentioned API console for programmatic access. The app offers a public demo and an authenticated workspace with history, a personal dictionary, sessions, and settings.
Architecturally, the frontend is Vite + React 19 + Tailwind + shadcn/ui, running in the browser or wrapped in Tauri (Rust). An Express server (server.ts) exposes API endpoints, calls Google GenAI for polishing, and stores history/audit logs to JSON files (with a /tmp fallback for Vercel). Persistent user data (history, dictionary) is stored in Supabase, with localStorage as an offline fallback. Auth appears to be in flux: the README claims Firebase, but the code wires up Supabase auth as the active provider, with Clerk keys and Better Auth secrets also present in .env.example.
Red flags: the committed .env.example contains what look like real (not placeholder) secrets — a Clerk test publishable key AND a Clerk secret key (sk_test_...), a Better Auth API key, and a Better Auth secret. The supabase-client.ts file hardcodes a live Supabase URL and anon key as fallbacks directly in source. server.ts also contains a hardcoded allowlist of five personal Gmail addresses granted elevated 'audit' privileges — an unusual pattern for an 'open-source privacy-first' product. The stack is also inconsistent with the README (README says Firebase, code primarily uses Supabase; Firebase, Clerk, Composio, and Better Auth are all half-wired in).
| Languages | TypeScript, HTML, CSS, Rust |
| Runtime | Node.js (Express server) + Browser + Tauri desktop shell |
| Framework | React 19 + Vite (frontend), Express (backend), Tauri (desktop) |
| Database | Supabase (Postgres) with localStorage fallback; JSON files for history/audit logs |
| Package Manager | npm |
| Key Dependencies | @google/genai, @supabase/supabase-js, @clerk/clerk-react, firebase, @composio/core, express, react, @tauri-apps/api |
| Build Tool | Vite + esbuild |
| Test Framework | None detected |