Plataforma educativa interativa baseada em RPG
Status: Em Desenvolvimento (Feature Branch:feature/quest)
Versão: 0.0.0
Última Atualização: Novembro de 2025
- Visão Geral
- Características
- Pré-requisitos
- Instalação
- Desenvolvimento
- Estrutura do Projeto
- Arquitetura
- Sistemas Principais
- Como Usar
- Build e Deploy
- Testes
- Troubleshooting
- Contribuindo
O RPG Educativo é uma plataforma educativa inovadora que combina mecânicas de RPG (Role-Playing Game) com conteúdo educacional. Os alunos aprendem respondendo perguntas em batalhas, completando quests educativas, desbloqueando achievements e progressando através de diferentes níveis.
Tornar o aprendizado mais engajador e divertido através de gamificação, motivando alunos a resolver problemas, responder perguntas e desenvolver habilidades enquanto avançam em uma narrativa imersiva.
- Alunos de 8-16 anos
- Professores e educadores
- Instituições de ensino
- Batalhas RPG Clássicas: Sistema de turnos interativo
- Combate Educacional: Responder perguntas para atacar e se defender
- Diferentes Dificuldades: Fácil, Normal, Difícil com inimigos variados
- Física de Jogo: Sistema de HP, dano, defesa e crítico
- Feedback Visual: Animações e efeitos especiais
- Missões Variadas: 5 tipos diferentes de objetivos
- Rastreamento Automático: Progresso atualizado em tempo real
- Recompensas: XP e ouro como incentivo
- Limite de 1 Quest Ativa: Força o jogador a focar em uma tarefa
- Status Progressivo: Disponível → Em Andamento → Completada
- 21 Conquistas Diferentes: Marcos alcançáveis durante o jogo
- Categorias Variadas: Batalhas, Dano, Questões, Quests, Level, Monstros
- Desbloqueio Automático: Sem necessidade de ação manual
- Progresso Cumulativo: Rastreamento permanente
- Criação de Personagem: Seleção de classe ao começar
- Sistema de Classes: Diferentes arquétipos com habilidades únicas
- Progressão de Nível: Aumento de atributos com XP
- Equipamento: Sistema de itens e equipamentos
- Múltiplos Slots: 3+ slots de salvamento disponíveis
- Quick Save: Salvamento rápido com F5
- Auto-Save: Salvamento automático após eventos importantes
- Restauração Completa: Recupera estado total do jogo
- Onboarding Interativo: Apresentação das mecânicas
- Cutscenes: Narrativas visuais e orientações
- Overlay Durante Jogo: Dicas contextuais
- Registro e Login: Criar conta e autenticar
- JWT Tokens: Segurança baseada em tokens
- Persistência de Sessão: Mantém usuário logado
- Node.js: Versão 18.0.0 ou superior
- npm: Versão 9.0.0 ou superior (incluído com Node.js)
- Git: Para controle de versão
- VS Code: Editor de código com extensões React
- React Developer Tools: Extensão para browser
- JSON Formatter: Para visualizar respostas de API
- Spring Boot: API backend em execução (padrão:
http://localhost:8000) - PostgreSQL: Banco de dados do backend
git clone https://github.com/Projeto-RPG-Educativo/FrontEnd-Client.git
cd FrontEnd-Clientnpm installEste comando instalará todas as dependências listadas em package.json:
- react: 19.1.1 - Biblioteca UI
- react-dom: 19.1.1 - DOM rendering
- react-router-dom: 7.9.4 - Roteamento
- styled-components: 6.1.19 - Estilização CSS-in-JS
- framer-motion: 12.23.24 - Animações
- axios: 1.12.2 - Cliente HTTP
Crie um arquivo .env na raiz do projeto:
VITE_API_URL=http://localhost:8000
VITE_APP_NAME=RPG Educativo
VITE_APP_VERSION=0.0.0npm run devA aplicação estará disponível em http://localhost:5173
# Servidor de desenvolvimento com hot reload
npm run dev
# Build para produção
npm run build
# Lint - Verificar código
npm run lint
# Preview - Visualizar build
npm run previewsrc/
├── app/ # Componente raiz da aplicação
├── assets/ # Imagens, ícones, mídia
│ └── Images/
│ ├── background/ # Fundos de tela
│ ├── characters/ # Sprites de personagens
│ ├── cutScene/ # Imagens de cutscenes
│ ├── enemy/ # Sprites de inimigos
│ ├── icons/ # Ícones da UI
│ ├── loading/ # Telas de carregamento
│ └── npc/ # NPCs (personagens não-jogáveis)
├── components/ # Componentes reutilizáveis
│ ├── auth/ # Componentes de autenticação
│ ├── error/ # Tratamento de erros
│ ├── layout/ # Layout principal
│ └── tutorial/ # Componentes de tutorial
├── constants/ # Constantes globais
│ ├── QuestAchievementMetadata.ts
│ └── assets/ # Mapeamento de assets
├── contexts/ # React Contexts (estado global)
│ ├── AuthContext.tsx # Autenticação
│ ├── GameContext.tsx # Estado do jogo
│ ├── FullscreenContext.tsx
│ ├── TutorialContext.tsx # Tutorial
│ └── tutorial/ # Contextos de tutorial
├── hooks/ # Custom React Hooks
│ ├── screen/ # Hooks específicos de telas
│ ├── services/ # Hooks para serviços
│ └── ui/ # Hooks de UI/lógica
├── screen/ # Telas principais
│ ├── auth/ # Telas de autenticação
│ ├── battle/ # Batalha
│ ├── classSelection/ # Seleção de classe
│ ├── cutscene/ # Cutscenes
│ ├── hub/ # Central do jogo (hub)
│ ├── intro/ # Introdução
│ ├── loading/ # Carregamento
│ ├── menu/ # Menus
│ ├── quests/ # Interface de quests
│ ├── quiz/ # Perguntas/Quiz
│ └── user/ # Perfil do usuário
├── services/ # Serviços (lógica de negócio)
│ ├── api/ # Cliente HTTP
│ ├── auth/ # Autenticação
│ ├── achievement/ # Achievements
│ ├── battle/ # Batalhas
│ ├── character/ # Personagens
│ ├── hub/ # Hub/central
│ ├── menu/ # Menu
│ ├── quest/ # Quests
│ ├── question/ # Perguntas
│ └── tutorial/ # Tutorial
├── types/ # Definições de tipos TypeScript
│ ├── dto/ # Data Transfer Objects
│ └── mapper/ # Mapeadores de tipos
├── utils/ # Funções utilitárias
│ └── responsiveUtils.ts # Design responsivo
├── index.css # Estilos globais
└── main.tsx # Ponto de entrada
┌─────────────────────────────────────────────┐
│ Frontend (React + TypeScript) │
│ (Vite + Styled Components + Framer Motion) │
└─────────────────────────────────────────────┘
↓↑ (HTTP/REST)
┌─────────────────────────────────────────────┐
│ Backend API (Spring Boot Java) │
│ (PostgreSQL, JWT Authentication) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ USER INTERFACE │
│ (React Components) │
└─────────────────────────────────────────────────────────┘
↑↓
┌─────────────────────────────────────────────────────────┐
│ STATE MANAGEMENT │
│ (React Contexts + Hooks) │
├─────────────────────────────────────────────────────────┤
│ • AuthContext - Autenticação e usuário │
│ • GameContext - Estado do jogo │
│ • TutorialContext - Tutorial │
│ • FullscreenContext - Modo fullscreen │
└─────────────────────────────────────────────────────────┘
↑↓
┌─────────────────────────────────────────────────────────┐
│ CUSTOM HOOKS │
│ (Lógica de Negócio) │
├─────────────────────────────────────────────────────────┤
│ • useBattle() - Lógica de batalha │
│ • useCharacter() - Personagem │
│ • useQuest() - Quests │
│ • useAchievement() - Achievements │
│ • useSave() - Save/Load │
└─────────────────────────────────────────────────────────┘
↑↓
┌─────────────────────────────────────────────────────────┐
│ API SERVICES │
│ (Cliente HTTP - Axios) │
├─────────────────────────────────────────────────────────┤
│ • api.ts - Configuração base │
│ • BattleService - Endpoint de batalhas │
│ • QuestService - Endpoint de quests │
│ • AchievementService - Endpoint de achievements │
│ • SaveService - Endpoint de save/load │
└─────────────────────────────────────────────────────────┘
↑↓
┌─────────────────────────────────────────────────────────┐
│ BACKEND API (Spring Boot) │
│ http://localhost:8000/api/... │
└─────────────────────────────────────────────────────────┘
1. Usuário acessa a aplicação
↓
2. Frontend verifica token em localStorage
↓
3. Se token válido → Carrega GameContext
Senão → Redireciona para tela de Auth
↓
4. Usuário faz Login/Registro
↓
5. Backend valida credenciais
↓
6. Backend retorna JWT token
↓
7. Frontend salva token em localStorage
↓
8. Frontend inclui token em todas as requisições
(Header: Authorization: Bearer {token})
↓
9. Usuário autenticado - Acesso ao jogo
Arquivos Principais:
contexts/AuthContext.tsx- Gerenciar estado de autenticaçãoservices/auth/- Serviços de login/registroscreen/user/auth/- Telas de login/registro
Funcionalidades:
- Registro de novo usuário
- Login com email/senha
- JWT token management
- Logout
- Persistência de sessão
Fluxo:
Tela de Auth → Serviço Auth → API Backend → Token JWT → Salvo em localStorage
Arquivos Principais:
screen/battle/BattleScreen.tsx- Componente principalservices/battle/BattleService.ts- Lógica de batalhahooks/screen/battle/- Hooks específicos
Mecânicas:
- Turnos baseados em tempo
- Sistema de HP/defesa
- Cálculo de dano
- Sistema de crítico
- Perguntas durante batalha
Fluxo de Turno:
1. Exibe pergunta do inimigo
2. Jogador responde
3. Se correto → Jogador ataca
4. Se incorreto → Inimigo ataca
5. Atualiza HP de ambos
6. Verifica vitória/derrota
7. Próximo turno ou Fim da Batalha
Arquivos Principais:
screen/quests/- Interface de questsservices/quest/QuestService.ts- Lógica de questshooks/services/useQuest.ts- Hook de quests
Tipos de Quests:
- ANSWER_QUESTIONS - Acertar X perguntas
- DEFEAT_MONSTER - Derrotar monstro específico X vezes
- WIN_BATTLES - Vencer X batalhas
- REACH_LEVEL - Alcançar nível específico
- DEAL_DAMAGE - Causar X de dano
Regras:
- Apenas 1 quest ativa por personagem
- Progresso atualizado automaticamente
- Recompensas ao completar
Arquivos Principais:
services/achievement/AchievementService.ts- Lógicahooks/services/useAchievement.ts- Hook
21 Conquistas em 6 categorias:
- 🗡️ Batalha (4)
- 💥 Dano (3)
- 📚 Questões (3)
- 📜 Quests (3)
- ⬆️ Level (3)
- 🐉 Monstros (3)
Desbloqueio Automático: Sem necessidade de ação manual
Arquivos Principais:
hooks/ui/SaveLogic.ts- Lógica de saveservices/- Serviços de save/load
Funcionalidades:
- 3+ slots de salvamento
- Quick Save (F5)
- Auto-Save após eventos
- Restauração completa do estado
Arquivos Principais:
contexts/TutorialContext.tsx- Gerenciadorscreen/cutscene/- Telas de cutscenecomponents/tutorial/- Componentes
Características:
- Onboarding inicial
- Cutscenes narrativas
- Overlays contextuais
- Explicações de mecânicas
1. Abre aplicação
2. Vê tela de Autenticação
3. Clica "Registrar"
4. Preenche email, senha, nome
5. Clica "Criar Conta"
6. Backend cria usuário
7. Frontend faz login automático
8. Redireciona para Seleção de Classe
9. Usuário escolhe classe (Mago, Lutador, Ranger)
10. Personagem criado
11. Inicia Tutorial
1. Abre aplicação
2. Vê tela de Login
3. Preenche email e senha
4. Clica "Entrar"
5. Backend autentica e retorna token
6. Frontend salva token
7. Redireciona para Menu Principal
8. Menu: [Novo Jogo], [Carregar Jogo], [Configurações]
1. Usuário está no Hub (Central)
2. Pode ir para: Arena, Inn, Torre, etc.
3. Arena: Iniciar batalha
4. Responde pergunta
5. Ataca ou se defende
6. Completa batalha
7. Ganha XP e ouro
8. Progresso de quests/achievements atualiza
9. Volta ao Hub
┌──────────────────┐
│ Auth Screen │
│ (Login/Registro) │
└────────┬─────────┘
│ Autenticado
↓
┌──────────────────┐
│ Main Menu │
│ Novo/Carregar │
└────────┬─────────┘
│
┌────┴───┬─────────┐
↓ ↓ ↓
┌─────┐ ┌────────┐ ┌──────────┐
│Class│ │Loading │ │LoadGame │
│Sel. │ │Screen │ │Screen │
└──┬──┘ └───┬────┘ └────┬─────┘
│ │ │
└─────────┼─────────────┘
↓
┌──────────┐
│Tutorial │ (Primeira vez)
└─────┬────┘
↓
┌──────────┐
│ Hub │
│ (Central)│
└─┬──┬──┬──┘
│ │ │
┌────┘ │ └────────────┬────────┐
↓ ↓ ↓ ↓
Arena Inn Torre Taverna
│ │ │ │
↓ ↓ ↓ ↓
Battle Rest Quest Stats
# Build otimizado
npm run build
# Saída em dist/O build gera:
dist/index.html- HTML principaldist/assets/- JS, CSS, imagens otimizadas- Código minificado e otimizado
npm run previewVisualiza o build em http://localhost:4173
npm i -g vercel
vercelnpm i -g netlify-cli
netlify deploy --prod --dir=distFROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]npm run lintVerifica:
- Código TypeScript/JavaScript
- Uso de React hooks
- Variáveis não utilizadas
- Style guide do projeto
- Registrar novo usuário
- Login com credenciais corretas
- Erro com credenciais erradas
- Token salvo em localStorage
- Logout funciona
- Selecionar diferentes classes
- Personagem criado corretamente
- Estadísticas corretas por classe
- Iniciar batalha
- Pergunta exibida corretamente
- Resposta correta → ataque
- Resposta incorreta → defesa
- Dano calculado corretamente
- Vitória/derrota lógica
- Listar quests disponíveis
- Aceitar quest
- Progresso atualiza em batalhas
- Completar quest
- Recompensas recebidas
- Achievements desbloqueados
- Progresso visível
- Notificação ao desbloquear
- Salvar jogo
- Carregar jogo
- Estado restaurado corretamente
Causa: Dependências não instaladas
Solução:
rm -rf node_modules
npm installCausa: Backend não aceita requisições do frontend
Solução: Verificar CORS no backend (Spring Boot)
// Adicionar ao backend
@CrossOrigin(origins = "http://localhost:5173")Causa: JWT token vencido
Solução: Fazer logout e login novamente
localStorage.removeItem('token');
// Redireciona para loginCausa: Path de imagens incorreto
Solução: Verificar imports em constants/assets/
// Correto
import { backgroundImages } from '@/constants/assets/background'
// Incorreto
import backgroundImages from '../../../assets/Images/background'Causa: Estado não persistido
Solução: Fazer save antes de sair, ou implementar auto-save mais frequente
- Faça fork do repositório
- Clone seu fork
- Crie uma branch feature
git checkout -b feature/minha-feature
feat: Nova funcionalidade
fix: Correção de bug
docs: Documentação
style: Formatação de código
refactor: Refatoração
test: Testes
- Push para sua branch
- Crie Pull Request
- Descreva mudanças
- Aguarde revisão
- TypeScript strict mode
- Componentes funcionais com hooks
- Nomes descritivos
- Comentários para lógica complexa
- Máximo 80 caracteres por linha
Consulte estes arquivos para informações específicas:
QUESTS_ACHIEVEMENTS_SYSTEM.md- Sistema de Quests e AchievementsSAVE_LOAD_SYSTEM.md- Sistema de Save/LoadQUEST_ACHIEVEMENT_USAGE.md- Guia de Uso de Quests e Achievements
| Tecnologia | Versão | Propósito |
|---|---|---|
| React | 19.1.1 | Biblioteca UI |
| React Router | 7.9.4 | Roteamento |
| TypeScript | 5.9.3 | Type safety |
| Styled Components | 6.1.19 | Estilização CSS-in-JS |
| Framer Motion | 12.23.24 | Animações |
| Axios | 1.12.2 | Cliente HTTP |
| Vite | 7.1.7 | Build tool |
- Spring Boot 3.x
- PostgreSQL
- JWT Authentication
- REST API
- ESLint - Linting
- TypeScript - Type checking
- Vite - Build e HMR
- ✅ Sistema de autenticação
- ✅ Batalhas básicas
- ✅ Sistema de quests
- ✅ Sistema de achievements
- 🟡 Sistema de save/load (Em desenvolvimento)
- 🟡 Tutorial integrado (Em desenvolvimento)
- Sistema de multiplayer
- Ranking global
- Lojas de itens
- Mais conteúdo educacional
- Aplicativo mobile
- Offline mode
Crie uma issue no GitHub com:
- Descrição do problema
- Steps para reproduzir
- Screenshots/vídeos
- Sistema operacional e browser
Discussões e sugestões são bem-vindas via GitHub Discussions
Este projeto é propriedade do Projeto RPG Educativo - Todos os direitos reservados.
- Projeto RPG Educativo - Desenvolvimento
- Xavier - Frontend Lead Developer
- Todos os contribuidores
- Comunidade educativa
- Testadores beta
Este projeto segue as políticas de:
- Microsoft Content Policies
- Proteção de dados (LGPD/GDPR)
- Acessibilidade web (WCAG)
Última atualização: 19 de Novembro de 2025
Versão da Documentação: 1.0
- Documentação Oficial React
- Vite Documentation
- TypeScript Handbook
- Styled Components Docs
- Framer Motion Docs
- GitHub Repository
Boa sorte e divirta-se desenvolvendo! 🎮✨