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