Aplicação desktop que roda em segundo plano e lembra o formador de executar tarefas administrativas recorrentes durante a aula — fechar sessão, fazer a chamada, entre outras rotinas — por meio de notificações configuráveis por horário fixo ou recorrente.
Projeto final do curso IEFP — Programação, Nível 5 (formador: CID).
Grupo: Felipe Ribeiro, Niley Barros, Renato Moraes
Versão 1.0 — as cinco etapas do curso estão concluídas. O código está congelado nesta versão; a entrega final reúne o relatório e o vídeo demonstrativo.
O que a aplicação faz, hoje:
- cria lembretes com hora fixa ou recorrência dentro de uma janela de horário;
- notifica no ecrã, com a ação escolhida por lembrete (pop-up, som, abrir aplicação ou endereço);
- corre em segundo plano, com ícone na bandeja do sistema, e pode arrancar com o Windows;
- é usada pela linha de comandos (
rememberme add,list,edit,remove, …) ou pela janela gráfica (rememberme gui).
A forma mais simples, sem instalar Python nem mais nada. Na página da versão 1.0 há dois ficheiros:
| Ficheiro | Para quê |
|---|---|
RememberME-Setup-v1.0.exe |
Instalador: acrescenta a aplicação ao menu Iniciar e permite arrancar com o Windows |
RememberME-Portable-v1.0.exe |
Executável único, sem instalação: corre onde estiver |
O Windows pode avisar que o editor é desconhecido, porque o executável não está assinado. Escolher Mais informações → Executar mesmo assim.
- Só existe para Windows 64 bits.
- Os intervalos de recorrência acima de 60 minutos não são suportados: o lembrete fica guardado mas não dispara. Os intervalos que não dividem a hora (45 minutos, por exemplo) dão disparos irregulares.
- A janela de horário só considera a hora inteira:
08:30-14:00começa às 08:00 e inclui a hora das 14:00. Janelas que atravessam a meia-noite não funcionam. - O menu da bandeja não mostra os lembretes ativos.
- Os lembretes pré-carregados (RF05) não estão implementados.
A lista completa, com as melhorias previstas, está em
documentacao.md.
O projeto usa o uv para gerir o ambiente e as dependências. É assim que se corre o código-fonte, para desenvolver ou para experimentar.
Uma vez por máquina. No PowerShell:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Fecha e reabre o terminal, e confirma:
uv --versiongit clone https://github.com/RenatoMoraesDev/RememberME.gitcd RememberMEuv syncUm comando só, e faz tudo: descarrega o Python 3.11 se não o tiveres, cria o
ambiente virtual em .venv/, instala as dependências exatamente nas versões
do uv.lock e instala o próprio RememberME em modo editável — o código passa a
correr onde está, e uma alteração num ficheiro tem efeito sem reinstalar nada.
Não é preciso ativar o ambiente. O uv run trata disso.
uv run rememberme --helpuv run rememberme add "Beber água" --entre 08:00-14:00 --a-cada 60uv run rememberme listE para o pôr a correr na bandeja do sistema, e depois parar:
uv run rememberme startuv run rememberme stopOu, em alternativa, abrir a janela gráfica:
uv run rememberme guiO
startfica a correr até aostopou até se escolher Sair no menu da bandeja. Não o mates à força: em Windows o ícone fica lá a fingir que o programa está vivo.
| Documento | |
|---|---|
| Entregáveis por etapa | Material submetido a avaliação |
| Análise de requisitos | Etapa 1 |
| Plano de desenvolvimento | Etapa 2 |
| Plano e resultados dos testes | Etapa 4 — 22 testes, 22 aprovados |
| Relatório final | Etapa 5 |
| Vídeo demonstrativo | Etapa 5 |
| Quadro de tarefas | Estado atual do trabalho |
| Decisões técnicas | O que se decidiu e porquê |
| Enunciados | Documentos do formador |
Decidida na Etapa 2 e ajustada na Etapa 4 (interface gráfica e instalador). As versões
das dependências estão fixadas no uv.lock, para que os três instalem exatamente o mesmo.
| Área | Tecnologia |
|---|---|
| Linguagem | Python |
| Linha de comandos | Typer |
| Bandeja do sistema | pystray |
| Notificações | plyer |
| Agendamento e recorrência | APScheduler |
| Base de dados | SQLite3 |
| Empacotamento | PyInstaller (--onefile) |
| Instalador | Inno Setup |
| Interface gráfica | Tkinter (prevista em PySide6; ver D11) |
Justificação de cada escolha em stack.md,
e o registo das decisões com o respetivo motivo em decisoes.md.
master só recebe código estável, por merge de develop decidido em reunião de grupo.
develop é onde o trabalho se junta, nos pontos de integração agendados.
As restantes seguem a convenção <tipo>/<nome>-<descrição>:
| Tipo | Uso | Exemplo |
|---|---|---|
feat/ |
Nova funcionalidade | feat/niley-notificacoes |
fix/ |
Correção | fix/felipe-cli-comando-remove |
docs/ |
Documentação | docs/renato-plano-etapa2 |
test/ |
Testes | test/renato-storage |
chore/ |
Configuração e dependências | chore/renato-gitignore |
spike/ |
Experiência descartável | spike/felipe-typer |
<tipo>: <descrição no imperativo> — por exemplo, feat: adicionar comando remove na CLI.
Merge direto em develop, nos pontos de integração agendados. develop → master só por Pull Request, em reunião de grupo.
Alguns commits aparecem no GitHub sob mais do que uma conta, por terem sido feitos de máquinas com configurações diferentes.
| Nome | GitHub |
|---|---|
| Felipe Ribeiro | @felipe-g-ribeiro |
| Niley Barros | @nileysacramento e @sacramentoniley-hub |
| Renato Moraes | @hexemeister e @RenatoMoraesDev |
