Um aplicativo mobile inspirado no Duolingo para aprender Python de forma interativa!
Aplicativo React Native (Expo) com lições, perguntas de múltipla escolha, preenchimento de lacunas e predição de saída. Inclui dicas, realce de código, feedback com cores e sistema de XP.
- Principais Recursos
- Requisitos
- Instalação
- Executando
- Estrutura do Projeto
- Modelo de Dados
- Solução de Problemas
- Scripts Disponíveis
- Licença
- Tipos de exercícios:
mcq(múltipla escolha),fill(preencher lacuna) eoutput-prediction(prever saída). - Dicas: Botão “Hint” no rodapé abre um modal com dicas; se houver várias, é possível navegar com “Next”.
- Starter code sempre visível: Realce de sintaxe com
@wooorm/starry-nighte fallback em texto monoespaçado. - Feedback imediato: Cores e explicações para acertos e erros.
- Botão Next ao errar: Permite avançar para a próxima questão mesmo após erro.
- XP por questão: Ganhe XP ao acertar e avance de nível!
- Node.js 18+ e npm 9+
- Aplicativo Expo Go instalado no celular (Android/iOS)
-
Clone o repositório:
git clone https://github.com/Keymiuz/Duolingo-Dev.git cd Duolingo-Dev -
Instale as dependências:
npm install
Se encontrar conflitos (
ERESOLVE), rode:npm install --legacy-peer-deps
- Inicie o servidor de desenvolvimento:
npm start
- Abra o app Expo Go no seu celular e escaneie o QR Code.
src/
components/ # Componentes reutilizáveis (exercícios, etc)
data/ # Dados estáticos (lições em JSON)
screens/ # Telas principais do app
services/ # Lógica de busca de dados
theme/ # Configurações de tema (cores, fontes)
types/ # Definições de tipos TypeScript
As lições e exercícios seguem uma estrutura JSON para facilitar a criação de conteúdo.
- Tipos Principais:
LessoneExerciseemsrc/types/index.ts. - Exemplo de Lição:
src/data/lessons/sample-lesson-01.json.
Clique para ver um exemplo de lição em JSON
{
"id": "py-01-variables",
"title": "Variables & Data Types",
"xp": 50,
"level": 1,
"exercises": [
{
"type": "mcq",
"prompt": "What is the type of `3.14` in Python?",
"choices": ["int", "float", "str", "bool"],
"answer": "float",
"hints": ["Think about decimals."],
"explanation": "3.14 is a floating-point number (float)."
}
]
}- Conflito de dependências (ERESOLVE): Rode
npm install --legacy-peer-deps. - Expo não recarrega: Pare o servidor e rode
expo start -cpara limpar o cache. - Sem highlight no código: O app mostra fallback monoespaçado automaticamente; verifique se
starterCodeexiste na questão.
npm start— Inicia o Metro/Expo.npm run android— Abre no Android.npm run ios— Abre no iOS (macOS necessário).npm run web— Abre no navegador.