CoolFace
Apppublic

shaheerawan3/Web_Development

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
app.py242 linesDownload Raw Back to root
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()