NutriApp é uma aplicação de consola em Python destinada a ajudar os utilizadores a monitorizar a sua ingestão nutricional diária. O projeto foca-se na implementação de funcionalidades CRUD para gerir utilizadores, alimentos e registos diários de refeições.
Este projeto cumpre os requisitos do TP2 com:
- Uma aplicação de consola em Python.
- Documentação de código (docstrings) e documentação de projeto (Wiki).
- Um fluxo de trabalho Git colaborativo com controlo de versões.
- Gestão de Utilizadores: Registo, login, recuperação de password e gestão de perfil.
- Controlo de Acesso: Distinção entre Utilizadores normais e Administradores com menus e permissões diferentes.
- CRUD de Alimentos: Os utilizadores podem Criar, Ler, Atualizar e Apagar alimentos da base de dados.
- CRUD de Registos Diários: A funcionalidade central que permite aos utilizadores registar, ver, editar e apagar as suas refeições diárias.
- Cálculos Automáticos: A aplicação calcula o IMC do utilizador e o total de calorias/macros por dia.
- Logging: Todas as ações importantes são registadas em ficheiros de log (ex:
logs/nutriapp.log) para auditoria e depuração.
- Model (Modelo): A lógica de negócio e dados.
crud_*.py: Funções que interagem com a base de dados (ex:crud_login.py,crud_alimentos.py).user.py,admin.py: Classes que definem a estrutura dos dados e contêm regras de negócio (ex: cálculo de IMC, validações).database.py: Gestão da ligação e criação das tabelas SQLite.
- View (Visão): A interface do utilizador.
menus.py: Ficheiro responsável apenas por imprimir menus e pedir a escolha ao utilizador.
- Controller (Controlador): O cérebro da aplicação.
main.py: Contém o loop principal da aplicação. Recebe as escolhas dosmenus.pye decide que funções CRUD (do Modelo) deve chamar.
/
├── data/ # ficheiro criado para base de dados SQLite
│ └── nutricao.db
├── logs/ # Ficheiros de log automáticos
│ └── nutriapp_....log
├── docs/ # Código fonte da documentação e diagramas
│ └── _build/ # Ficheiro de documentação
│ └── diagramas/
│ └── database_schema.png
│ └── diagrama_fluxo_app.png
├── src/ # Código fonte
│ ├── admin.py # Classe Admin
│ ├── crud_alimentos.py # CRUD para alimentos
│ ├── crud_login.py # CRUD para utilizadores
│ ├── crud_registos.py # CRUD para refeições
│ ├── database.py # Gestão da conexão SQLite
│ ├── logging_config.py # Configuração do sistema de logging
│ ├── main.py # Controlador principal
│ ├── menus.py # A "View"
│ ├── user.py # Classe User
│ └── utils.py # Funções utilitárias
├── .gitignore # Ignora ficheiros
├── README.md # Este ficheiro
└── requirements.txt # requirementos de modulos para visualizar documentação
A aplicação não requer bibliotecas externas (usa sqlite3 e logging nativos do Python). Recomenda-se a utilização do Python 3.10 ou superior (devido ao uso de match/case).
Nota: A base de dados (
data/nutricao.db) será criada automaticamente na primeira execução da aplicação, caso ainda não exista.
# 1. Clonar repositorio
git clone https://github.com/DevPool1/ADC_TP_NUTRICAO
cd ADC_TP_NUTRICAO
# 2. Dar run no ficheiro main
python src/main.pyO projeto inclui documentação automática gerada a partir das docstrings do código. Para gerar o site HTML da documentação:
- Instalar dependências de documentação:
pip install -r requirements.txt- Gerar o HTML:
cd docs
# No Windows:
.\make.bat html
# No Linux/Mac:
make html-
Ver a Documentação:
Abre o ficheiro
docs/_build/html/index.htmlno teu browser.
- [Alexandru Tutunaru] (a58379@ualg.pt)
- [André Nunes] (a89979@ualg.pt)
- [Cosmin Ciocan] (a89983@ualg.pt)
- [Firmino Santos] (a89982@ualg.pt)