DEV Community

Kritiraj
Kritiraj

Posted on

Hacktoberfest Weekend: Build for a Friend Challenge.

OutLoud: learning by talking it through

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend

What I built

A friend of mine learns by talking ideas through, but doesn’t use AI much. Most AI chats start with typing a prompt, which doesn’t fit how she likes to learn. I built OutLoud so she can explain a topic aloud, review the transcript, and continue the conversation with a local model.

You can explain a topic out loud, then read and edit the transcript before it goes anywhere. Stopping a recording only creates a draft. You decide when to send it.

Study mode lets you set up a subject, add a syllabus and reference material, and work through topics. As you explain ideas and answer follow-up questions, OutLoud saves evidence of your understanding and topics to revisit.

Demo

Watch the demo video

Code

OutLoud

OutLoud is a local, voice-first chat and study app. It has a browser UI and an Electron development app. A Python backend records audio from the computer's microphone, transcribes it with Whisper, and saves the transcript into the selected conversation's editable draft. A transcript is never sent automatically: review it, then choose Send to get a streamed reply from the local Gemma model through Ollama.

The app runs its servers on loopback (127.0.0.1). It is designed for one computer, not as a hosted or network-accessible service. The browser and desktop apps use separate local data stores.

Quick start

1. Install prerequisites

  • Python 3.11. The repository pins it in .python-version and mise.toml If you use mise, run mise install from the repo.
  • uv for Python environment and dependency management: install uv.
  • Bun 1.4.2 for JavaScript dependencies and workspace commands: install Bun.
  • Node.js 22.12+…

How I built it

OutLoud uses Whisper to transcribe speech and Gemma 3 (gemma3:4b) for chat and study responses. Whisper runs in the Python backend. Gemma runs locally through Ollama.

The web app is built with React, TypeScript, and Vite. A Python backend handles recording, transcription, and chat. Conversations, drafts, and study progress are saved in a local SQLite database. There’s also an Electron development app that runs the same interface with a managed backend.

The flow:

Speak → Whisper transcribes → review and edit → send → Gemma responds
Enter fullscreen mode Exit fullscreen mode

I wanted a clear pause between speaking and sending. A transcript can have mistakes, and sometimes you want to change what you said before asking a model about it.

Why open innovation matters

The local models are a good fit for this app. A spoken study session doesn’t need to go to a hosted inference API, and there’s no per-request model API bill. Once the models are installed, transcription and chat run on the user’s computer.

That does mean setup takes a little work, and the computer needs enough resources to run the models. Local models also make mistakes. I see OutLoud as a study aid, so its feedback should be checked against the course material.

Prize categories

  • Best Use of Gemma: OutLoud uses Gemma 3 locally through Ollama to respond to reviewed explanations and support study conversations.
  • Best Use of GitHub Copilot: This category includes project automation with GitHub Actions. OutLoud’s pull-request workflow validates the web app and runs backend and desktop checks across Linux, Windows, and macOS.

Top comments (0)