A google doc clone
To upload files, please first save the app
import streamlit as st
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.orm import Session, DeclarativeBase
# Database setup
engine = create_engine("sqlite:///documents.sqlite")
class Base(DeclarativeBase):
pass
# Document model
class Document(Base):
__tablename__ = 'documents'
id = Column(Integer, primary_key=True)
title = Column(String)
content = Column(Text)
# Create tables
Base.metadata.create_all(bind=engine)
st.title("Google Doc Clone")
# Document editor
if 'documents' not in st.session_state:
with Session(engine) as session:
doc = Document(title="New Document", content="")
session.add(doc)
session.commit()
st.session_state.documents = pd.DataFrame({"id": [doc.id], "title": [doc.title], "content": [doc.content]})
# Display documents
st.header("Documents")
for index, row in st.session_state.documents.iterrows():
if st.button(row['title'], key=row['id']):
st.session_state.current_doc_id = row['id']
st.session_state.current_doc_title = row['title']
st.session_state.current_doc_content = row['content']
# Document editor form
if 'current_doc_id' in st.session_state:
st.subheader(f"Editing: {st.session_state.current_doc_title}")
content = st.text_area("Document Content", st.session_state.current_doc_content)
if st.button("Save"):
with Session(engine) as session:
doc = session.query(Document).get(st.session_state.current_doc_id)
doc.content = content
session.commit()
st.success("Document saved!")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?