{"id":29652390,"url":"https://github.com/bonizario/let-me-ask","last_synced_at":"2026-04-11T18:03:02.890Z","repository":{"id":304086960,"uuid":"1017706687","full_name":"bonizario/let-me-ask","owner":"bonizario","description":"AI-Powered Live Audio Q\u0026A Platform","archived":false,"fork":false,"pushed_at":"2025-07-12T05:59:51.000Z","size":130,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-12T07:21:54.817Z","etag":null,"topics":["docker","drizzle-orm","embeddings","fastify","gemini","nodejs","postgresql","react","transcription","vector-database"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bonizario.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-11T01:18:30.000Z","updated_at":"2025-07-12T06:01:26.000Z","dependencies_parsed_at":"2025-07-12T07:22:17.814Z","dependency_job_id":"0eb91b4d-1ab6-49fa-a5ec-d5b9d46131d4","html_url":"https://github.com/bonizario/let-me-ask","commit_stats":null,"previous_names":["bonizario/nlw-agents","bonizario/let-me-ask"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/bonizario/let-me-ask","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonizario%2Flet-me-ask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonizario%2Flet-me-ask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonizario%2Flet-me-ask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonizario%2Flet-me-ask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bonizario","download_url":"https://codeload.github.com/bonizario/let-me-ask/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonizario%2Flet-me-ask/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266437365,"owners_count":23928231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","drizzle-orm","embeddings","fastify","gemini","nodejs","postgresql","react","transcription","vector-database"],"created_at":"2025-07-22T06:01:30.311Z","updated_at":"2026-04-11T18:03:02.884Z","avatar_url":"https://github.com/bonizario.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Let Me Ask: AI-Powered Live Audio Q\u0026A Platform\n\n## 💡 About the Project\n\nLet Me Ask is a proof of concept (POC) for a full-stack app that lets users record live audio (like from live streams), upload it, and have it transcribed and processed with AI.\n\nThe platform leverages vector databases to provide accurate and context-aware answers to questions about the recorded content, by combining transcription, embeddings, and semantic search.\n\nThis was developed during the NLW Agents workshop, hosted by Rocketseat 💜.\n\n### Main Features\n\n- **Record \u0026 Upload Audio:** Capture audio in the browser and upload it.\n- **Transcription:** Audio is transcribed using the Gemini API.\n- **Semantic Search:** Embeddings are generated from transcripts and stored in PostgreSQL for vector search.\n- **Ask Questions:** Get AI-generated answers based on your audio.\n- **Rooms:** Organize sessions by room.\n- **Modern Frontend:** Fast and interactive React UI.\n\n## 🚀 Technologies\n\n### Backend\n\n- **Node.js** with **Fastify** for high-performance APIs\n- **PostgreSQL** with vector extension for efficient embedding storage and similarity search\n- **Drizzle ORM** for type-safe database access and migrations\n- **Google Gemini API** for transcription, embeddings, and answer generation\n- **Zod** for schema validation\n- **Docker** for easy local development and database setup\n\n### Frontend\n\n- **React** (with Vite) for a fast, modern UI\n- **React Query** for efficient data fetching and caching\n- **React Hook Form** and **Zod** for robust form handling and validation\n- **Tailwind CSS** for rapid UI development\n\n### Technical Challenges\n\n- Integrating real-time audio recording and chunked uploads in the browser\n- Handling large audio files and splitting them for efficient processing\n- Generating and storing high-dimensional embeddings in PostgreSQL\n- Performing fast, accurate semantic search using vector similarity\n- Orchestrating multiple AI tasks (transcription, embedding, Q\u0026A) with the Gemini API\n- Ensuring a smooth developer experience with type safety and modern tooling\n\n## 🤔 Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) (v22+)\n- [pnpm](https://pnpm.io/)\n- [Docker](https://www.docker.com/) (for running PostgreSQL with vector extension)\n- [Google Gemini API Key](https://ai.google.dev/gemini-api/docs/api-key)\n\n### Setup\n\n#### 1. Clone the repository\n\n```sh\ngit clone git@github.com:bonizario/let-me-ask.git\n\ncd let-me-ask\n```\n\n#### 2. Start the database\n\n```sh\ncd server\n\ndocker compose up -d\n```\n\nThis will start a PostgreSQL instance with vector support.\n\n#### 3. Configure Environment Variables\n\nCreate a `.env` file in the `server` directory\n\n```dotenv\nGEMINI_API_KEY=\"your_google_gemini_api_key\"\nDATABASE_URL=\"postgresql://postgres:postgres@localhost:5432/agents\"\nPORT=\"3333\"\n```\n\n#### 4. Install Dependencies\n\nInstall the `pnpm` package manager if you haven't already:\n\n```sh\nnpm install -g pnpm@latest\n```\n\nThen, install the project dependencies on both `server` and `web` directories:\n\n```sh\npnpm install\n```\n\n#### 5. Run Database Migrations and Seed\n\n```sh\ncd server\npnpm db:migrate\npnpm db:seed\n```\n\n#### 6. Start the Backend\n\n```sh\npnpm dev\n```\n\n#### 7. Start the Frontend\n\n```sh\npnpm dev\n```\n\nThe frontend will be available at [http://localhost:5173](http://localhost:5173) and the API at [http://localhost:3333](http://localhost:3333).\n\n## 📝 License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## 👋 Get in touch\n\nFeel free to reach out if you have any questions, suggestions, or just want to chat about the project!\n\nMy LinkedIn: [https://www.linkedin.com/in/gabriel-bonizario](https://www.linkedin.com/in/gabriel-bonizario)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonizario%2Flet-me-ask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbonizario%2Flet-me-ask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonizario%2Flet-me-ask/lists"}