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!")