🌍 Read this in English
Aplicação pronta para gerar, exportar e imprimir listas de exercícios de matemática.
MathX é um gerador de exercícios matemáticos construído com Laravel. O usuário seleciona as operações (adição, subtração, multiplicação e divisão), define o intervalo de números, informa a quantidade de exercícios e o sistema gera uma lista que pode ser visualizada, impressa ou exportada para .txt.
O projeto segue uma organização simples baseada em Controller → Services → Models → Views (Blade).
- Geração de exercícios com operações básicas: soma, subtração, multiplicação e divisão.
- Controle do intervalo (mínimo e máximo) dos operandos.
- Escolha da quantidade de exercícios (5 a 50).
- Armazenamento temporário dos exercícios na sessão do Laravel.
- Impressão direta via rota de "print".
- Exportação para arquivo .txtvia rota de export.
- PHP (recomendado 8.x)
- Laravel (Blade para views)
- Bootstrap (assets estáticos estão no projeto)
- Composer para gerenciamento de dependências
Estrutura principal observada no código:
- app/Http/Controllers/MainController.php— lógica das rotas públicas e integração com os serviços.
- app/Services/ExerciseGeneratorService.php— gera exercícios.
- app/Services/ExerciseExporterService.php— formata saída para- .txt.
- app/Services/ExerciseSessionService.php— valida e recupera exercícios da sessão.
- app/Models/Exercise.php— modelo simples que representa um exercício.
- routes/web.php— rotas (home, generateExercises, exportExercises, printExercises).
- resources/views/— arquivos Blade (- layouts,- home,- operations, etc.)
- Clone o repositório:
git clone https://github.com/jprogram-php-projects/MathX.git
cd MathX- Instale dependências PHP com Composer:
composer install- Copie e ajuste o arquivo de ambiente:
cp .env.example .envEdite o .env se precisar (por exemplo: APP_NAME, APP_URL).
- Gere a chave de aplicação do Laravel (essencial para encriptação de sessão/cookies):
php artisan key:generate- 
Se não estiver usando base de dados neste projeto, não é necessário rodar migrations. Caso acrescente features com DB, configure as variáveis do .enve executephp artisan migrate.
- 
Inicie o servidor local: 
php artisan serveAbra http://127.0.0.1:8000 no navegador.
- Renomeie .env.examplepara.envantes de gerar a chave (php artisan key:generate).
- O projeto usa sessão para armazenar os exercícios; certifique-se de que a configuração de sessão do Laravel funciona no seu ambiente (driver filefunciona por padrão).
- Arquivos estáticos (CSS/JS/imagens) são servidos via public/assets/...e as blades usamasset('assets/...')para referenciá-los.
- As views são em Blade. O layout principal (layouts.main_layout) contém referências a Bootstrap e ao arquivomain.css.
- 
Usuário acessa a rota /(home) e envia o formulário com operações, intervalo e quantidade.
- 
MainController::generateExercisesvalida a requisição e chamaExerciseGeneratorService.
- 
Exercícios são gerados e armazenados em sessão ( session(['exercises' => $exercises])).
- 
Usuário pode: - Visualizar a lista gerada na view operations.
- Baixar um .txtatravés deexportExercises(usaExerciseExporterService).
- Imprimir via printExercises, que exibe as questões e, abaixo, as soluções.
 
- Visualizar a lista gerada na view 
- Adicionar opção de configurar casas decimais para divisões.
- Permitir filtros por tipo de operação ao exportar/visualizar.
- Adicionar testes unitários/feature para ExerciseGeneratorServiceeMainController.
- Internacionalização (i18n) das views.
- Melhoria atual: criação de testes com PHPUnit.
- Fork e clone o repositório.
- Abra uma branch com uma feature ou correção: git checkout -b feat/nome-da-feature.
- Faça commits pequenos e descritivos.
- Abra um Pull Request explicando o que foi alterado.
