proposal-maker / app.py
MalikShehram's picture
Update app.py
512937f verified
import streamlit as st
from PIL import Image
import os
# Page Configuration
st.set_page_config(page_title="Proposal Maker", layout="centered")
# Function to Match Idea with Predefined Images
def get_predefined_images(idea):
# Simple keyword-based matching
image_mapping = {
"glucose": ["images/glucose_model.png", "images/glucose_block_diagram.png"],
"ai": ["images/ai_model.png", "images/ai_block_diagram.png"],
"healthcare": ["images/healthcare_model.png", "images/healthcare_block_diagram.png"],
"monitoring": ["images/monitoring_model.png", "images/monitoring_block_diagram.png"],
}
# Match keywords to image list
matched_images = []
for keyword, images in image_mapping.items():
if keyword in idea.lower():
matched_images.extend(images)
return matched_images or ["images/default_block_diagram.png"] # Default image if no match
# App Title
st.title("Proposal Maker")
st.write("Generate a complete engineering proposal with text and images!")
# Step 1: Input Proposal Idea
st.header("Step 1: Enter Your Proposal Idea")
idea = st.text_input("Describe your proposal idea (e.g., AI-powered glucose monitoring system)", placeholder="Enter your project idea here")
# Step 2: Generate Proposal
st.header("Step 2: Generate Proposal")
if st.button("Generate Proposal"):
if not idea.strip():
st.warning("Please enter a proposal idea!")
else:
# Automatically generate content based on the idea
introduction = f"This proposal focuses on {idea}. The aim is to address a significant problem by designing an innovative solution using state-of-the-art technologies."
objectives = f"The primary objectives of this project are:\n- Develop a prototype for {idea}.\n- Ensure the solution is cost-effective and scalable.\n- Test and validate the system in real-world conditions."
methodology = f"The project will involve:\n1. Research and analysis of existing technologies related to {idea}.\n2. Designing and developing the solution using appropriate hardware and software tools.\n3. Iterative testing to refine the functionality and ensure robustness."
timeline = "The project is expected to be completed in the following phases:\n- Phase 1 (Month 1-2): Research and requirement gathering.\n- Phase 2 (Month 3-4): Prototype development.\n- Phase 3 (Month 5-6): Testing and validation.\n- Phase 4 (Month 7): Final deployment and reporting."
budget = "The estimated budget for this project includes:\n- Hardware components: $500\n- Software tools: $300\n- Miscellaneous expenses: $200\n**Total: $1,000**"
expected_outcomes = f"By implementing this project, we aim to achieve:\n- A functional prototype of {idea}.\n- A scalable and user-friendly solution.\n- Significant improvements in addressing the targeted problem."
# Combine all sections
proposal_content = f"""
# Proposal: {idea}
## Introduction
{introduction}
## Objectives
{objectives}
## Methodology
{methodology}
## Timeline
{timeline}
## Budget
{budget}
## Expected Outcomes
{expected_outcomes}
"""
# Display the generated proposal
st.subheader("Generated Proposal")
st.text_area("Proposal", proposal_content, height=300)
# Download Proposal
st.download_button("Download Proposal", proposal_content, file_name="proposal.md", mime="text/markdown")
# Display Predefined Images
st.subheader("Relevant Images")
matched_images = get_predefined_images(idea)
for img_path in matched_images:
if os.path.exists(img_path):
img = Image.open(img_path)
st.image(img, caption=os.path.basename(img_path), use_column_width=True)
st.write("---")
st.info("This app generates proposals automatically based on your input idea and adds relevant images!")