sam6309's picture
Create app.py
0c2905a verified
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import datetime
import random
# Application Title
st.title("Mood Tracker App")
# Sidebar for Navigation
st.sidebar.title("Navigation")
page = st.sidebar.radio("Go to", ["Home", "Track Mood", "Mood Trends"])
# Session State Initialization
if "mood_data" not in st.session_state:
st.session_state["mood_data"] = pd.DataFrame(columns=["Date", "Mood"])
if page == "Home":
# Home Page
st.header("Welcome to the Mood Tracker App")
st.markdown(
"""
This app helps you track your mood over time. Record how you feel daily, visualize trends, and get personalized motivational quotes.
**How to Use**:
- Go to **Track Mood** to log your daily mood.
- Check **Mood Trends** to see how your mood evolves over time.
Let's build a habit of emotional awareness!
"""
)
elif page == "Track Mood":
# Track Mood Page
st.header("Track Your Mood")
# Mood Input
mood = st.radio("How are you feeling today?", ["Happy", "Sad", "Anxious", "Neutral", "Excited", "Angry"])
submit = st.button("Submit")
# Save Mood
if submit:
today = datetime.date.today()
new_entry = {"Date": today, "Mood": mood}
if today not in st.session_state["mood_data"]["Date"].values:
st.session_state["mood_data"] = pd.concat(
[st.session_state["mood_data"], pd.DataFrame([new_entry])], ignore_index=True
)
st.success(f"Mood for {today} saved successfully!")
else:
st.warning(f"Mood for {today} is already recorded. Edit it in your data table.")
elif page == "Mood Trends":
# Mood Trends Page
st.header("Mood Trends")
# Check if there's data
if st.session_state["mood_data"].empty:
st.warning("No mood data found. Please log your mood in the Track Mood section.")
else:
# Display Data
st.subheader("Your Mood Records")
st.write(st.session_state["mood_data"])
# Prepare Data for Plotting
mood_counts = st.session_state["mood_data"].groupby("Mood").size()
# Plot Mood Trends
fig, ax = plt.subplots()
st.session_state["mood_data"].sort_values("Date", inplace=True)
st.session_state["mood_data"].plot(
x="Date", y="Mood", kind="line", marker="o", ax=ax, legend=False
)
ax.set_ylabel("Mood")
ax.set_title("Mood Trends Over Time")
st.pyplot(fig)
# Motivational Quotes
st.subheader("Motivational Quote of the Day")
quotes = [
"Keep your face to the sunshine and you cannot see a shadow. - Helen Keller",
"The best way to predict the future is to create it. - Peter Drucker",
"Happiness is not something ready made. It comes from your own actions. - Dalai Lama",
"Every day may not be good, but there's something good in every day.",
"Believe you can and you're halfway there. - Theodore Roosevelt",
]
st.write(random.choice(quotes))