shaheerawan3/Web_Development
0
1import streamlit as st2from transformers import pipeline3import json4from pathlib import Path5import os6 7class FastWebGenerator:8 def __init__(self):9 # Load the smallest model possible for quick text completion10 self.generator = pipeline(11 'text-generation',12 model='distilgpt2',13 device_map='auto'14 )15 16 # Load templates17 self.templates = {18 "react": {19 "component": """20import React, { useState, useEffect } from 'react';21 22const {component_name} = () => {23 const [data, setData] = useState([]);24 25 useEffect(() => {26 // Fetch data27 fetchData();28 }, []);29 30 const fetchData = async () => {31 try {32 const response = await fetch('/api/data');33 const jsonData = await response.json();34 setData(jsonData);35 } catch (error) {36 console.error('Error:', error);37 }38 };39 40 return (41 <div className="container mx-auto p-4">42 <h1 className="text-2xl font-bold mb-4">{title}</h1>43 {content}44 </div>45 );46};47 48export default {component_name};49""",50 "api": """51async function fetchData() {52 const response = await fetch('/api/endpoint');53 const data = await response.json();54 return data;55}56 57async function postData(data) {58 const response = await fetch('/api/endpoint', {59 method: 'POST',60 headers: {61 'Content-Type': 'application/json',62 },63 body: JSON.stringify(data),64 });65 return response.json();66}67"""68 },69 "fastapi": {70 "main": """71from fastapi import FastAPI, HTTPException72from pydantic import BaseModel73from typing import List, Optional74import uvicorn75 76app = FastAPI()77 78class ItemModel(BaseModel):79 id: Optional[int]80 name: str81 description: Optional[str]82 83@app.get("/")84async def root():85 return {"message": "API is running"}86 87@app.get("/items")88async def get_items():89 return {"items": items}90 91@app.post("/items")92async def create_item(item: ItemModel):93 items.append(item)94 return item95 96if __name__ == "__main__":97 uvicorn.run(app, host="0.0.0.0", port=8000)98""",99 "crud": """100@app.get("/items/{item_id}")101async def get_item(item_id: int):102 if item_id < 0 or item_id >= len(items):103 raise HTTPException(status_code=404, detail="Item not found")104 return items[item_id]105 106@app.put("/items/{item_id}")107async def update_item(item_id: int, item: ItemModel):108 if item_id < 0 or item_id >= len(items):109 raise HTTPException(status_code=404, detail="Item not found")110 items[item_id] = item111 return item112 113@app.delete("/items/{item_id}")114async def delete_item(item_id: int):115 if item_id < 0 or item_id >= len(items):116 raise HTTPException(status_code=404, detail="Item not found")117 item = items.pop(item_id)118 return item119"""120 },121 "mongodb": """122from motor.motor_asyncio import AsyncIOMotorClient123 124client = AsyncIOMotorClient('mongodb://localhost:27017')125db = client.database_name126 127async def get_all():128 cursor = db.collection.find({})129 return await cursor.to_list(length=100)130 131async def get_one(id: str):132 return await db.collection.find_one({"_id": id})133 134async def create_one(data: dict):135 result = await db.collection.insert_one(data)136 return result.inserted_id137 138async def update_one(id: str, data: dict):139 result = await db.collection.update_one(140 {"_id": id},141 {"$set": data}142 )143 return result.modified_count144 145async def delete_one(id: str):146 result = await db.collection.delete_one({"_id": id})147 return result.deleted_count148"""149 }150 151 def customize_code(self, template, params):152 # Quick text customization using the model153 prompt = f"Customize this code: {template}\nWith these parameters: {params}\n"154 result = self.generator(prompt, max_length=100, num_return_sequences=1)[0]['generated_text']155 return result156 157 def generate_project(self, specs):158 frontend_code = self.templates["react"]["component"].replace(159 "{component_name}", specs["component_name"]160 ).replace(161 "{title}", specs["title"]162 ).replace(163 "{content}", specs["content"]164 )165 166 backend_code = self.templates["fastapi"]["main"]167 if specs.get("crud", False):168 backend_code += self.templates["fastapi"]["crud"]169 170 db_code = self.templates["mongodb"] if specs["database"] == "MongoDB" else ""171 172 return {173 "frontend": frontend_code,174 "backend": backend_code,175 "database": db_code176 }177 178def main():179 st.set_page_config(page_title="Fast Code Generator", layout="wide")180 181 if 'generator' not in st.session_state:182 with st.spinner("Loading generator..."):183 st.session_state.generator = FastWebGenerator()184 185 st.title("⚡ Fast Code Generator")186 187 with st.form("generate_form"):188 col1, col2 = st.columns(2)189 190 with col1:191 component_name = st.text_input("Component Name", "MyComponent")192 title = st.text_input("Title", "My App")193 content = st.text_area("Content", "<p>Your content here</p>")194 195 with col2:196 database = st.selectbox("Database", ["MongoDB", "PostgreSQL"])197 add_crud = st.checkbox("Add CRUD Operations", value=True)198 add_auth = st.checkbox("Add Authentication", value=False)199 200 if st.form_submit_button("Generate"):201 specs = {202 "component_name": component_name,203 "title": title,204 "content": content,205 "database": database,206 "crud": add_crud,207 "auth": add_auth208 }209 210 result = st.session_state.generator.generate_project(specs)211 212 # Display results213 tabs = st.tabs(["Frontend", "Backend", "Database"])214 215 with tabs[0]:216 st.code(result["frontend"], language="javascript")217 with tabs[1]:218 st.code(result["backend"], language="python")219 with tabs[2]:220 st.code(result["database"], language="python")221 222 # Add download button223 combined_code = f"""224 // Frontend Code225 {result['frontend']}226 227 // Backend Code228 {result['backend']}229 230 // Database Code231 {result['database']}232 """233 234 st.download_button(235 "Download Code",236 combined_code,237 file_name="generated_code.txt",238 mime="text/plain"239 )240 241if __name__ == "__main__":242 main()