import streamlit as st import pandas as pd from datetime import datetime import os import matplotlib.pyplot as plt DATA_FILE = "habits.csv" # ---------- Page Config ---------- st.set_page_config(page_title="Habit Tracker", layout="centered") # ---------- CLEAN LIGHT GRAY UI ---------- st.markdown(""" """, unsafe_allow_html=True) # ---------- DATA ---------- def load_data(): if os.path.exists(DATA_FILE): return pd.read_csv(DATA_FILE) return pd.DataFrame(columns=["Habit", "Streak", "Last Completed"]) def save_data(df): df.to_csv(DATA_FILE, index=False) if "habits" not in st.session_state: st.session_state.habits = load_data() df = st.session_state.habits # ---------- TITLE ---------- st.title("Habit Tracker") st.write("Build consistency through daily habits") # ---------- ADD HABIT ---------- st.subheader("Add Habit") col1, col2 = st.columns([4, 1]) with col1: new_habit = st.text_input("Enter habit", label_visibility="collapsed") with col2: if st.button("Add"): if new_habit.strip(): if new_habit not in df["Habit"].values: df = pd.concat( [df, pd.DataFrame([[new_habit, 0, "Never"]], columns=df.columns)], ignore_index=True ) st.session_state.habits = df save_data(df) st.success("Added successfully") else: st.warning("Habit already exists") # ---------- HABITS ---------- st.subheader("Your Habits") today = datetime.now().date() if df.empty: st.info("No habits added yet") else: for i, row in df.iterrows(): col1, col2, col3 = st.columns([5, 1, 1]) with col1: st.markdown(f"""