StudyDaily / app.py
MonsterBoyTabs's picture
Update app.py
d7d16f5 verified
raw
history blame
2.24 kB
import streamlit as st
from streamlit_mic_recorder import mic_recorder
import json
from pathlib import Path
# Initialize session state for tasks
if 'tasks' not in st.session_state:
st.session_state.tasks = {
day: [] for day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
}
# Title and setup
st.title("πŸ“š Student Study Tracker")
days = list(st.session_state.tasks.keys())
# Progress bar (total tasks completed)
total_tasks = sum(len([task for task in st.session_state.tasks[day] if task['checked']]) for day in days)
st.progress(total_tasks / (len(days)*3)) # Adjust denominator as needed
# Sidebar for voice input (placeholder)
st.sidebar.header("🎀 Add Tasks with Voice")
voice_note = mic_recorder(start_prompt="🎀 Record Task", stop_prompt="⏹️ Stop", key='voice_recorder')
if voice_note and 'bytes' in voice_note:
st.sidebar.warning("⚠️ Voice-to-text integration needed (e.g., OpenAI Whisper).")
# Create tabs for days
tabs = st.tabs(days)
for i, day in enumerate(days):
with tabs[i]:
# Display existing tasks for the day
for task_idx, task in enumerate(st.session_state.tasks[day]):
col1, col2 = st.columns([0.9, 0.1])
with col1:
# Editable task text
new_text = st.text_input(
f"Task {task_idx + 1}",
value=task['text'],
key=f"task_{day}_{task_idx}_text"
)
st.session_state.tasks[day][task_idx]['text'] = new_text
with col2:
# Checkbox to mark completion
is_checked = st.checkbox(
"Done",
value=task['checked'],
key=f"task_{day}_{task_idx}_checked"
)
st.session_state.tasks[day][task_idx]['checked'] = is_checked
# Add new task button
if st.button(f"βž• Add Task for {day}"):
st.session_state.tasks[day].append({'text': '', 'checked': False})
# Save data to JSON
if st.button("πŸ’Ύ Save All Tasks"):
data = st.session_state.tasks
Path("tasks_data.json").write_text(json.dumps(data))
st.success("Tasks saved!")