Skip to content

jaydanurwin/ai-voice-todos

Repository files navigation

Voice Todos

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.

Features

  • 🎤 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

Tech Stack

  • 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

Prerequisites

  • Deno installed
  • Google Gemini API key
  • Firebase project setup (for Firestore)

Setup

  1. Clone the repository

    git clone <repository-url>
    cd voice-todos
  2. Set up environment variables Create a .env file in the root directory:

    GEMINI_API_KEY=your_gemini_api_key_here
  3. Configure Firebase

    • Create a Firebase project
    • Enable Firestore
    • Update Firebase configuration in your frontend code
  4. Install dependencies

    deno install

Development

Start the development server:

deno task dev

The application will be available at http://localhost:8000

How It Works

  1. Voice Recording: Click the microphone button to start/stop recording
  2. Transcription: Audio is sent to Google Gemini AI for transcription
  3. Todo Extraction: AI analyzes the transcription and extracts actionable tasks
  4. Storage: Todos are stored in Firebase Firestore with real-time updates
  5. Management: Mark todos as complete or delete them as needed

API Endpoints

  • GET / - Main application page
  • POST /transcribe - Audio transcription endpoint
    • Accepts: multipart/form-data with audio file
    • Returns: { transcription: string, todos: string[] }

Project Structure

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

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

License

This project is open source and available under the MIT License.

About

Convert Your Voice To Todos and Save them to Firestore

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published