Skip to content

Open source app to quickly save ideas of projects using convex and openAI for voice transcription and adding context to the idea

Notifications You must be signed in to change notification settings

EnzoSylvestrin/save-ideas

Repository files navigation

💡 Save Ideas

Save Ideas License Expo React Native

Um aplicativo mobile para capturar e organizar ideias de projetos usando gravação de áudio e processamento com IA

FeaturesInstalaçãoUsoTecnologiasContribuindo


📖 Sobre o Projeto

Save Ideas é um aplicativo mobile desenvolvido com React Native e Expo que permite capturar ideias de projetos de forma rápida e intuitiva através de gravação de áudio. O app utiliza inteligência artificial (OpenAI) para transcrever o áudio e gerar ideias estruturadas automaticamente.

🎯 Problema que Resolve

Muitas vezes temos ideias brilhantes, mas não temos tempo ou facilidade para anotá-las. Com Save Ideas, você pode:

  • 🎤 Gravar ideias rapidamente usando apenas sua voz
  • 🤖 Processar automaticamente com IA para gerar ideias estruturadas
  • 📁 Organizar por projetos para manter tudo organizado
  • Acesso rápido via atalhos do sistema e comandos de voz

✨ Features

🎙️ Gravação de Áudio

  • Gravação de áudio de alta qualidade
  • Interface intuitiva com feedback visual
  • Processamento automático após gravação

🤖 Processamento com IA

  • Transcrição automática usando OpenAI Whisper
  • Geração de ideias estruturadas com GPT-4o-mini
  • Formatação automática em markdown
  • Títulos gerados automaticamente

📁 Organização

  • Criação de múltiplos projetos
  • Visualização de todas as ideias por projeto
  • Cards visuais com preview das ideias
  • Detalhes completos ao tocar em uma ideia

⚡ Acesso Rápido

  • Android App Shortcuts - Atalho direto no ícone do app
  • Deep Linking - Acesso via URLs customizadas
  • Quick Record - Gravação rápida sem abrir o app completo
  • Seletor de Projeto - Troca rápida de projeto na tela de gravação

🎨 Interface Moderna

  • Design limpo e moderno
  • Suporte a Dark Mode automático
  • Animações suaves
  • Skeleton loading para melhor UX

🚀 Instalação

Pré-requisitos

  • Node.js (v18 ou superior)
  • Bun (gerenciador de pacotes recomendado) ou npm/yarn
  • Expo CLI
  • Conta no Convex (backend)
  • API Key da OpenAI (para processamento de áudio)

Passo a Passo

  1. Clone o repositório
git clone https://github.com/seu-usuario/save-ideas.git
cd save-ideas
  1. Instale as dependências
bun install
# ou
npm install
  1. Configure as variáveis de ambiente

Copie o arquivo de exemplo e preencha com suas credenciais:

cp .env.example .env

Edite o arquivo .env e adicione suas credenciais:

EXPO_PUBLIC_CONVEX_URL=https://seu-projeto.convex.cloud
OPENAI_API_KEY=sk-sua-chave-openai
EAS_PROJECT_ID=seu-eas-project-id

⚠️ Importante:

  • O arquivo .env já está no .gitignore e não será commitado
  • Nunca commite suas chaves de API!
  • O projeto usa app.config.js (não app.json) para ler variáveis de ambiente de forma segura
  1. Configure o Convex
# Instale o Convex CLI globalmente (se ainda não tiver)
npm install -g convex

# Faça login no Convex
npx convex dev

# Isso irá:
# - Criar a configuração do Convex
# - Gerar os tipos TypeScript
# - Iniciar o servidor de desenvolvimento
  1. Configure as funções do Convex

As funções do backend estão em convex/:

  • schema.ts - Schema do banco de dados
  • projects.ts - CRUD de projetos
  • ideas.ts - CRUD de ideias e processamento de áudio

Certifique-se de configurar a variável de ambiente OPENAI_API_KEY no dashboard do Convex também:

  1. Acesse o Dashboard do Convex

  2. Selecione seu projeto

  3. Vá em SettingsEnvironment Variables

  4. Adicione OPENAI_API_KEY com sua chave da OpenAI

  5. Inicie o app

# Desenvolvimento
bun start
# ou
npm start

# Para Android
bun run android
# ou
npm run android

# Para iOS
bun run ios
# ou
npm run ios

📱 Como Usar

1. Criar um Projeto

  1. Abra o app
  2. Na tela inicial, toque no botão "+" no canto superior direito
  3. Digite o nome do projeto
  4. Toque em "Criar"

2. Gravar uma Ideia

Método 1: Dentro do Projeto

  1. Abra um projeto
  2. Toque no botão "+" ou "Adicionar Ideia"
  3. Toque no botão de gravação (ícone de microfone)
  4. Fale sua ideia
  5. Toque novamente para parar
  6. Aguarde o processamento automático

Método 2: Quick Record (Gravação Rápida)

  1. Android: Segure o ícone do app e toque em "Gravar Ideia"
  2. Ou use o botão flutuante na tela inicial
  3. A gravação será salva no último projeto usado

3. Visualizar Ideias

  1. Abra um projeto
  2. Veja a lista de todas as ideias
  3. Toque em uma ideia para ver os detalhes completos:
    • Transcrição original
    • Ideias estruturadas geradas pela IA
    • Data de criação

4. Trocar de Projeto (Quick Record)

  1. Na tela de gravação rápida
  2. Toque no nome do projeto (se houver múltiplos projetos)
  3. Selecione o projeto desejado
  4. Grave sua ideia

🛠️ Tecnologias

Frontend

Backend

  • Convex - Backend-as-a-Service
    • Banco de dados real-time
    • Funções serverless
    • Autenticação (futuro)

IA e Processamento

  • OpenAI API
    • Whisper - Transcrição de áudio para texto
    • GPT-4o-mini - Geração de ideias estruturadas

Áudio

  • expo-audio - Gravação e reprodução de áudio

Armazenamento Local

  • AsyncStorage - Armazenamento local (último projeto usado)

Outras


📁 Estrutura do Projeto

save-ideas/
├── app/                    # Rotas do Expo Router
│   ├── (tabs)/            # Telas com tabs
│   │   ├── index.tsx      # Tela inicial (lista de projetos)
│   │   └── explore.tsx    # Detalhes do projeto (lista de ideias)
│   ├── quick-record.tsx   # Tela de gravação rápida
│   ├── idea-detail.tsx    # Detalhes de uma ideia
│   └── _layout.tsx        # Layout raiz
├── components/            # Componentes reutilizáveis
│   ├── AudioRecorder.tsx  # Componente de gravação
│   ├── ProjectCard.tsx    # Card de projeto
│   ├── IdeaCard.tsx       # Card de ideia
│   ├── QuickRecordModal.tsx
│   └── ui/                # Componentes UI base
├── convex/                # Backend (Convex)
│   ├── schema.ts          # Schema do banco
│   ├── projects.ts        # Funções de projetos
│   └── ideas.ts           # Funções de ideias + IA
├── constants/             # Constantes
│   └── theme.ts           # Cores e tema
├── hooks/                 # Custom hooks
├── plugins/               # Expo Config Plugins
│   └── withAndroidShortcuts.js
├── scripts/               # Scripts e documentação
│   ├── android-shortcuts-setup.md
│   ├── setup-gemini-assistant.md
│   └── setup-quick-access.md
├── utils/                 # Utilitários
│   ├── storage.ts         # AsyncStorage helpers
│   └── quick-access.ts    # Deep linking helpers
├── app.config.js          # Configuração do Expo (usa variáveis de ambiente)
├── .env.example           # Exemplo de variáveis de ambiente
└── .env                   # Suas variáveis de ambiente (não commitado)

🔧 Configuração Avançada

Android App Shortcuts

O app inclui um plugin customizado (plugins/withAndroidShortcuts.js) que configura automaticamente os App Shortcuts do Android durante o build. Os atalhos aparecem quando você segura o ícone do app.

Para mais detalhes, veja scripts/android-shortcuts-setup.md.

Deep Linking

O app suporta deep linking para acesso rápido:

  • saveideas://quick-record - Abre a tela de gravação rápida
  • saveideas://quick-record?projectId=xxx - Abre gravação para projeto específico
  • https://saveideas.app/quick-record - Versão HTTPS (requer configuração de domínio)

Para mais informações, veja scripts/setup-quick-access.md.

Integração com Assistente de Voz

Para configurar comandos de voz com Google Assistant/Gemini no Android, veja scripts/setup-gemini-assistant.md.

Variáveis de Ambiente

O projeto usa app.config.js ao invés de app.json para permitir o uso de variáveis de ambiente de forma segura. Isso evita expor credenciais sensíveis no código.

Variáveis necessárias:

  • EXPO_PUBLIC_CONVEX_URL - URL do seu projeto Convex
  • OPENAI_API_KEY - Chave da API da OpenAI (também precisa estar no Convex)

Variáveis opcionais:

  • EAS_PROJECT_ID - ID do projeto EAS (para builds)

💡 Dica: Sempre use .env para variáveis locais e configure as mesmas variáveis no dashboard do Convex para produção.


🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para:

  1. 🍴 Fazer um Fork do projeto
  2. 🌿 Criar uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. 💾 Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. 📤 Push para a branch (git push origin feature/AmazingFeature)
  5. 🔀 Abrir um Pull Request

Diretrizes de Contribuição

  • Siga os padrões de código existentes
  • Adicione testes quando apropriado
  • Atualize a documentação se necessário
  • Use commits descritivos
  • Nunca commite arquivos .env ou app.json com credenciais
  • Use app.config.js para configurações que dependem de variáveis de ambiente

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


🙏 Agradecimentos

  • Expo pela plataforma incrível
  • Convex pelo backend poderoso
  • OpenAI pela API de IA
  • Todos os contribuidores e usuários do projeto

🔒 Segurança

Este projeto foi configurado para ser seguro para código aberto:

  • ✅ Credenciais são gerenciadas via variáveis de ambiente
  • app.config.js lê variáveis de ambiente (não hardcoded)
  • .env e app.json estão no .gitignore
  • .env.example fornece template sem credenciais reais

Importante: Se você for fazer fork ou contribuir, certifique-se de:

  1. Criar seu próprio .env baseado em .env.example
  2. Configurar suas próprias credenciais no Convex
  3. Nunca commitar arquivos com credenciais

📞 Suporte


Feito com ❤️ usando Expo e React Native

⭐ Se este projeto foi útil para você, considere dar uma estrela!

About

Open source app to quickly save ideas of projects using convex and openAI for voice transcription and adding context to the idea

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published