SNA-AI commited on
Commit
f028ba0
·
verified ·
1 Parent(s): 8d858a6

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +103 -0
app.py ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ from datetime import datetime
4
+ import os
5
+
6
+ DATA_FILE = "habits.csv"
7
+
8
+ # Load data
9
+ def load_data():
10
+ if os.path.exists(DATA_FILE):
11
+ return pd.read_csv(DATA_FILE)
12
+ else:
13
+ return pd.DataFrame(columns=["Habit", "Streak", "Last Completed"])
14
+
15
+ # Save data
16
+ def save_data(df):
17
+ df.to_csv(DATA_FILE, index=False)
18
+
19
+ # Initialize
20
+ if "habits" not in st.session_state:
21
+ st.session_state.habits = load_data()
22
+
23
+ st.title("📌 Atomic Habit Tracker")
24
+
25
+ # --- Add Habit ---
26
+ st.subheader("Add New Habit")
27
+ new_habit = st.text_input("Enter habit name")
28
+
29
+ if st.button("Add Habit"):
30
+ if new_habit.strip() == "":
31
+ st.warning("Enter a valid habit name")
32
+ elif new_habit in st.session_state.habits["Habit"].values:
33
+ st.warning("Habit already exists")
34
+ else:
35
+ new_row = pd.DataFrame([[new_habit, 0, "Never"]],
36
+ columns=st.session_state.habits.columns)
37
+ st.session_state.habits = pd.concat(
38
+ [st.session_state.habits, new_row],
39
+ ignore_index=True
40
+ )
41
+ save_data(st.session_state.habits)
42
+ st.success(f"Habit '{new_habit}' added!")
43
+
44
+ # --- Mark Habit Done ---
45
+ st.subheader("Mark Habit as Done")
46
+ habit_list = st.session_state.habits["Habit"].tolist()
47
+
48
+ if habit_list:
49
+ selected_habit = st.selectbox("Select Habit", habit_list)
50
+
51
+ if st.button("Mark Done"):
52
+ today = datetime.now().date()
53
+ df = st.session_state.habits
54
+
55
+ idx = df[df["Habit"] == selected_habit].index[0]
56
+ last_date = df.loc[idx, "Last Completed"]
57
+
58
+ # Streak logic
59
+ if last_date != "Never":
60
+ last_date = pd.to_datetime(last_date).date()
61
+ if (today - last_date).days == 1:
62
+ df.loc[idx, "Streak"] += 1
63
+ elif (today - last_date).days > 1:
64
+ df.loc[idx, "Streak"] = 1
65
+ else:
66
+ df.loc[idx, "Streak"] = 1
67
+
68
+ df.loc[idx, "Last Completed"] = str(today)
69
+
70
+ st.session_state.habits = df
71
+ save_data(df)
72
+
73
+ st.success(f"Habit '{selected_habit}' marked as done!")
74
+
75
+ else:
76
+ st.info("No habits added yet.")
77
+
78
+ # --- Display Data ---
79
+ st.subheader("Your Habits")
80
+ st.dataframe(st.session_state.habits)
81
+
82
+ # --- Delete Habit ---
83
+ st.subheader("Delete Habit")
84
+
85
+ if habit_list:
86
+ delete_habit = st.selectbox("Select Habit to Delete", habit_list, key="delete")
87
+
88
+ if st.button("Delete Habit"):
89
+ st.session_state.habits = st.session_state.habits[
90
+ st.session_state.habits["Habit"] != delete_habit
91
+ ]
92
+ save_data(st.session_state.habits)
93
+ st.success(f"Habit '{delete_habit}' deleted!")
94
+
95
+ # --- Reset All ---
96
+ st.subheader("Danger Zone ⚠️")
97
+
98
+ if st.button("Reset All Habits"):
99
+ st.session_state.habits = pd.DataFrame(
100
+ columns=["Habit", "Streak", "Last Completed"]
101
+ )
102
+ save_data(st.session_state.habits)
103
+ st.warning("All habits cleared!")