This commit is contained in:
Ionel Andrei Cataon
2026-02-18 15:00:42 +02:00
parent 3794792e72
commit 360b6bfef6
4 changed files with 130 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
from flask import Flask, render_template, request
import os
# Îi spunem clar că templates este în același folder cu main.py
template_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'templates'))
app = Flask(__name__, template_folder=template_dir)
# Funcția care calculează caloriile (Formula Mifflin-St Jeor)
def calculeaza_target(data):
w = float(data.get('weight'))
h = float(data.get('height'))
a = int(data.get('age'))
gen = data.get('gender')
act = float(data.get('activity'))
scop = data.get('goal')
# Calcul BMR (Basal Metabolic Rate)
if gen == 'masculin':
bmr = (10 * w) + (6.25 * h) - (5 * a) + 5
else:
bmr = (10 * w) + (6.25 * h) - (5 * a) - 161
# TDEE (Total Daily Energy Expenditure)
tdee = bmr * act
# Ajustare în funcție de scop (slăbire/îngrășare)
if scop == 'slabire':
return round(tdee - 500)
elif scop == 'ingrasare':
return round(tdee + 500)
else:
return round(tdee)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/calculate', methods=['POST'])
def calculate():
try:
data = request.form
kcal_final = calculeaza_target(data)
# Trimitem rezultatul înapoi în pagina index.html
return render_template('index.html', rezultat=kcal_final, date_introduse=data)
except Exception as e:
return f"A apărut o eroare: {e}", 400
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

View File

@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="ro">
<head>
<meta charset="UTF-8">
<title>Nutriție AI Pro</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="p-5 bg-light">
<div class="container" style="max-width: 600px;">
<h1 class="mb-4 text-center">Calculator Kcal & AI Menu</h1>
<div class="card p-4 shadow-sm">
<form action="/calculate" method="post">
<div class="mb-3">
<label class="form-label">Greutate actuală (kg)</label>
<input type="number" name="weight" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Înălțime (cm)</label>
<input type="number" name="height" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Vârstă</label>
<input type="number" name="age" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Sex</label>
<select name="gender" class="form-select">
<option value="masculin">Masculin</option>
<option value="feminin">Feminin</option>
</select>
</div>
<div class="mb-3">
<label class="form-label">Nivel activitate</label>
<select name="activity" class="form-select">
<option value="1.2">Sedentar (birou)</option>
<option value="1.55">Activ (3-5 zile sport)</option>
<option value="1.9">Extrem (muncă fizică/sport zilnic)</option>
</select>
</div>
<div class="mb-3">
<label class="form-label">Obiectiv</label>
<select name="goal" class="form-select">
<option value="mentinere">Menținere</option>
<option value="slabire">Slăbire (-500 kcal)</option>
<option value="ingrasare">Îngrășare (+500 kcal)</option>
</select>
</div>
<button type="submit" class="btn btn-success w-100">Calculează</button>
</form>
{% if rezultat %}
<div class="mt-4 alert alert-info text-center">
<h4>Ținta ta: {{ rezultat }} kcal / zi</h4>
</div>
<hr>
<h5>🤖 Cere meniu de la AI (Beta)</h5>
<textarea class="form-control mb-2" placeholder="Ex: Sunt vegetarian și nu îmi place broccoli..."></textarea>
<button class="btn btn-outline-primary btn-sm">Generează Meniu Săptămânal</button>
{% endif %}
</div>
</div>
</body>
</html>