Repository navigation
v1.5.0
[1.5.0] - 2026-10-28
Sprint 2 (adiantada): API de contas para o app no padrão do Laravel, papel owner por CNPJ, fuso de Brasília e correções no painel. Inclui também o prazo novo da entrega (28/11) e o modelo de status da quadra aprovado.
Adicionado
- API da Sprint 2 para o app: cadastro (
POST /auth/register, já devolve o token), esqueci a senha (POST /auth/forgot-password), perfil (GETePATCH /me, que edita só o nome: a data de nascimento não é editável, como no site), foto de perfil (POST /me/avatar) e troca de senha (PUT /me/password). - Quem cadastra CNPJ no site passa a ser
owner(responsável por quadra). O patchdatabase/patches/003_owner_por_cnpj.sqlconverte quem já tinha CNPJ.
Alterado
- A API muda de formato (padrão do Laravel): sucesso
{ "data": ... }e erro{ "message", "code", "errors": { "campo": ["..."] } }. Datas em ISO 8601 com fuso. Detalhes emdocs/api.md. - O token de login passa a valer 30 dias (antes, 8 horas).
GET /api/v1/sportsdevolve sóid,name,descriptioneicon_path.- O e-mail de recuperação de senha é montado num lugar só (
App\Core\Mailer), usado pelo site e pela API. - A conexão com o banco usa
utf8mb4e mostra uma mensagem genérica (sem detalhes do servidor) quando o banco está fora do ar.
Corrigido
- Painel de admin: o seletor de papel do usuário só tinha "user" (valor que não existe no banco) e "admin", então salvar a edição de um responsável por quadra o rebaixava para
player. Agora ofereceplayer,ownereadmin, na criação e na edição. - Datas com fuso diferente entre a produção (UTC) e o ambiente local (Brasília): a sessão do MySQL passa a usar o horário de Brasília, o mesmo do PHP.
- Upload de imagem quebrava com erro fatal e deixava o arquivo para trás quando a extensão GD do PHP estava desligada; agora salva a imagem (já validada) sem otimizar.
- Painel de admin: ao editar ou criar uma quadra, "Cancelar" e o link "Painel" levavam para o painel do usuário (
/dashboard). Agora voltam para a lista de quadras do admin. O destino passou a ser decidido pela rota atual, e não pelo Referer do navegador. - A tela de criar quadra ignorava o painel de origem e sempre enviava o formulário pela rota do usuário.
- As mensagens de "quadra cadastrada" e "dados da quadra atualizados" não apareciam na lista do admin (o código de status enviado não era o esperado).
- Traduções faltando: a mensagem de "senhas não conferem" ficava vazia na redefinição de senha em português, italiano e japonês, e no cadastro e na troca de senha em inglês, espanhol, hindi e chinês. O título de erro da edição de quadra também faltava nesses quatro idiomas.
Documentação
- Documentação reorganizada:
docs/README.md(índice, cronograma do backend e do app, e como uma mudança anda até a produção),docs/decisoes.md(registro das decisões D01–D20, com data e motivo) edocs/modelo-status.md(proposta de status da quadra, horário de funcionamento e agenda para as S3/S4). Odocs/CLAUDE.mdficou só com o contexto e aponta para esses documentos. - Prazo da entrega antecipado para 28/11 (congelamento em 21/11), com o cronograma refeito em
docs/README.mde a troca de e-mail com código fora do escopo (D28). Modelo de status da quadra, horário de funcionamento e agenda aprovado:docs/modelo-status.mdcom as respostas da revisão e as decisões D21–D27. docs/api.md: contrato da Sprint 2 (cadastro, esqueci a senha, perfil, avatar e troca de senha) e novo formato das respostas no padrão do Laravel ({ data }/{ message, code, errors }), com datas ISO 8601, dinheiro em centavos e coordenadas numéricas. Plano das S3 a S5 atualizado para o novo modelo: partidas agendadas pelo dono no site e status da quadra calculado pela API.config.example.phppassa a trazer o bloco de e-mail (SMTP_*) usado pelo "esqueci a senha". Antes, quem montava o ambiente pelo exemplo ficava sem essas constantes e a recuperação de senha parava com erro fatal.docs/setup.md: passo para ligar as extensõesgdezipdo PHP, como instalar as dependências sem o Composer global, como configurar o SMTP (inclusive senha de app do Gmail) e novos problemas comuns.