⚠️ IMPORTANT DISCLAIMERThis project is an independent contest submission to the EverlastAI Contest. It is NOT a product produced, maintained, endorsed, or released by EverlastAI. This is a personal/team project created solely for the competition. Any similarity in naming is for contest identification purposes only.
Transform your voice into AI-enriched, structured content
Contest Submission - Independent Project
Try the app with these demo credentials:
| Password | |
|---|---|
demo@demo.com |
Demo123! |
Press a hotkey. Speak your thoughts. Get perfectly formatted, AI-enriched content.
Everlast AI Recorder is a privacy-focused desktop application that revolutionizes voice-to-text workflows. Capture ideas, meeting notes, and thoughts through natural speech, then watch as AI transforms them into structured, actionable content.
Unlike simple voice recorders, Everlast AI Recorder provides:
- Real-time transcription with speaker identification
- AI-powered enrichment (summaries, tasks, insights, translation)
- Beautiful, formatted output ready for immediate use
- Privacy-first design with local encrypted storage
- Seamless export to PDF, DOCX, Markdown, Notion, and webhooks
- Automation-ready with direct Zapier and n8n integration
| Traditional Voice-to-Text | Everlast AI Recorder |
|---|---|
| Raw, unformatted transcripts | Structured, formatted output |
| No speaker identification | Full speaker diarization with custom names |
| Single language only | Real-time language detection and switching |
| Manual editing required | AI enrichment with multiple modes |
| Limited export options | PDF, DOCX, Markdown, Notion, webhooks |
| No automation support | Direct Zapier & n8n integration for workflows |
| Cloud-only or local-only | Flexible: cloud APIs or fully local (Whisper + Ollama) |
- Global Hotkey Activation - Press
Cmd/Ctrl+Shift+Rfrom any app to start/stop recording - Real-Time Transcription - Watch your words appear as you speak with WebSocket streaming
- Speaker Diarization - Automatically identifies and labels different speakers (S1, S2, etc.)
- Custom Speaker Names - Rename speakers to actual names (e.g., "John", "Sarah") with persistent storage
- Real-Time Language Detection - Automatically detects and switches between languages mid-conversation
- Background Recording - Record silently without showing the app window, system tray shows recording status
Apply these intelligent transformations to any recording:
- Summarize - Generate concise summaries of conversations or notes
- Extract Tasks - Automatically pull out action items and to-dos
- Key Insights - Identify best practices, learnings, and important points
- Translate - Translate content to 15+ languages
- Clean Format - Polish transcripts for readability and structure
- PDF - Beautiful formatted documents with speaker labels and timestamps
- DOCX - Microsoft Word format with full formatting
- Markdown - Clean text format for documentation
- Email - One-click sharing via mailto
- Webhooks - Integrate with Zapier, n8n, Make, or custom endpoints
- Notion - Direct export to your Notion workspace via OAuth
Turn voice into automated workflows! The built-in webhook integration connects directly to popular automation platforms:
| Platform | Use Case |
|---|---|
| Zapier | Connect to 5,000+ apps - auto-create tasks in Asana, send to Slack, update CRMs |
| n8n | Self-hosted automation - full control over your data and workflows |
| Make | Visual workflow builder - complex multi-step automations |
| Custom Endpoints | Your own APIs - integrate with internal tools and databases |
Example automations:
- 🎯 Record a meeting → Auto-extract tasks → Create tickets in Jira
- 📧 Voice memo → AI summary → Send digest email to team
- 📝 Client call → Transcribe → Update CRM notes automatically
- 🌐 Multilingual recording → Translate → Post to regional Slack channels
- Your Data, Your Choice - Use cloud APIs (Deepgram, OpenAI) for best quality, or go fully local with Whisper + Ollama
- Encrypted Storage - API keys and sessions encrypted with ChaCha20Poly1305 + Argon2
- Secure Key Derivation - Per-user encryption keys derived from your identity
- No Cloud Storage - Recordings and transcripts stay on your device unless you explicitly export them
- Local Processing Option - Run completely offline with Whisper for transcription and Ollama for AI enrichment
- Beautiful Dashboard - Clean, intuitive interface built with shadcn/ui
- Dark Mode - Full support with system preference detection
- Session Management - Organized by date with search and filtering
- Real-Time Preview - See transcription as it happens
- Responsive Design - Optimized for desktop workflows
Before installing, ensure you have:
- Node.js 18.0 or higher (Download)
- pnpm 9.0 or higher (Install)
- Rust 1.70 or higher (Install)
- Auth0 Account - Required for authentication (Sign up free)
- Create a Single Page Application in Auth0 Dashboard
- Set allowed callback URLs to
http://localhost:3000 - Copy your Domain and Client ID to
.env
- API Keys for at least one transcription and one LLM provider:
- Transcription: Deepgram or ElevenLabs
- LLM: OpenAI or Anthropic
Coming soon! Pre-built binaries for macOS, Windows, and Linux will be available in the Releases section.
# Clone the repository
git clone https://github.com/odonald/everlast.git
cd everlast
# Install dependencies
pnpm install
# Run in development mode
pnpm tauri dev- Sign In - Authenticate with Auth0 (required for per-user encryption)
- Add API Keys - Go to Settings → API Keys and add your credentials:
- Transcription: Deepgram or ElevenLabs API key
- LLM: OpenAI or Anthropic API key
- Configure Settings - Choose your preferred providers and enrichment modes
- Test Recording - Click "New Session" or use the global hotkey
Cmd/Ctrl+Shift+R
Create a .env file in the project root (copy from .env.example):
# Auth0 Configuration (Required)
NEXT_PUBLIC_AUTH0_DOMAIN=your-domain.auth0.com
NEXT_PUBLIC_AUTH0_CLIENT_ID=your-client-id
AUTH0_CLIENT_SECRET=your-client-secret
# Application URL
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Notion Integration (Optional)
NOTION_CLIENT_ID=your-notion-client-id
NOTION_CLIENT_SECRET=your-notion-client-secret
NOTION_REDIRECT_URI=http://localhost:3000/api/notion/callback
NEXT_PUBLIC_NOTION_ENABLED=trueImportant: Never commit your .env file! API keys for Deepgram, ElevenLabs, OpenAI, and Anthropic are stored securely in the OS keychain via the Settings UI, not in environment variables.
Everlast AI Recorder requires Accessibility permissions for global hotkeys:
- Go to System Preferences → Privacy & Security → Accessibility
- Add Everlast AI Recorder to the allowed apps list
- Restart the application
Everlast AI Recorder uses a hybrid architecture combining Next.js and Tauri:
┌─────────────────────────────────────────────────────────────┐
│ Tauri Native Shell │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Next.js 14 (Static Export) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │
│ │ │ Auth │ │ Settings │ │ Dashboard │ │ │
│ │ │ (Auth0) │ │ (API Keys)│ │ (Recording/Sess.)│ │ │
│ │ └────┬─────┘ └────┬─────┘ └────────┬─────────┘ │ │
│ │ └─────────────┴─────────────────┘ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Service Layer │ │ │
│ │ │ Transcription LLM Export Session Storage │ │ │
│ │ └────────────────┬─────────────────────────────┘ │ │
│ └───────────────────┼────────────────────────────────┘ │
│ ┌───────────────────┴────────────────────────────────┐ │
│ │ Tauri IPC Bridge (Rust) │ │
│ │ • Global Hotkeys • Encrypted Storage │ │
│ │ • System Tray • Session Persistence │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │ │
┌──────▼────────┐ ┌────────▼────────┐ ┌───────▼────────┐
│ Deepgram │ │ OpenAI/Claude │ │ Notion API │
│ ElevenLabs │ │ Ollama │ │ Webhooks │
└───────────────┘ └─────────────────┘ └────────────────┘
- Tauri - 10MB bundles vs. 150MB with Electron, native performance, better security
- Next.js - Modern React framework with static export for embedded web views
- Rust - Secure, fast backend for OS integration and encryption
- TypeScript - Type safety across the entire frontend
- Zustand - Lightweight state management without Redux boilerplate
everlast/
├── src/ # Frontend (Next.js)
│ ├── app/ # Next.js App Router
│ │ ├── page.tsx # Main dashboard
│ │ ├── landing/ # Marketing page
│ │ └── api/ # API routes (transcription, LLM, auth)
│ ├── components/ # React components
│ │ ├── voice/ # Recording UI (LiveRecorder)
│ │ ├── sessions/ # Session management UI
│ │ ├── settings/ # Settings panels
│ │ └── ui/ # shadcn/ui components
│ ├── hooks/ # Custom React hooks
│ │ └── use-settings.ts # Zustand store for settings
│ ├── lib/ # Core business logic
│ │ ├── transcription/ # Transcription adapters
│ │ ├── llm/ # LLM adapters
│ │ ├── export.ts # Export functions
│ │ └── sessions.ts # Session storage interface
│ └── contexts/ # React contexts
│ └── auth-context.tsx # Auth0 integration
├── src-tauri/ # Backend (Rust)
│ ├── src/
│ │ ├── lib.rs # Tauri setup (hotkeys, tray, deep-link)
│ │ ├── commands.rs # IPC commands (storage, sessions)
│ │ ├── storage.rs # Encrypted storage layer
│ │ └── sessions.rs # Session persistence
│ ├── tauri.conf.json # Tauri configuration
│ └── Cargo.toml # Rust dependencies
├── .github/ # GitHub configuration
│ ├── workflows/ # CI/CD pipelines
│ ├── ISSUE_TEMPLATE/ # Issue templates
│ └── PULL_REQUEST_TEMPLATE.md # PR template
├── CONTRIBUTING.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Community standards
├── SECURITY.md # Security policy
└── CLAUDE.md # AI development context
# Development
pnpm tauri dev # Full app (Next.js + Tauri together) - primary dev command
pnpm dev # Next.js only on localhost:3000
# Building
pnpm tauri build # Production desktop app bundle
pnpm build # Next.js static export to out/
# Testing & Quality
pnpm test # Vitest unit tests
pnpm test -- path/to/test.ts # Run single test file
pnpm test:coverage # Tests with coverage
pnpm test:e2e # Playwright E2E tests
pnpm lint # ESLint
pnpm typecheck # TypeScript strict check
pnpm format # Prettier formatting
# Rust backend only
cd src-tauri && cargo build # Build Rust code
cd src-tauri && cargo check # Fast type check- Create
src/lib/transcription/newprovider.ts:
export async function transcribeWithNewProvider(audioBlob: Blob, apiKey: string): Promise<string> {
// Implementation
}- Add case to
src/lib/transcription/index.ts - Update
transcriptionProvidertype insrc/hooks/use-settings.ts - Add UI option in
src/components/settings/transcription-settings.tsx
- Create
src/lib/llm/newprovider.ts - Add case to
src/lib/llm/index.ts - Update
llmProvidertype in settings - Add UI option in
src/components/settings/llm-settings.tsx
# Unit tests
pnpm test
# Watch mode
pnpm test -- --watch
# E2E tests
pnpm test:e2e
# Coverage
pnpm test:coverage| Platform | Download | Requirements |
|---|---|---|
| macOS (Apple Silicon) | Coming soon | macOS 11.0+ |
| macOS (Intel) | Coming soon | macOS 10.15+ |
| Windows | Coming soon | Windows 10+ |
| Linux | Coming soon | Ubuntu 20.04+ / Fedora 36+ |
See Installation above.
We welcome contributions from the community! Please read our Contributing Guidelines before submitting pull requests.
- 🐛 Report bugs and issues
- 💡 Suggest new features or improvements
- 📝 Improve documentation
- 🧪 Write tests
- 🔧 Submit pull requests
- 🌍 Translate the app to new languages
- ⭐ Star the repository to show support
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/everlast.git - Create a branch:
git checkout -b feature/your-feature-name - Make your changes and test thoroughly
- Run tests:
pnpm test && pnpm lint && pnpm typecheck - Commit with a clear message:
git commit -m "Add: brief description" - Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request with a detailed description
This project is licensed under the MIT License - see the LICENSE file for details.
Built with these amazing technologies:
- Tauri - Desktop framework
- Next.js - React framework
- Deepgram - Speech-to-text API
- OpenAI & Anthropic - LLM providers
- shadcn/ui - UI components
- Auth0 - Authentication
Special thanks to all contributors who help make Everlast AI Recorder better!
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: See SECURITY.md for reporting vulnerabilities