Loading repository data…
Loading repository data…
PedroSantos1219 / repository
Website genérico - Feito para a Prova de Aptidão Profissional - Sistema de requisição de chaves para a Escola Profissional do Montijo.
Sistema web para gestão e controlo de requisição de chaves numa escola profissional, desenvolvido como Prova de Aptidão Profissional (PAP).
Pedro Santos PAP — 2026
Na minha escola, o controlo de quem tinha cada chave era feito num caderno na receção. Quando alguém precisava de uma sala, ia ao caderno, escrevia o nome, hora e turma. Quando devolvia, voltava ao caderno para o registar. Tinha problemas óbvios:
O sistema substitui o caderno por uma plataforma web acessível por QR Code, com registo automático, controlo em tempo real e relatórios exportáveis.
Três tipos de utilizadores, cada um com fluxo próprio:
data/security-events.log)admin users chaves requisicoes
───── ───── ────── ───────────
id (PK) id (PK) id (PK) id (PK)
email (UNIQUE) nome codigo user_id ──► users.id
password_hash tipo nome chave_id ──► chaves.id
created_at turma restricao inicio
telefone fim
created_at estado (ATIVA|DEVOLVIDA)
telefone
settings ip_address
──────── created_at
key (PK)
value (UNIQUE index parcial em users.telefone WHERE tipo='ALUNO')
pdo_sqlite (base de dados)openssl (PHPMailer/STARTTLS)mbstring (manipulação de strings UTF-8)iconv (normalização de nomes com acentos)mod_rewrite e suporte a .htaccessC:\xampp\htdocs\ no XAMPP, ou equivalente).
git clone <url> requisicaoconfig.php e preencher com a tua conta SMTP:
SMTP_USER → o teu email
SMTP_PASS → App Password do Gmail (16 caracteres)
Sem isto, o sistema funciona na mesma — apenas não envia notificações por email.data/ tem permissões de escrita (Apache precisa disto para criar a base de dados SQLite).http://localhost/<pasta-do-projeto>/html/index.htmlA base de dados começa sem nenhum administrador. Ao abrir html/admin-login.html pela primeira vez, é apresentado um formulário para definires o email e a palavra-passe do administrador único. Depois disso, esse formulário deixa de aparecer e qualquer acesso ao painel admin passa pelo login normal.
| Conta | Como é definida |
|---|---|
| Administrador | Tu defines no primeiro acesso a admin-login.html |
| PIN Professor | Default 1111 — alterável no painel admin |
⚠️ Altera o PIN dos professores logo após o primeiro login (painel admin → secção "PIN de Professor").
.
├── api.php # Backend único (dispatcher + 27 endpoints)
├── seed_alunos.php # Importação inicial de alunos (Excel/Forms)
├── config.example.php # Template das credenciais SMTP
├── assets/ # Imagens, áudio, logótipo
├── css/ # Estilos por página
├── data/ # BD SQLite + backups + log (gitignored)
├── html/ # Páginas: index, requisitar, devolver, admin, etc.
├── js/ # api.js (cliente), app.js (UI), requisicao.js
└── vendor/phpmailer/ # Biblioteca PHPMailer
MIT License — Copyright © 2026 Pedro Santos
Software livre. Podes usar, copiar, modificar e distribuir, comercialmente ou não, desde que mantenhas o aviso de copyright. Ver LICENSE para os detalhes.
Originalmente desenvolvido como Prova de Aptidão Profissional (PAP).