SNA-AI commited on
Commit
36bec21
Β·
verified Β·
1 Parent(s): 220cb53

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -65
app.py CHANGED
@@ -5,28 +5,25 @@ import os
5
 
6
  DATA_FILE = "habits.csv"
7
 
8
- # ---------- Custom CSS (Modern Neon Blue UI) ----------
 
 
 
9
  st.markdown("""
10
  <style>
11
- body {
12
- background-color: #0f172a;
13
- color: #e2e8f0;
14
- }
15
  .stApp {
16
- background: linear-gradient(135deg, #0f172a, #1e293b);
17
- }
18
- h1, h2, h3 {
19
- color: #38bdf8;
20
  }
21
- div.stButton > button {
22
- background-color: #0ea5e9;
23
- color: white;
24
- border-radius: 10px;
25
- transition: 0.3s;
26
  }
27
- div.stButton > button:hover {
28
- background-color: #0284c7;
29
- box-shadow: 0px 0px 10px #38bdf8;
 
 
 
30
  }
31
  </style>
32
  """, unsafe_allow_html=True)
@@ -44,72 +41,79 @@ def save_data(df):
44
  if "habits" not in st.session_state:
45
  st.session_state.habits = load_data()
46
 
47
- st.title("⚑ Atomic Habit Tracker")
 
 
 
48
 
49
  # ---------- Add Habit ----------
50
  st.subheader("βž• Add Habit")
51
- new_habit = st.text_input("Habit name")
52
-
53
- if st.button("Add Habit"):
54
- if new_habit.strip() == "":
55
- st.warning("Enter valid habit")
56
- elif new_habit in st.session_state.habits["Habit"].values:
57
- st.warning("Habit already exists")
58
- else:
59
- new_row = pd.DataFrame([[new_habit, 0, "Never"]],
60
- columns=st.session_state.habits.columns)
61
- st.session_state.habits = pd.concat(
62
- [st.session_state.habits, new_row],
63
- ignore_index=True
64
- )
65
- save_data(st.session_state.habits)
66
- st.success("Habit added!")
67
-
68
- # ---------- Mark Done (Checkbox UI) ----------
69
- st.subheader("βœ… Daily Tracker")
 
70
 
71
  today = datetime.now().date()
72
- df = st.session_state.habits
73
 
74
- for i, row in df.iterrows():
75
- col1, col2 = st.columns([3, 1])
 
 
 
 
 
 
76
 
77
- with col1:
78
- st.write(f"**{row['Habit']}** πŸ”₯ Streak: {row['Streak']}")
79
 
80
- with col2:
81
- if st.checkbox("Done", key=f"done_{i}"):
82
 
83
- last_date = row["Last Completed"]
84
 
85
- if last_date != "Never":
86
- last_date = pd.to_datetime(last_date).date()
87
 
88
- if (today - last_date).days == 1:
89
- df.loc[i, "Streak"] += 1
90
- elif (today - last_date).days > 1:
 
 
91
  df.loc[i, "Streak"] = 1
92
- else:
93
- df.loc[i, "Streak"] = 1
94
 
95
- df.loc[i, "Last Completed"] = str(today)
96
- st.success(f"{row['Habit']} completed!")
97
 
98
- # Save after loop
99
- st.session_state.habits = df
100
- save_data(df)
101
 
102
- # ---------- Graph ----------
103
- st.subheader("πŸ“Š Streak Progress")
 
 
104
 
105
  if not df.empty:
106
  chart_data = df.set_index("Habit")["Streak"]
107
  st.bar_chart(chart_data)
108
- else:
109
- st.info("No data yet")
110
 
111
- # ---------- Delete ----------
112
- st.subheader("πŸ—‘οΈ Manage")
113
 
114
  if not df.empty:
115
  habit_to_delete = st.selectbox("Delete habit", df["Habit"])
@@ -118,7 +122,7 @@ if not df.empty:
118
  df = df[df["Habit"] != habit_to_delete]
119
  st.session_state.habits = df
120
  save_data(df)
121
- st.warning("Habit deleted!")
122
 
123
  # ---------- Reset ----------
124
  if st.button("Reset All"):
@@ -126,4 +130,4 @@ if st.button("Reset All"):
126
  columns=["Habit", "Streak", "Last Completed"]
127
  )
128
  save_data(st.session_state.habits)
129
- st.error("All habits removed!")
 
5
 
6
  DATA_FILE = "habits.csv"
7
 
8
+ # ---------- Page Config ----------
9
+ st.set_page_config(page_title="Habit Tracker", layout="centered")
10
+
11
+ # ---------- Light UI Styling ----------
12
  st.markdown("""
13
  <style>
 
 
 
 
14
  .stApp {
15
+ background-color: #f8fafc;
 
 
 
16
  }
17
+ h1 {
18
+ color: #1e293b;
19
+ text-align: center;
 
 
20
  }
21
+ .habit-card {
22
+ background: white;
23
+ padding: 15px;
24
+ border-radius: 12px;
25
+ margin-bottom: 10px;
26
+ box-shadow: 0 2px 6px rgba(0,0,0,0.05);
27
  }
28
  </style>
29
  """, unsafe_allow_html=True)
 
41
  if "habits" not in st.session_state:
42
  st.session_state.habits = load_data()
43
 
44
+ df = st.session_state.habits
45
+
46
+ # ---------- Title ----------
47
+ st.title("πŸ“Œ Atomic Habit Tracker")
48
 
49
  # ---------- Add Habit ----------
50
  st.subheader("βž• Add Habit")
51
+
52
+ col1, col2 = st.columns([3, 1])
53
+ with col1:
54
+ new_habit = st.text_input("Enter habit name", label_visibility="collapsed")
55
+ with col2:
56
+ if st.button("Add"):
57
+ if new_habit.strip() == "":
58
+ st.warning("Enter valid habit")
59
+ elif new_habit in df["Habit"].values:
60
+ st.warning("Already exists")
61
+ else:
62
+ new_row = pd.DataFrame([[new_habit, 0, "Never"]],
63
+ columns=df.columns)
64
+ df = pd.concat([df, new_row], ignore_index=True)
65
+ st.session_state.habits = df
66
+ save_data(df)
67
+ st.success("Added!")
68
+
69
+ # ---------- Habit List ----------
70
+ st.subheader("βœ… Today")
71
 
72
  today = datetime.now().date()
 
73
 
74
+ if df.empty:
75
+ st.info("No habits yet. Add one above.")
76
+ else:
77
+ for i, row in df.iterrows():
78
+ col1, col2, col3 = st.columns([4, 2, 1])
79
+
80
+ with col1:
81
+ st.markdown(f"**{row['Habit']}**")
82
 
83
+ with col2:
84
+ st.write(f"πŸ”₯ {row['Streak']}")
85
 
86
+ with col3:
87
+ if st.button("Done", key=f"done_{i}"):
88
 
89
+ last_date = row["Last Completed"]
90
 
91
+ if last_date != "Never":
92
+ last_date = pd.to_datetime(last_date).date()
93
 
94
+ if (today - last_date).days == 1:
95
+ df.loc[i, "Streak"] += 1
96
+ elif (today - last_date).days > 1:
97
+ df.loc[i, "Streak"] = 1
98
+ else:
99
  df.loc[i, "Streak"] = 1
 
 
100
 
101
+ df.loc[i, "Last Completed"] = str(today)
 
102
 
103
+ st.session_state.habits = df
104
+ save_data(df)
 
105
 
106
+ st.rerun()
107
+
108
+ # ---------- Chart ----------
109
+ st.subheader("πŸ“Š Progress")
110
 
111
  if not df.empty:
112
  chart_data = df.set_index("Habit")["Streak"]
113
  st.bar_chart(chart_data)
 
 
114
 
115
+ # ---------- Manage ----------
116
+ st.subheader("βš™οΈ Manage")
117
 
118
  if not df.empty:
119
  habit_to_delete = st.selectbox("Delete habit", df["Habit"])
 
122
  df = df[df["Habit"] != habit_to_delete]
123
  st.session_state.habits = df
124
  save_data(df)
125
+ st.rerun()
126
 
127
  # ---------- Reset ----------
128
  if st.button("Reset All"):
 
130
  columns=["Habit", "Streak", "Last Completed"]
131
  )
132
  save_data(st.session_state.habits)
133
+ st.rerun()