Um aplicativo mobile para capturar e organizar ideias de projetos usando gravação de áudio e processamento com IA
Features • Instalação • Uso • Tecnologias • Contribuindo
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.
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
- Gravação de áudio de alta qualidade
- Interface intuitiva com feedback visual
- Processamento automático após gravação
- 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
- 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
- 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
- Design limpo e moderno
- Suporte a Dark Mode automático
- Animações suaves
- Skeleton loading para melhor UX
- 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)
- Clone o repositório
git clone https://github.com/seu-usuario/save-ideas.git
cd save-ideas- Instale as dependências
bun install
# ou
npm install- Configure as variáveis de ambiente
Copie o arquivo de exemplo e preencha com suas credenciais:
cp .env.example .envEdite 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
.envjá está no.gitignoree não será commitado- Nunca commite suas chaves de API!
- O projeto usa
app.config.js(nãoapp.json) para ler variáveis de ambiente de forma segura
- 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- Configure as funções do Convex
As funções do backend estão em convex/:
schema.ts- Schema do banco de dadosprojects.ts- CRUD de projetosideas.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:
-
Acesse o Dashboard do Convex
-
Selecione seu projeto
-
Vá em Settings → Environment Variables
-
Adicione
OPENAI_API_KEYcom sua chave da OpenAI -
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- Abra o app
- Na tela inicial, toque no botão "+" no canto superior direito
- Digite o nome do projeto
- Toque em "Criar"
- Abra um projeto
- Toque no botão "+" ou "Adicionar Ideia"
- Toque no botão de gravação (ícone de microfone)
- Fale sua ideia
- Toque novamente para parar
- Aguarde o processamento automático
- Android: Segure o ícone do app e toque em "Gravar Ideia"
- Ou use o botão flutuante na tela inicial
- A gravação será salva no último projeto usado
- Abra um projeto
- Veja a lista de todas as ideias
- Toque em uma ideia para ver os detalhes completos:
- Transcrição original
- Ideias estruturadas geradas pela IA
- Data de criação
- Na tela de gravação rápida
- Toque no nome do projeto (se houver múltiplos projetos)
- Selecione o projeto desejado
- Grave sua ideia
- Expo - Framework React Native
- React Native - Framework mobile
- Expo Router - Roteamento baseado em arquivos
- TypeScript - Tipagem estática
- React Navigation - Navegação
- Convex - Backend-as-a-Service
- Banco de dados real-time
- Funções serverless
- Autenticação (futuro)
- OpenAI API
- Whisper - Transcrição de áudio para texto
- GPT-4o-mini - Geração de ideias estruturadas
- expo-audio - Gravação e reprodução de áudio
- AsyncStorage - Armazenamento local (último projeto usado)
- expo-linking - Deep linking
- React Native Safe Area Context - Safe areas
- Expo Config Plugins - Configuração nativa customizada
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)
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.
O app suporta deep linking para acesso rápido:
saveideas://quick-record- Abre a tela de gravação rápidasaveideas://quick-record?projectId=xxx- Abre gravação para projeto específicohttps://saveideas.app/quick-record- Versão HTTPS (requer configuração de domínio)
Para mais informações, veja scripts/setup-quick-access.md.
Para configurar comandos de voz com Google Assistant/Gemini no Android, veja scripts/setup-gemini-assistant.md.
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 ConvexOPENAI_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
.envpara variáveis locais e configure as mesmas variáveis no dashboard do Convex para produção.
Contribuições são bem-vindas! Sinta-se à vontade para:
- 🍴 Fazer um Fork do projeto
- 🌿 Criar uma branch para sua feature (
git checkout -b feature/AmazingFeature) - 💾 Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - 📤 Push para a branch (
git push origin feature/AmazingFeature) - 🔀 Abrir um Pull Request
- 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
.envouapp.jsoncom credenciais - Use
app.config.jspara configurações que dependem de variáveis de ambiente
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Expo pela plataforma incrível
- Convex pelo backend poderoso
- OpenAI pela API de IA
- Todos os contribuidores e usuários do projeto
Este projeto foi configurado para ser seguro para código aberto:
- ✅ Credenciais são gerenciadas via variáveis de ambiente
- ✅
app.config.jslê variáveis de ambiente (não hardcoded) - ✅
.enveapp.jsonestão no.gitignore - ✅
.env.examplefornece template sem credenciais reais
Importante: Se você for fazer fork ou contribuir, certifique-se de:
- Criar seu próprio
.envbaseado em.env.example - Configurar suas próprias credenciais no Convex
- Nunca commitar arquivos com credenciais
- 🐛 Reportar bugs: GitHub Issues
- 💡 Sugerir features: GitHub Discussions
Feito com ❤️ usando Expo e React Native
⭐ Se este projeto foi útil para você, considere dar uma estrela!