srbhavya01 commited on
Commit
9a64799
ยท
verified ยท
1 Parent(s): 039a518

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -51
app.py CHANGED
@@ -1,90 +1,83 @@
1
  import streamlit as st
2
  from auth import generate_otp, create_jwt, verify_jwt
3
- from emails_utils import send_otp_email
4
  from dotenv import load_dotenv
5
  from model_api import query_model
6
  from prompt_builder import build_prompt
7
 
8
- st.set_page_config(page_title="FitPlan AI Login")
 
 
 
 
 
 
 
 
 
 
9
 
10
- # Initialize session state
11
  if "otp" not in st.session_state:
12
  st.session_state.otp = None
13
 
14
- if "authenticated" not in st.session_state:
15
- st.session_state.authenticated = False
16
-
17
- if "token" not in st.session_state:
18
- st.session_state.token = None
19
 
 
20
 
21
- st.title("๐Ÿ” FitPlan AI - OTP Login")
22
 
23
- # ------------------------
24
- # STEP 1: Enter Email
25
- # ------------------------
26
- if not st.session_state.authenticated:
27
 
28
  email = st.text_input("Enter your Email")
29
 
30
- if st.button("Send OTP"):
31
- if email:
 
 
32
  otp = generate_otp()
 
33
  st.session_state.otp = otp
34
  st.session_state.email = email
35
-
 
36
  send_otp_email(email, otp)
37
-
38
- st.success("OTP sent to your email ๐Ÿ“ง")
39
- else:
40
- st.error("Please enter email")
41
 
42
- # ------------------------
43
- # STEP 2: Verify OTP
44
- # ------------------------
45
- if st.session_state.otp:
46
- entered_otp = st.text_input("Enter OTP")
47
 
48
  if st.button("Verify OTP"):
49
- if entered_otp == st.session_state.otp:
 
 
50
  token = create_jwt(st.session_state.email)
51
- st.session_state.token = token
52
- st.session_state.authenticated = True
53
- st.success("Login Successful!")
54
- st.rerun()
55
- else:
56
- st.error("Invalid OTP")
57
 
 
 
58
 
59
- # ------------------------
60
- # Protected Page
61
- # ------------------------
62
- else:
63
- decoded = verify_jwt(st.session_state.token)
64
 
65
- if decoded:
66
- st.success(f"Welcome {decoded['email']} ๐ŸŽ‰")
67
 
68
- st.write("You can now access FitPlan AI")
69
 
70
- if st.button("Logout"):
71
- st.session_state.authenticated = False
72
- st.session_state.token = None
73
- st.session_state.otp = None
74
- st.rerun()
75
- else:
76
- st.error("Session Expired")
77
 
 
78
 
79
  st.title("๐Ÿ‹๏ธ AI Personalized 5-Day Workout Planner")
80
 
81
  name = st.text_input("Name")
82
- age = st.number_input("Age", 10, 80)
 
83
 
84
  gender = st.selectbox("Gender", ["Male", "Female", "Other"])
85
 
86
- height = st.number_input("Height (cm)", 100, 250)
87
- weight = st.number_input("Weight (kg)", 30, 200)
 
88
 
89
  goal = st.selectbox(
90
  "Fitness Goal",
@@ -116,7 +109,7 @@ if st.button("Generate 5-Day Plan ๐Ÿ’ช"):
116
  goal, fitness_level, equipment
117
  )
118
 
119
- st.subheader(f"BMI: {bmi} ({bmi_status})")
120
 
121
  with st.spinner("Generating workout plan..."):
122
  result = query_model(prompt)
 
1
  import streamlit as st
2
  from auth import generate_otp, create_jwt, verify_jwt
3
+ from emails_utils import send_otp_email
4
  from dotenv import load_dotenv
5
  from model_api import query_model
6
  from prompt_builder import build_prompt
7
 
8
+ load_dotenv()
9
+
10
+ st.set_page_config(page_title="FitPlan AI", page_icon="๐Ÿ‹๏ธ", layout="centered")
11
+
12
+ # ---------------- SESSION STATE ---------------- #
13
+
14
+ if "logged_in" not in st.session_state:
15
+ st.session_state.logged_in = False
16
+
17
+ if "otp_sent" not in st.session_state:
18
+ st.session_state.otp_sent = False
19
 
 
20
  if "otp" not in st.session_state:
21
  st.session_state.otp = None
22
 
 
 
 
 
 
23
 
24
+ # ---------------- LOGIN PAGE ---------------- #
25
 
26
+ if not st.session_state.logged_in:
27
 
28
+ st.title("๐Ÿ” FitPlan AI - OTP Login")
 
 
 
29
 
30
  email = st.text_input("Enter your Email")
31
 
32
+ if not st.session_state.otp_sent:
33
+
34
+ if st.button("Send OTP"):
35
+
36
  otp = generate_otp()
37
+
38
  st.session_state.otp = otp
39
  st.session_state.email = email
40
+ st.session_state.otp_sent = True
41
+
42
  send_otp_email(email, otp)
 
 
 
 
43
 
44
+ st.success("OTP sent to your email")
45
+
46
+ else:
47
+
48
+ otp_input = st.text_input("Enter OTP")
49
 
50
  if st.button("Verify OTP"):
51
+
52
+ if otp_input == st.session_state.otp:
53
+
54
  token = create_jwt(st.session_state.email)
 
 
 
 
 
 
55
 
56
+ st.session_state.jwt = token
57
+ st.session_state.logged_in = True
58
 
59
+ st.success("Login Successful")
60
+ st.rerun()
 
 
 
61
 
62
+ else:
63
+ st.error("Invalid OTP")
64
 
65
+ st.stop()
66
 
 
 
 
 
 
 
 
67
 
68
+ # ---------------- APP CONTENT ---------------- #
69
 
70
  st.title("๐Ÿ‹๏ธ AI Personalized 5-Day Workout Planner")
71
 
72
  name = st.text_input("Name")
73
+
74
+ age = st.number_input("Age", 0, 100)
75
 
76
  gender = st.selectbox("Gender", ["Male", "Female", "Other"])
77
 
78
+ height = st.number_input("Height (cm)", 0, 250)
79
+
80
+ weight = st.number_input("Weight (kg)", 0, 200)
81
 
82
  goal = st.selectbox(
83
  "Fitness Goal",
 
109
  goal, fitness_level, equipment
110
  )
111
 
112
+ st.subheader(f"BMI: {bmi:.2f} ({bmi_status})")
113
 
114
  with st.spinner("Generating workout plan..."):
115
  result = query_model(prompt)