Skip to content

DevPool1/ADC_TP_NUTRICAO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

198 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🥑 NutriApp - Projeto ADC 2025

Python Status Versão

📚 Objetivo do Trabalho

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:

  1. Uma aplicação de consola em Python.
  2. Documentação de código (docstrings) e documentação de projeto (Wiki).
  3. Um fluxo de trabalho Git colaborativo com controlo de versões.

🛠️ Funcionalidades Principais

  • 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.

🏗️ Arquitetura e Estrutura do Projeto

  • 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 dos menus.py e 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

▶️ Como Executar a Aplicaçã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.py

📚 Documentação Técnica (Sphinx)

O 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.html no teu browser.

👥 Autores

About

Repositório para o trabalho prático da unidade curricular ADC

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages