A modern todo application that lets you create tasks using voice recordings. Built with Deno, Hono, and powered by Google's Gemini AI for speech transcription and todo extraction.
- 🎤 Voice Recording: Record audio directly in the browser
- 🤖 AI-Powered Transcription: Uses Google Gemini AI to transcribe speech
- ✅ Smart Todo Extraction: Automatically extracts actionable tasks from transcriptions
- 🔄 Real-time Sync: Firebase Firestore integration for live todo updates
- ✏️ Manual Entry: Traditional text-based todo creation
- 📱 Responsive Design: Works on desktop and mobile devices
- Runtime: Deno
- Framework: Hono (TypeScript web framework)
- UI: JSX with UnoCSS for styling
- AI: Google Gemini AI (2.5 Flash Lite model)
- Database: Firebase Firestore
- Styling: UnoCSS/Tailwind CSS classes
- Deno installed
- Google Gemini API key
- Firebase project setup (for Firestore)
-
Clone the repository
git clone <repository-url> cd voice-todos
-
Set up environment variables Create a
.envfile in the root directory:GEMINI_API_KEY=your_gemini_api_key_here
-
Configure Firebase
- Create a Firebase project
- Enable Firestore
- Update Firebase configuration in your frontend code
-
Install dependencies
deno install
Start the development server:
deno task devThe application will be available at http://localhost:8000
- Voice Recording: Click the microphone button to start/stop recording
- Transcription: Audio is sent to Google Gemini AI for transcription
- Todo Extraction: AI analyzes the transcription and extracts actionable tasks
- Storage: Todos are stored in Firebase Firestore with real-time updates
- Management: Mark todos as complete or delete them as needed
GET /- Main application pagePOST /transcribe- Audio transcription endpoint- Accepts:
multipart/form-datawith audio file - Returns:
{ transcription: string, todos: string[] }
- Accepts:
voice-todos/
├── components/ # React/JSX components
│ ├── VoiceRecorder.tsx # Voice recording interface
│ ├── TodoList.tsx # Todo display component
│ └── ...
├── pages/ # Page components
│ └── Home.tsx # Main application page
├── layouts/ # Layout components
├── static/ # Static assets and client-side JS
│ ├── todolist.js # Firestore integration
│ └── app.js # Voice recording logic
├── main.tsx # Server entry point
└── deno.json # Deno configuration
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is open source and available under the MIT License.