[CodeStudy] Um app para aprender Swift feito para ser propositalmente desconfortável (tutor de IA)
(apps.apple.com)Olá.
Gostaria de apresentar um app de aprendizado para iOS que criei como projeto pessoal.
Motivação para criar
Quando você pergunta sobre conceitos de Swift ao ChatGPT ou ao Claude, recebe imediatamente uma resposta bem organizada.
Mas, ao passar pela experiência repetidas vezes de ver o mesmo conceito aparecer alguns dias depois e perceber que a mente estava em branco, senti novamente que "aprender recebendo a resposta" e "aprender encontrando a resposta" são coisas diferentes.
Por isso, implementei como tutor de IA o método socrático de ensino — ou seja, uma abordagem em que, em vez de dar a resposta, faz perguntas para que a própria pessoa chegue à compreensão.
Na prática, é um app feito para ser desconfortável de propósito.
Que tipo de app é
- 50 conceitos de Swift (do básico ao avançado, incluindo async/await, Actor, Associated Types etc.)
- Mesmo que o usuário faça perguntas, a IA não dá respostas. Em vez disso, conduz o raciocínio com contra-perguntas
- Estrutura de um conceito por dia, alcançando a "maestria" por meio da conversa
- Editor embutido para digitar código Swift diretamente durante a conversa (realce de sintaxe + recuo automático)
- Registro de estudo (heatmap), widget, modo escuro
Stack técnica
- iOS: SwiftUI + SwiftData, MVVM + @Observable, 0 dependências externas
- Backend: Node.js on Vercel Functions (streaming SSE)
- LLM: Claude Haiku 4.5 via OpenRouter. Com abstração de provider, é possível trocar por Gemini/OpenAI
- Currículo: 50 concepts baseados em JSON, com engenharia de prompts no servidor para impor a restrição de "fazer perguntas em vez de dar respostas"
Estado atual
- Sem cadastro/login — por enquanto, apenas armazenamento local no dispositivo, com uso anônimo
- Sem anúncios — porque entendi que não combinam com o tom de um app de aprendizado
- Sem pagamento — ainda em fase de validar a base. Mais adiante, estou considerando um modelo de assinatura
Limitações honestas / pontos em estudo
- Houve feedback de que é pesado de usar no trajeto para o trabalho, então estou projetando um "modo de 5 minutos" para tornar a duração da sessão mais previsível
- A primeira resposta tem p99 de cerca de 9 segundos (métrica observada no OpenRouter). Com prompt caching, a meta da próxima versão é 3–4 segundos
- O custo de tokens por usuário está em torno de $0.005/DAU. Será preciso reavaliar ao escalar
3 comentários
O que mais me surpreendeu ao criar foi que, ao tentar fazer uma "IA que não dá a resposta", o LLM insistia em quebrar as restrições que coloquei no system prompt (avaliação de domínio baseada em tokens
[MASTERY]), então acabei gastando mais tempo do que esperava com prompt engineering.Em comparação com o Claude Haiku, o Gemini Flash respeitou melhor essa restrição, mas, por outro lado, a profundidade das perguntas do Claude era melhor. No momento, estou usando a combinação Claude + refinamento preciso de prompts.
Se alguém já teve uma experiência parecida ao "conter um LLM" no design de prompts, agradeço se puder compartilhar dicas 🙏
Qual seria a diferença entre aprender conversando diretamente com o agente, definindo um role para ele, e estudar usando este app?
Eu também já testei tanto o GPT quanto o Claude com prompts customizados, mas depois de alguns dias a gente acaba caindo no "ah, me fala logo!"... E, conforme continua usando, surgem com frequência situações em que a resposta acaba sendo entregue.
Por isso, a sensação de estar pesquisando, e não realmente aprendendo, ficava forte demais.
No app que eu criei, o system prompt e a avaliação de domínio ficam no lado do servidor, então isso se afrouxa menos. Como também existe um momento definido para o fim da sessão, acho que é prático para usar no trajeto para o trabalho.
Na verdade, como você disse, dá perfeitamente para fazer isso só com GPT ou Claude. Mas acho que dá para entender como um formato que combina com pessoas como eu, que sozinhas não conseguem manter consistência! :)