Desliga um Pouco

Ficha do projecto de Tecnologias da Informação e Comunicação

Lema: Menos ecrã, mais vida. Contexto: trabalho escolar em Moçambique. Data de implementação: 1 de Novembro de 2026.

1. Problema, objectivos e fundamentação

O celular é útil para estudar e comunicar, mas os hábitos de utilização podem ocupar momentos de concentração, descanso e convívio. O projecto procura ajudar adolescentes a observar esses hábitos, escolher metas pessoais e experimentar actividades presenciais. Não estabelece um número universal de horas adequado para todas as pessoas.

Objectivos: disponibilizar informação curta; permitir reflexão sem classificação clínica; distinguir estudo e lazer nos registos; apoiar metas ajustáveis e actividades fora do ecrã; apresentar uma pesquisa escolar de forma transparente; incentivar visitas curtas, sem recompensas por uso constante.

Foram fornecidos resultados agregados de um inquérito com 35 participantes. Não foi localizado um PDF correspondente nem a entrevista à psicóloga nos ficheiros disponíveis. A conferência com os anexos, a caracterização da amostra, o método de selecção, a data e as perguntas integrais permanecem pendentes. Não há evidência de representatividade de todos os adolescentes, nem de causalidade entre o uso do celular e problemas pessoais.

Tempo diário declarado Participantes Percentagem calculada
Menos de 2 horas 1 2,9%
2–4 horas 5 14,3%
4–6 horas 8 22,9%
6–8 horas 8 22,9%
Mais de 8 horas 13 37,1%

A soma é 35; percentagens arredondadas podem somar 100,1%. Outros resultados fornecidos: 29 participantes (82,9%) já deixaram de dormir para permanecer no celular, pelo menos ocasionalmente; 33 (94,3%) verificam o aparelho sem notificações, pelo menos algumas vezes; 21 (60%) pegam no celular logo depois de acordar. São contagens agregadas, não diagnósticos.

A entrevista terá uma secção própria, distinta do inquérito, quando o documento for consultado. Não foi escrito um resumo fictício, não foram inventadas citações e não se afirma aprovação profissional do site.

2. Soluções semelhantes e referências

Solução Contributo e diferença
Bem-estar digital do Android A documentação oficial confirma consulta do tempo de apps e temporizadores em aparelhos compatíveis. O nosso site exige registo manual e acrescenta metas e desafios presenciais.
Tempo de ecrã da Apple Solução do sistema para acompanhar utilização; referência oficial identificada, mas a consulta automatizada da página respondeu HTTP 429. Revisão detalhada da documentação fica pendente; o site não reproduz capacidades do sistema operativo.

A comparação é documental. Não foram instaladas nem testadas estas aplicações neste trabalho. O site oferece acesso por navegador e dados organizados por conta; não tem acesso automático às outras aplicações do aparelho.

3. Requisitos

Funcionais

RF01 consultar conteúdos e pesquisa como visitante. RF02 responder a quatro perguntas e obter síntese descritiva local. RF03 registar, iniciar e terminar sessão. RF04 criar/ler/editar/eliminar metas e marcar/desfazer conclusão. RF05 criar/consultar/corrigir/eliminar registos por dia, separando estudo de lazer. RF06 concluir desafios e desfazer, sem duplicar o mesmo desafio no mesmo dia. RF07 apresentar os últimos sete dias, média dos dias registados, histórico, metas e actividades. RF08 administrar conteúdos e desafios com autorização no servidor. RF09 eliminar a conta e os dados associados mediante palavra-passe.

Não funcionais

RNF01 compatibilidade com Pages Functions/D1 sem servidor Node permanente. RNF02 interface responsiva e leve, sem fontes ou scripts externos. RNF03 navegação por teclado, etiquetas, foco visível, valores textuais dos gráficos e mensagens de estado. RNF04 isolamento de dados, hashes de senhas e sessões protegidas. RNF05 consultas SQL parametrizadas e validação no servidor. RNF06 minimização de dados e ausência de publicidade/rankings. RNF07 erros e estados vazios explícitos. RNF08 não inventar resultados nem simular controlo do aparelho.

4. Perfis, permissões e necessidades

Perfil Permissões Necessidades
Visitante Ler pesquisa, conteúdos e desafios; questionário sem gravação Entender propósito e resultados sem conta
Aluno As anteriores; gerir apenas as próprias metas, registos, conclusões, sessão e conta Privacidade, correcção simples e continuidade
Administrador As anteriores; CRUD de conteúdos e desafios Manter informação e actividades; sem painel de registos individuais
Titular da infra-estrutura Gestão autenticada Cloudflare e promoção/revogação de administrador por D1 Manter segurança e funcionamento

O registo sempre cria student. Não há endpoint de promoção de perfis. A autorização é consultada em D1 em cada pedido. Esconder o painel não é o controlo de acesso.

5. Casos de uso

Caso Actor e pré-condição Fluxo principal Excepções
Conhecer hábitos Visitante/aluno Responder → síntese → escolher meta Pergunta por preencher impede envio; respostas não persistem
Entrar Conta existente Nome e senha → validação → cookie de sessão Credenciais inválidas ou excesso de tentativas
Criar conta Visitante Nome fictício e senha → student → sessão Nome repetido, campos inválidos, tentativa de role recusada
Gerir meta Aluno autenticado Criar/editar/concluir/desfazer/eliminar Outro proprietário recebe 404; tempo inválido recebe 400
Registar dia Aluno autenticado Consultar aparelho → separar minutos → guardar Data impossível/futura ou total >1440 rejeitado; mesma data actualiza
Concluir desafio Aluno autenticado Fazer actividade → concluir hoje → desfazer se necessário Dupla conclusão não duplica dados
Administrar Admin provisionado por titular Criar/editar/eliminar publicação Aluno recebe 403; visitante 401
Eliminar conta Conta autenticada Ler efeito → marcar confirmação → senha → eliminação Senha errada rejeitada; sessões e dados associados são removidos

6. Arquitectura e diagramas

flowchart LR
 N[Navegador HTML CSS JS] -->|HTTPS /api| F[Cloudflare Pages Functions]
 N --> S[Cloudflare Pages ficheiros estáticos]
 F --> A[Validação, sessão e autorização]
 A -->|SQL parametrizado, binding DB| D[(Cloudflare D1)]
flowchart TD
 I[Início] --> H[Conhecer hábitos sem guardar respostas]
 H --> P[Escolher plano]
 P --> L{Sessão válida?}
 L -->|Não| C[Criar conta ou entrar]
 C --> L
 L -->|Sim| M[Guardar meta pessoal]
 M --> O[Fechar site e realizar actividade]
 O --> R[Voltar quando for útil]
 R --> G[Registar tempo manual ou concluir desafio]
 G --> V[Consultar progresso e ajustar meta]
 V --> O
flowchart LR
 Visitante --> Consultar[Consultar conteúdos e pesquisa]
 Visitante --> Questionario[Conhecer hábitos]
 Aluno --> Consultar
 Aluno --> Questionario
 Aluno --> Metas[Gerir próprias metas]
 Aluno --> Registos[Gerir próprios registos]
 Aluno --> Desafios[Concluir e desfazer desafios]
 Aluno --> Conta[Terminar sessão e eliminar conta]
 Administrador --> Publicar[Gerir conteúdos e desafios]
 TitularCloudflare --> Perfis[Provisionar administrador fora da API]

O diagrama anterior representa os actores e casos de uso em notação Mermaid simplificada, sem pretender ser um diagrama UML formal.

erDiagram
 USERS ||--o{ SESSIONS : possui
 USERS ||--o{ GOALS : define
 USERS ||--o{ LOGS : regista
 USERS ||--o{ COMPLETIONS : realiza
 CHALLENGES ||--o{ COMPLETIONS : recebe
 USERS {
  text id PK
  text username UK
  text password_hash
  text salt
  text role
  text created_at
 }
 SESSIONS {
  text token_hash PK
  text user_id FK
  integer expires
 }
 GOALS {
  text id PK
  text user_id FK
  text title
  text category
  integer target
  integer completed
 }
 LOGS {
  text id PK
  text user_id FK
  text day
  integer study
  integer leisure
 }
 CHALLENGES {
  text id PK
  text title
  text description
  integer duration
 }
 COMPLETIONS {
  text user_id PK,FK
  text challenge_id PK,FK
  text day PK
 }
 CONTENTS {
  text id PK
  text title
  text body
 }
 ATTEMPTS {
  text key PK
  integer count
  integer expires
 }

Diagramas para leitura e impressão

Arquitectura

Fluxograma

Casos de uso

Modelo de dados

7. Estrutura de navegação

Início → hábitos, plano, desafios, progresso, pesquisa e informação útil. Cabeçalho → entrar/criar conta ou a minha conta. Rodapé → privacidade e documentação. Conta de administrador → administração. As rotas usam fragmentos (#plano, #progresso), permitindo alojamento estático sem router externo. A API usa /api/ e nunca recebe palavras-passe em URLs.

8. Tecnologias e finalidade

Tecnologia Finalidade
HTML5 Estrutura semântica, formulários, progress e tabelas
CSS Identidade verde/azul, layout adaptativo, foco e contraste
JavaScript Navegação, validação no navegador, API e síntese do questionário
Pages Functions / Web Crypto API, autenticação, PBKDF2, sessões e autorização
Cloudflare D1 / SQLite Persistência, relações, índices únicos e cascatas
Wrangler Desenvolvimento local, migrações, bindings e publicação
Node.js Ferramentas de build e testes, sem processo permanente em produção
Playwright Verificação automatizada da interface em navegador
Mermaid Diagramas em texto versionável

9. Tabelas e campos

Tabela Campos e regras
users id UUID PK; username único; password_hash e salt; role student/admin com default student e CHECK; created_at
sessions token_hash PK; user_id FK; expires em milissegundos; eliminação em cascata
goals id PK; user_id FK; title; category estudo/lazer/fora; target 1–1440 min; completed 0/1
logs id PK; user_id FK; day ISO; study/leisure inteiros 0–1440; soma ≤1440; único por aluno/data
challenges id PK; title; description; duration 1–1440 min
completions PK composta user_id/challenge_id/day; duas FKs com cascata
contents id PK; title; body em texto simples, escapado ao apresentar
attempts key hash de IP e operação; count; expires; guarda de abuso temporária

Metas, registos, sessões e conclusões referenciam users. Conclusões referenciam challenges. Não guardamos respostas individuais da pesquisa nem do questionário de hábitos. As tabelas D1 internas de migrações são mantidas pelo Wrangler.

10. Criação, consulta, actualização e eliminação

Recurso Criar Consultar Actualizar Eliminar
Conta/sessão POST /api/auth/register, /login GET /auth/me Perfil apenas por titular D1 POST /auth/logout; DELETE /account com senha
Metas POST /goals GET /data só próprio aluno PUT /goals/:id com user_id da sessão DELETE /goals/:id com mesmo proprietário
Registos POST /logs, upsert aluno/data GET /data PUT /logs/:id DELETE /logs/:id
Conclusões POST /completions/:id GET /data Desfazer e registar de novo DELETE /completions/:id com data
Conteúdos/desafios POST /admin/contents ou challenges GET /public PUT /admin/:tipo/:id DELETE /admin/:tipo/:id

Todas as rotas da tabela têm prefixo /api. O servidor ignora proprietários enviados pelo cliente: usa o id da sessão. DELETE de conta desencadeia cascatas na base activa. O histórico de conclusões de um desafio é removido se o administrador eliminar esse desafio; a interface avisa esse efeito.

11. Planeado e implementado

Implementado no código: páginas, síntese local, contas de aluno, sessões, metas CRUD e estado de conclusão, registo diário manual, evolução dos últimos sete dias, desafios com desfazer, conteúdos e desafios administráveis, pesquisa agregada, privacidade, eliminação de conta, validação e permissões no servidor. A disponibilidade real e a validação pública dependem do relatório de publicação e testes, não apenas desta lista.

Planeado para depois: conferir PDF e entrevista originais; inserir resumo fiel do parecer; identificar responsável/contacto escolar; conduzir experiência de uma semana; recolher sugestões de acessibilidade com utilizadores reais; avaliar eventual recuperação segura de conta. Nenhuma destas actividades é apresentada como concluída.

12. Etapas de desenvolvimento

  1. Inspecção dos ficheiros e autenticação Cloudflare; anexos correspondentes não localizados.
  2. Consulta da documentação oficial de Pages, Functions, bindings, D1 e ferramentas semelhantes.
  3. Definição de esquema, autorização, dados mínimos e limitações.
  4. Implementação de API e interface com componentes sem framework.
  5. Execução local das migrações e do servidor Wrangler.
  6. Testes de API e interface; correcções registadas no relatório.
  7. Migração remota e publicação de um projecto novo, sem substituir sites existentes.
  8. Verificação pública e entrega de fontes e documentação, conforme evidência de publicação.

13. Testes e correcções

Consultar testes.md para tabela com funcionalidade, resultado esperado, obtido e estado. Ficheiros JSON guardam data, ambiente, URL e verificações executadas. Testes locais e de produção são distinguidos. Não há testes com adolescentes nem prova de redução de tempo de ecrã.

14. Limitações e avaliação futura

O site não mede automaticamente o uso de outras apps e não bloqueia serviços. Os dados manuais dependem da consulta do aparelho e da estimativa estudo/lazer. Uma semana incompleta não é apresentada como uma semana inteira: a média inclui só dias com registo; ausência de dado não é zero. A data de referência da API e da interface é UTC, podendo haver diferença perto da meia-noite local em Moçambique. A conclusão de uma meta é um estado actual; não é histórico diário de cumprimento. Desafios podem ser repetidos uma vez por dia. Não há ranking, sequência obrigatória ou notificações.

Não existe recuperação de senha. A autenticação própria exige manutenção contínua e revisão antes de uma adopção institucional ampla. A aplicação limita tentativas e tamanho de campos, mas não afirma resistência a todos os ataques. Backups técnicos do fornecedor podem persistir depois da eliminação activa. Os serviços gratuitos têm limites de recursos; não se activou plano pago.

Proposta futura de experiência de uma semana: convidar colegas voluntários, com os procedimentos e consentimentos definidos pela escola; explicar finalidade, privacidade e direito a desistir; pedir que escolham uma meta e registem manualmente apenas quando útil; ao fim de sete dias recolher, sem nomes, facilidade de uso, obstáculos e sugestões. Não exigir divulgação das contas nem do tempo pessoal. Comparar percepções e completude dos registos, evitando atribuir mudanças ao site sem desenho de investigação adequado. Não houve ainda participantes, resultados ou conclusão dessa experiência.

15. Conclusão, referências e anexos

Foi desenvolvido um instrumento educativo para reflexão e organização pessoal, com separação entre dados públicos agregados e registos privados. A avaliação de eficácia permanece futura. A conclusão da publicação e dos testes deve ser lida no relatório de evidências; implementação não equivale a eficácia clínica.

Referências consultadas em 1 de Novembro de 2026: - Cloudflare, configuração Pages Functions: https://developers.cloudflare.com/pages/functions/wrangler-configuration/ - Cloudflare, bindings D1: https://developers.cloudflare.com/pages/functions/bindings/ - Cloudflare, Direct Upload: https://developers.cloudflare.com/pages/get-started/direct-upload/ - Cloudflare, comandos e migrações D1: https://developers.cloudflare.com/d1/wrangler-commands/ - Google, Bem-estar digital: https://support.google.com/android/answer/9346420?hl=pt - Apple, Tempo de ecrã (consulta detalhada pendente, HTTP 429): https://support.apple.com/pt-pt/108806 - Dados agregados fornecidos no enunciado do trabalho, 35 participantes; autoria, data e PDF original por confirmar.

Anexos de software: README.md; migrations/0001_initial.sql; docs/testes.md; resultados JSON de execução; docs/publicacao.md; código public/ e functions/. Anexos documentais pendentes: relatório PDF e entrevista à psicóloga. Nenhuma referência clínica ou citação foi inventada.