Este documento complementa os comentários do código. Ele descreve responsabilidades e regras de negócio sem repetir a sintaxe do framework.
routes/web.phpassocia a URL ao controlador e aplica os middlewares necessários.- O middleware valida a sessão, a atividade da conta e, quando necessário, a função de administrador.
- O controlador valida a entrada e limita consultas ao usuário autenticado.
- Os modelos Eloquent leem ou persistem os dados.
ActivityLoggerregistra movimentações relevantes sem interromper a ação principal em caso de falha de auditoria.- Uma view Blade renderiza a resposta usando o layout compartilhado.
LoginControllerconcentra login, cadastro, recuperação, logout e criação da sessão.NoteUseré a conta efetivamente usada pelo sistema.StrongPasswordmantém uma única política para cadastro e redefinição.EnsureNoteUserAuthenticatedbloqueia sessões ausentes ou contas que foram desativadas.EnsureAdministratorrestringe a gestão de usuários a contas administrativas.AdminUserControllercria contas, altera nome, função e estado, e redefine senhas.
Regra principal: uma conta inativa não pode acessar recursos privados. O último administrador ativo não deve ser rebaixado ou bloqueado por engano.
NoteControllerlista, cria, exibe, atualiza, entrega anexos privados e envia notas para a Lixeira.Notearmazena conteúdo, status, prioridade, etiquetas, categoria, metadados dos anexos e exclusão lógica.NoteContentnormaliza espaços HTML e converte o conteúdo do editor em texto legível para cards, popups e Lixeira.notes/editor.blade.phpé reutilizado pela criação e pela edição.notes/index.blade.phpexibe indicadores, cards e o modal de visualização.
Status persistidos:
em_andamento: trabalho ativo;pendente: item aguardando ação;concluida: nota finalizada e contabilizada nos indicadores.
Regra principal: toda consulta mutável localiza a nota pelo identificador e pelo user_name da sessão, evitando acesso entre usuários.
CategoryControllercalcula indicadores e mantém categorias.Categoryrelaciona uma categoria a várias notas.layout/categories.blade.phpreúne cadastro, edição, busca e tabela.
Uma categoria inativa deixa de aparecer como opção para novas edições, mas continua preservada. Ao remover uma categoria, a chave estrangeira usa nullOnDelete, portanto as notas continuam existentes e passam a ficar sem categoria.
TrashControllerlista registros com exclusão lógica, restaura, exclui um item definitivamente ou esvazia a Lixeira.notes/trash.blade.phpcontém confirmações para ações irreversíveis.
Regra principal: delete na nota ativa é reversível; forceDelete na Lixeira é definitivo e sempre exige confirmação na interface.
ActivityLoggergrava ações vinculadas ao usuário.Activityrepresenta cada movimentação.PanelControllerconsolida métricas, séries temporais e filtros.panel/index.blade.phppermite escolher período, dado e formato do gráfico.components/panel/stat-card.blade.phpmantém os indicadores reutilizáveis.
As séries são preenchidas dia a dia, inclusive com zero, para manter os gráficos de 7, 30 e 90 dias alinhados. A migração de backfill cria eventos históricos de notas e categorias já existentes.
| Tabela | Finalidade | Vínculos importantes |
|---|---|---|
note_users |
Contas, função, estado e recuperação | user_name identifica o proprietário dos dados. |
notes |
Conteúdo e organização das notas | Categoria opcional e deleted_at para Lixeira. |
categories |
Agrupamentos personalizados | Pertence logicamente a um user_name. |
activities |
Histórico usado pelo Painel | Pode referenciar o tipo e o id do objeto alterado. |
sections |
Divisões antigas mantidas por compatibilidade | Pertence a uma nota e é removida em cascata. |
As migrações antigas não devem ser alteradas depois de aplicadas. Mudanças futuras devem entrar em um novo arquivo de migração com operações up e down documentadas.
layout/app.blade.phpfornece cabeçalho, menu lateral, busca e modais globais.layout/sidebar.blade.phpexibe links conforme a função da conta.layout/blank.blade.phpatende páginas sem navegação principal.login,register,recovererecover_answerimplementam o fluxo público.resources/css/style.cssorganiza estilos por seções comentadas e preserva a identidade laranja.resources/js/app.jscontém apenas o comportamento global dos cards; scripts específicos permanecem próximos às suas views.
password.blade.php e as telas de section_* são artefatos legados mantidos para compatibilidade. O fluxo atual de login envia nome e senha juntos, e o conteúdo principal da nota substituiu as antigas divisões.
public/manifest.jsondefine nome, cores e ícones instaláveis.public/sw.jsmantém um cache mínimo dos arquivos de abertura.public/iconscontém os ícones e o utilitário usado para gerá-los.
O service worker não armazena respostas privadas de notas; pedidos fora da lista mínima continuam seguindo para a rede.
Dockerfilemonta a imagem PHP/Apache, instala dependências e gera o frontend.docker-entrypoint.shexecuta migrações antes do servidor.render.yamldescreve o serviço, sem armazenar segredos.AppServiceProviderforça HTTPS quandoAPP_URLusa esse esquema.
Antes de publicar, executar php artisan test e npm run build, confirmar APP_DEBUG=false, configurar uma APP_KEY exclusiva e disponibilizar armazenamento persistente para os dados necessários.
- comentários de classe ou método explicam responsabilidade ou regra, não a sintaxe;
- comentários Blade identificam regiões funcionais e condições de segurança;
- migrações documentam o efeito de avanço e reversão;
- arquivos gerados pelo Laravel, dependências e artefatos de build não recebem comentários locais.