Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -215,4 +215,10 @@ marimo/_lsp/
__marimo__/

# Streamlit
.streamlit/secrets.toml
.streamlit/secrets.toml

# Replit
.replit
replit.nix
replit.md
BuildInPublic/
1 change: 0 additions & 1 deletion .sample.env

This file was deleted.

Binary file removed ai_personal_trainer.zip
Binary file not shown.
47 changes: 0 additions & 47 deletions api.py

This file was deleted.

56 changes: 56 additions & 0 deletions auth.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import streamlit as st
import requests
import uuid

st.title("Login/Signup")
username = st.text_input("Username")

if "session_id" in st.session_state and "username" in st.session_state:
st.switch_page("pages/frontend.py")

# Logging in
if st.button("Login"):
if username:
st.session_state.session_id = str(uuid.uuid4())
API_BASE = "http://localhost:8000/login/"
response = requests.post(API_BASE,
json={
"username": username,
"session_id": st.session_state.session_id
})

if response.status_code == 200:
if response.json()["exists"]:
st.session_state.username = username
st.success("Logged in successfully!")
st.switch_page("pages/frontend.py")
else:
st.warning("User not found. Please sign up.")
else:
st.error("Failed to connect to the server.")
else:
st.error("Username is required")

# Signing up
if st.button("Signup"):
if username:
st.session_state.session_id = str(uuid.uuid4())
API_BASE = "http://localhost:8000/signup/"
response = requests.post(API_BASE,
json={
"username": username,
"session_id": st.session_state.session_id
})
if response.status_code == 200:
if response.json()["exists"]:
st.warning(
"Username already exists. Please login or choose a different username."
)
else:
st.session_state.username = username
st.success("Signed up successfully!")
st.switch_page("pages/frontend.py")
else:
st.error("Failed to connect to the server.")
else:
st.error("Username is required")
67 changes: 0 additions & 67 deletions backend/personal_trainer_agent.py

This file was deleted.

93 changes: 93 additions & 0 deletions dbSQLAlchemy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
from sqlalchemy import Column, String, DateTime, create_engine, Integer, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from datetime import datetime

#connect to db or create if not exists
engine = create_engine('sqlite:///my_database.db', echo=True)
Base = declarative_base()

class User(Base):
__tablename__ = "users"

username = Column(String, primary_key=True)
session_id = Column(String, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)

class ChatMessage(Base):
__tablename__ = "chat_messages"

id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String, ForeignKey("users.username"), nullable=False)
role = Column(String, nullable=False)
content = Column(String, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)


class UserPreferences(Base):
__tablename__ = "user_preferences"
username = Column(String, ForeignKey("users.username"), primary_key=True)
preferences_json = Column(String, nullable=False)
updated_at = Column(DateTime, default=datetime.utcnow)
age = Column(Integer)
gender = Column(String)


# Create tables
Base.metadata.create_all(bind=engine)

#Session factory to interact with db
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionLocal()

# CRUD helpers
def get_user(db_session, username: str):
return db_session.query(User).filter_by(username=username).first()


def create_user(db_session, username: str, session_id: str):
user = User(username=username, session_id=session_id)
db_session.add(user)
db_session.commit()
db_session.refresh(user)
return user


def update_session(db_session, username: str, session_id: str):
user = get_user(db_session, username)
if user:
user.session_id = session_id
db_session.commit()
db_session.refresh(user)
return username


def create_chat_message(db_session, username: str, role: str, content: str):
chat_message = ChatMessage(username=username, role=role, content=content)
db_session.add(chat_message)
db_session.commit()
db_session.refresh(chat_message)



def create_user_preferences(db_session, username: str, preferences_json: str):
user_preferences = UserPreferences(username=username, preferences_json=preferences_json)
db_session.add(user_preferences)
db_session.commit()
db_session.refresh(user_preferences)
return user_preferences

def get_user_preferences(db_session, username: str):
return db_session.query(UserPreferences).filter_by(username=username).first()

def update_user_preferences(db_session, username: str, preferences_json: str):
user_preferences = get_user_preferences(db_session, username)
if user_preferences:
user_preferences.preferences_json = preferences_json
db_session.commit()
db_session.refresh(user_preferences)
return user_preferences
return None

def get_chat_messages(db_session, username: str):
return db_session.query(ChatMessage).filter_by(username=username).order_by(ChatMessage.created_at.asc()).all()
38 changes: 0 additions & 38 deletions frontend.py

This file was deleted.

28 changes: 0 additions & 28 deletions frontend/step2_streamlit_app.py

This file was deleted.

Loading