import streamlit as st import pandas as pd import datetime from PIL import Image # Title and Description st.markdown("""

Smart Project Tracker

Keep your construction projects on track with real-time updates and insights.

""", unsafe_allow_html=True) # Sidebar for Navigation st.sidebar.markdown("""

Navigation

""", unsafe_allow_html=True) page = st.sidebar.radio("Go to", ["Track Progress", "Monitor Milestones", "Generate Reports"]) # Data Containers if "progress_data" not in st.session_state: st.session_state.progress_data = [] if "milestones_data" not in st.session_state: st.session_state.milestones_data = [] if "budget_data" not in st.session_state: st.session_state.budget_data = [] # Track Progress if page == "Track Progress": st.markdown("""

Track Construction Progress

""", unsafe_allow_html=True) # Upload Section uploaded_file = st.file_uploader("Upload a photo or video of the site", type=["jpg", "jpeg", "png", "mp4", "mov"]) if uploaded_file: file_type = "Video" if uploaded_file.type.startswith("video") else "Image" date = datetime.date.today() st.session_state.progress_data.append({"Date": date, "Type": file_type, "File": uploaded_file}) st.success("File uploaded successfully!") # Display Progress Updates st.markdown("""

Progress Updates

""", unsafe_allow_html=True) for entry in st.session_state.progress_data: st.write(f"**Date:** {entry['Date']} | **Type:** {entry['Type']}") if entry['Type'] == "Image": image = Image.open(entry['File']) st.image(image, caption="Site Progress") else: st.video(entry['File']) # Monitor Milestones elif page == "Monitor Milestones": st.markdown("""

Monitor Milestones, Budgets, and Deadlines

""", unsafe_allow_html=True) # Add Milestones st.markdown("""

Add a Milestone

""", unsafe_allow_html=True) milestone_name = st.text_input("Milestone Name") milestone_date = st.date_input("Deadline") milestone_budget = st.number_input("Budget (in PKR)", min_value=0.0, step=100.0) if st.button("Add Milestone"): if milestone_name and milestone_date: st.session_state.milestones_data.append({ "Name": milestone_name, "Deadline": milestone_date, "Budget": milestone_budget }) st.success("Milestone added successfully!") else: st.error("Please provide all milestone details.") # Display Milestones st.markdown("""

Upcoming Milestones

""", unsafe_allow_html=True) milestones_df = pd.DataFrame(st.session_state.milestones_data) if not milestones_df.empty: st.table(milestones_df) else: st.write("No milestones added yet.") # Generate Reports elif page == "Generate Reports": st.markdown("""

Generate Automated Reports

""", unsafe_allow_html=True) # Generate Summary Report if st.button("Generate Report"): st.markdown("""

Project Summary Report

""", unsafe_allow_html=True) # Milestone Summary st.markdown("### Milestones") milestones_df = pd.DataFrame(st.session_state.milestones_data) if not milestones_df.empty: st.table(milestones_df) else: st.write("No milestones available.") # Budget Summary total_budget = milestones_df["Budget"].sum() if not milestones_df.empty else 0 st.markdown(f"### Total Budget: PKR {total_budget}") # Progress Summary st.markdown("### Progress Updates") for entry in st.session_state.progress_data: st.write(f"**Date:** {entry['Date']} | **Type:** {entry['Type']}") if entry['Type'] == "Image": image = Image.open(entry['File']) st.image(image, caption="Site Progress") else: st.video(entry['File']) st.sidebar.info("Developed for effective project management.")