Spaces:
Sleeping
Sleeping
File size: 3,889 Bytes
b8fec0d 512937f b8fec0d ba071c5 b8fec0d 512937f ba071c5 b8fec0d 512937f ba071c5 b8fec0d 512937f b8fec0d 512937f b8fec0d ba071c5 512937f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
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!")
|