Skip to content

A mobile app (React Native + Expo) inspired by the repository https://github.com/sanidhyy/duolingo-clone but reimplemented as a React Native app in the style of Duolingo for developers

Notifications You must be signed in to change notification settings

Keymiuz/Duolingo-Dev

Repository files navigation

Duolingo Dev

TypeScript React Native Expo Node.js Python Learning

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.

Índice

Principais Recursos

  • Tipos de exercícios: mcq (múltipla escolha), fill (preencher lacuna) e output-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-night e 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!

Requisitos

  • Node.js 18+ e npm 9+
  • Aplicativo Expo Go instalado no celular (Android/iOS)

Instalação

  1. Clone o repositório:

    git clone https://github.com/Keymiuz/Duolingo-Dev.git
    cd Duolingo-Dev
  2. Instale as dependências:

    npm install

    Se encontrar conflitos (ERESOLVE), rode: npm install --legacy-peer-deps

Executando o App

  1. Inicie o servidor de desenvolvimento:
    npm start
  2. Abra o app Expo Go no seu celular e escaneie o QR Code.

Estrutura do Projeto

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

Modelo de Dados

As lições e exercícios seguem uma estrutura JSON para facilitar a criação de conteúdo.

  • Tipos Principais: Lesson e Exercise em src/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)."
    }
  ]
}

Solução de Problemas

  • Conflito de dependências (ERESOLVE): Rode npm install --legacy-peer-deps.
  • Expo não recarrega: Pare o servidor e rode expo start -c para limpar o cache.
  • Sem highlight no código: O app mostra fallback monoespaçado automaticamente; verifique se starterCode existe na questão.

Scripts Disponíveis

  • 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.

About

A mobile app (React Native + Expo) inspired by the repository https://github.com/sanidhyy/duolingo-clone but reimplemented as a React Native app in the style of Duolingo for developers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published