From 1ede987914259167ab6b69a6eb638742b231c480 Mon Sep 17 00:00:00 2001 From: Chris-1010 <122332721@umail.ucc.ie> Date: Tue, 21 Jan 2025 23:54:11 +0000 Subject: [PATCH] Fix: Imports on backend Fix: Connected Backend to Frontend over localhost --- backend/.flaskenv | 2 - backend/core/Dockerfile | 17 - backend/core/blueprints/__init__.py | 23 - backend/core/blueprints/authentication.py | 92 - backend/core/blueprints/main.py | 14 - backend/requirements.txt | 21 - frontend/src/App.css | 42 - frontend/src/assets/react.svg | 1 - frontend/src/pages/HomePage.tsx | 12 - web_server/.flaskenv | 2 +- .../{ => backend}/blueprints/__init__.py | 11 +- .../blueprints/authentication.py | 6 +- web_server/backend/blueprints/main.py | 42 + .../backend}/blueprints/stripe.py | 0 .../backend}/blueprints/utils.py | 0 .../backend}/database/database.py | 0 .../backend}/database/schema.sql | 0 {backend/core => web_server/backend}/forms.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 887 -> 0 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 1673 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1365 -> 0 bytes .../__pycache__/app.cpython-310.pyc | Bin 562 -> 0 bytes .../authentication.cpython-310.pyc | Bin 2594 -> 0 bytes .../authentication.cpython-311.pyc | Bin 5120 -> 0 bytes .../authentication.cpython-312.pyc | Bin 4609 -> 0 bytes .../__pycache__/main.cpython-310.pyc | Bin 564 -> 0 bytes .../__pycache__/main.cpython-311.pyc | Bin 800 -> 0 bytes .../__pycache__/main.cpython-312.pyc | Bin 640 -> 0 bytes .../__pycache__/stripe.cpython-311.pyc | Bin 2457 -> 0 bytes .../__pycache__/stripe.cpython-312.pyc | Bin 2220 -> 0 bytes .../__pycache__/utils.cpython-310.pyc | Bin 1293 -> 0 bytes .../__pycache__/utils.cpython-311.pyc | Bin 2018 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 1765 -> 0 bytes web_server/blueprints/main.py | 14 - web_server/blueprints/stripe.py | 38 - web_server/blueprints/utils.py | 24 - .../__pycache__/database.cpython-311.pyc | Bin 2082 -> 0 bytes web_server/database/app.db | Bin 28672 -> 0 bytes web_server/database/database.py | 22 - web_server/database/requirements.txt | 1 - web_server/database/schema.sql | 36 - web_server/forms.py | 15 - .../frontend}/eslint.config.js | 0 {frontend => web_server/frontend}/index.html | 0 .../frontend}/package-lock.json | 0 .../frontend}/package.json | 1 + .../frontend}/postcss.config.js | 0 {frontend => web_server/frontend}/src/App.tsx | 0 .../frontend/src/assets/images/dance_game.png | Bin 0 -> 295434 bytes .../frontend/src/assets/images/elf.webp | Bin 0 -> 381486 bytes .../frontend/src/assets/images/monkey.png | Bin 0 -> 25370 bytes .../frontend/src/assets/images/surface.jpeg | Bin 0 -> 6813431 bytes .../frontend/src/assets/styles}/index.css | 7 +- .../src/components/Auth/LoginForm.tsx | 0 .../src/components/Auth/SignupForm.tsx | 0 .../src/components/Checkout/CheckoutForm.tsx | 0 .../src/components/Layout/BaseLayout.tsx | 0 .../src/components/Video/VideoPlayer.tsx | 0 .../frontend}/src/main.tsx | 2 +- .../frontend}/src/pages/CheckoutPage.tsx | 0 web_server/frontend/src/pages/HomePage.tsx | 73 + .../frontend}/src/pages/LoginPage.tsx | 0 .../frontend}/src/pages/NotFoundPage.tsx | 0 .../frontend}/src/pages/SignupPage.tsx | 0 .../frontend}/src/pages/VideoPage.tsx | 0 .../frontend}/src/vite-env.d.ts | 0 .../frontend}/tailwind.config.js | 8 +- .../frontend}/tsconfig.app.json | 0 .../frontend}/tsconfig.json | 0 .../frontend}/tsconfig.node.json | 0 .../frontend}/vite.config.ts | 0 web_server/package-lock.json | 31 + web_server/package.json | 5 + web_server/project_structure.txt | 178 + web_server/react-flask/.gitignore | 23 - web_server/react-flask/README.md | 70 - web_server/react-flask/package-lock.json | 17805 ---------------- web_server/react-flask/package.json | 41 - web_server/react-flask/public/favicon.ico | Bin 3870 -> 0 bytes web_server/react-flask/public/index.html | 43 - web_server/react-flask/public/logo192.png | Bin 5347 -> 0 bytes web_server/react-flask/public/logo512.png | Bin 9664 -> 0 bytes web_server/react-flask/public/manifest.json | 25 - web_server/react-flask/public/robots.txt | 3 - web_server/react-flask/src/App.css | 38 - web_server/react-flask/src/App.js | 25 - web_server/react-flask/src/App.test.js | 8 - web_server/react-flask/src/index.css | 13 - web_server/react-flask/src/index.js | 17 - web_server/react-flask/src/logo.svg | 1 - web_server/react-flask/src/reportWebVitals.js | 13 - web_server/react-flask/src/setupTests.js | 5 - web_server/requirements.txt | 1 + web_server/ui/static/checkout.js | 21 - web_server/ui/static/styles.css | 0 web_server/ui/templates/base.html | 14 - web_server/ui/templates/checkout.html | 15 - web_server/ui/templates/index.html | 5 - web_server/ui/templates/login.html | 19 - web_server/ui/templates/signup.html | 31 - web_server/ui/templates/video.html | 19 - 101 files changed, 354 insertions(+), 18641 deletions(-) delete mode 100644 backend/.flaskenv delete mode 100644 backend/core/Dockerfile delete mode 100644 backend/core/blueprints/__init__.py delete mode 100644 backend/core/blueprints/authentication.py delete mode 100644 backend/core/blueprints/main.py delete mode 100644 backend/requirements.txt delete mode 100644 frontend/src/App.css delete mode 100644 frontend/src/assets/react.svg delete mode 100644 frontend/src/pages/HomePage.tsx rename web_server/{ => backend}/blueprints/__init__.py (58%) rename web_server/{ => backend}/blueprints/authentication.py (95%) create mode 100644 web_server/backend/blueprints/main.py rename {backend/core => web_server/backend}/blueprints/stripe.py (100%) rename {backend/core => web_server/backend}/blueprints/utils.py (100%) rename {backend => web_server/backend}/database/database.py (100%) rename {backend => web_server/backend}/database/schema.sql (100%) rename {backend/core => web_server/backend}/forms.py (100%) delete mode 100644 web_server/blueprints/__pycache__/__init__.cpython-310.pyc delete mode 100644 web_server/blueprints/__pycache__/__init__.cpython-311.pyc delete mode 100644 web_server/blueprints/__pycache__/__init__.cpython-312.pyc delete mode 100644 web_server/blueprints/__pycache__/app.cpython-310.pyc delete mode 100644 web_server/blueprints/__pycache__/authentication.cpython-310.pyc delete mode 100644 web_server/blueprints/__pycache__/authentication.cpython-311.pyc delete mode 100644 web_server/blueprints/__pycache__/authentication.cpython-312.pyc delete mode 100644 web_server/blueprints/__pycache__/main.cpython-310.pyc delete mode 100644 web_server/blueprints/__pycache__/main.cpython-311.pyc delete mode 100644 web_server/blueprints/__pycache__/main.cpython-312.pyc delete mode 100644 web_server/blueprints/__pycache__/stripe.cpython-311.pyc delete mode 100644 web_server/blueprints/__pycache__/stripe.cpython-312.pyc delete mode 100644 web_server/blueprints/__pycache__/utils.cpython-310.pyc delete mode 100644 web_server/blueprints/__pycache__/utils.cpython-311.pyc delete mode 100644 web_server/blueprints/__pycache__/utils.cpython-312.pyc delete mode 100644 web_server/blueprints/main.py delete mode 100644 web_server/blueprints/stripe.py delete mode 100644 web_server/blueprints/utils.py delete mode 100644 web_server/database/__pycache__/database.cpython-311.pyc delete mode 100644 web_server/database/app.db delete mode 100644 web_server/database/database.py delete mode 100644 web_server/database/requirements.txt delete mode 100644 web_server/database/schema.sql delete mode 100644 web_server/forms.py rename {frontend => web_server/frontend}/eslint.config.js (100%) rename {frontend => web_server/frontend}/index.html (100%) rename {frontend => web_server/frontend}/package-lock.json (100%) rename {frontend => web_server/frontend}/package.json (95%) rename {frontend => web_server/frontend}/postcss.config.js (100%) rename {frontend => web_server/frontend}/src/App.tsx (100%) create mode 100644 web_server/frontend/src/assets/images/dance_game.png create mode 100644 web_server/frontend/src/assets/images/elf.webp create mode 100644 web_server/frontend/src/assets/images/monkey.png create mode 100644 web_server/frontend/src/assets/images/surface.jpeg rename {frontend/src => web_server/frontend/src/assets/styles}/index.css (94%) rename {frontend => web_server/frontend}/src/components/Auth/LoginForm.tsx (100%) rename {frontend => web_server/frontend}/src/components/Auth/SignupForm.tsx (100%) rename {frontend => web_server/frontend}/src/components/Checkout/CheckoutForm.tsx (100%) rename {frontend => web_server/frontend}/src/components/Layout/BaseLayout.tsx (100%) rename {frontend => web_server/frontend}/src/components/Video/VideoPlayer.tsx (100%) rename {frontend => web_server/frontend}/src/main.tsx (85%) rename {frontend => web_server/frontend}/src/pages/CheckoutPage.tsx (100%) create mode 100644 web_server/frontend/src/pages/HomePage.tsx rename {frontend => web_server/frontend}/src/pages/LoginPage.tsx (100%) rename {frontend => web_server/frontend}/src/pages/NotFoundPage.tsx (100%) rename {frontend => web_server/frontend}/src/pages/SignupPage.tsx (100%) rename {frontend => web_server/frontend}/src/pages/VideoPage.tsx (100%) rename {frontend => web_server/frontend}/src/vite-env.d.ts (100%) rename {frontend => web_server/frontend}/tailwind.config.js (59%) rename {frontend => web_server/frontend}/tsconfig.app.json (100%) rename {frontend => web_server/frontend}/tsconfig.json (100%) rename {frontend => web_server/frontend}/tsconfig.node.json (100%) rename {frontend => web_server/frontend}/vite.config.ts (100%) create mode 100644 web_server/package-lock.json create mode 100644 web_server/package.json create mode 100644 web_server/project_structure.txt delete mode 100644 web_server/react-flask/.gitignore delete mode 100644 web_server/react-flask/README.md delete mode 100644 web_server/react-flask/package-lock.json delete mode 100644 web_server/react-flask/package.json delete mode 100644 web_server/react-flask/public/favicon.ico delete mode 100644 web_server/react-flask/public/index.html delete mode 100644 web_server/react-flask/public/logo192.png delete mode 100644 web_server/react-flask/public/logo512.png delete mode 100644 web_server/react-flask/public/manifest.json delete mode 100644 web_server/react-flask/public/robots.txt delete mode 100644 web_server/react-flask/src/App.css delete mode 100644 web_server/react-flask/src/App.js delete mode 100644 web_server/react-flask/src/App.test.js delete mode 100644 web_server/react-flask/src/index.css delete mode 100644 web_server/react-flask/src/index.js delete mode 100644 web_server/react-flask/src/logo.svg delete mode 100644 web_server/react-flask/src/reportWebVitals.js delete mode 100644 web_server/react-flask/src/setupTests.js delete mode 100644 web_server/ui/static/checkout.js delete mode 100644 web_server/ui/static/styles.css delete mode 100644 web_server/ui/templates/base.html delete mode 100644 web_server/ui/templates/checkout.html delete mode 100644 web_server/ui/templates/index.html delete mode 100644 web_server/ui/templates/login.html delete mode 100644 web_server/ui/templates/signup.html delete mode 100644 web_server/ui/templates/video.html diff --git a/backend/.flaskenv b/backend/.flaskenv deleted file mode 100644 index d85c341..0000000 --- a/backend/.flaskenv +++ /dev/null @@ -1,2 +0,0 @@ -FLASK_APP=core.blueprints.__init__ -FLASK_DEBUG=True \ No newline at end of file diff --git a/backend/core/Dockerfile b/backend/core/Dockerfile deleted file mode 100644 index 83a7577..0000000 --- a/backend/core/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM python:3.10 - -# Set working directory -WORKDIR /core - -# Install dependencies -COPY requirements.txt requirements.txt -RUN pip install --no-cache-dir -r requirements.txt - -# Copy application code -COPY . . - -# Expose Flask's port -EXPOSE 5000 - -# Start the Flask app -CMD ["python", "app.py"] diff --git a/backend/core/blueprints/__init__.py b/backend/core/blueprints/__init__.py deleted file mode 100644 index 320dcde..0000000 --- a/backend/core/blueprints/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -from flask import Flask -from flask_session import Session -from core.blueprints.utils import logged_in_user - -def create_app(): - app = Flask(__name__, template_folder="../../ui/templates/", static_folder="../../ui/static") - app.config["SECRET_KEY"] = "" - app.config["SESSION_PERMANENT"] = False - app.config["SESSION_TYPE"] = "filesystem" - - Session(app) - app.before_request(logged_in_user) - - with app.app_context(): - from core.blueprints.authentication import auth_bp - from core.blueprints.main import main_bp - from core.blueprints.stripe import stripe_bp - - app.register_blueprint(auth_bp) - app.register_blueprint(main_bp) - app.register_blueprint(stripe_bp) - - return app \ No newline at end of file diff --git a/backend/core/blueprints/authentication.py b/backend/core/blueprints/authentication.py deleted file mode 100644 index fc2677f..0000000 --- a/backend/core/blueprints/authentication.py +++ /dev/null @@ -1,92 +0,0 @@ -from flask import Blueprint, render_template, session, request, url_for, redirect, g -from werkzeug.security import generate_password_hash, check_password_hash -from core.forms import SignupForm, LoginForm -from database.database import Database -from core.blueprints.utils import login_required - -auth_bp = Blueprint("auth", __name__) - -@auth_bp.route("/signup", methods=["GET", "POST"]) -def signup(): - form = SignupForm() - if form.validate_on_submit(): - # Retrieve data from the sign up form - username = form.username.data - email = form.email.data - password = form.password.data - password2 = form.password2.data - - # Store in database and hash to avoid exposing sensitive information - db = Database() - cursor = db.create_connection() - - # Check if user already exists to avoid duplicates - dup_email = cursor.execute("""SELECT * FROM users - WHERE email = ?;""", (email,)).fetchone() - dup_username = cursor.execute("""SELECT * FROM users - WHERE username = ?;""", (username,)).fetchone() - - if dup_email is not None: - form.email.errors.append("Email already taken.") - elif dup_username is not None: - form.username.errors.append("Username already taken.") - elif password != password2: - form.password.errors.append("Passwords must match.") - else: - cursor.execute("""INSERT INTO users (username, password, email, num_followers, isPartenered, bio) - VALUES (?, ?, ?, ?, ?, ?);""", (username, generate_password_hash(password), email, 0, 0, "This user does not have a Bio.")) - db.commit_data() - return redirect(url_for("auth.login")) - - - # Close connection to prevent data leaks - db.close_connection() - - return render_template("signup.html", form=form) - -@auth_bp.route("/login", methods=["GET", "POST"]) -def login(): - form = LoginForm() - if form.validate_on_submit(): - # Retrieve data from the login form - username = form.username.data - password = form.username.data - - # Compare with database - db = Database() - cursor = db.create_connection() - - # Check if user exists so only users who have signed up can login - user_exists = cursor.execute("""SELECT * FROM users - WHERE username = ?;""", (username,)).fetchone() - - if not user_exists: - form.username.errors.append("Incorrect username or password.") - db.close_connection() - - # Check is hashed passwords match to verify the user logging in - elif not check_password_hash(user_exists["password"], password): - form.username.errors.append("Incorrect username or password.") - db.close_connection() - - else: - # Create a new session to prevent users from exploiting horizontal access control - session.clear() - session["username"] = username - - # Return to previous page if applicable - next_page = request.args.get("next") - - # Otherwise return home - if not next_page: - next_page = url_for("app.index") - db.close_connection() - return redirect(next_page) - - return render_template("login.html", form=form) - -@auth_bp.route("/logout") -@login_required -def logout(): - session.clear() - return redirect(url_for("index")) \ No newline at end of file diff --git a/backend/core/blueprints/main.py b/backend/core/blueprints/main.py deleted file mode 100644 index 34472ac..0000000 --- a/backend/core/blueprints/main.py +++ /dev/null @@ -1,14 +0,0 @@ -from flask import render_template, Blueprint - -main_bp = Blueprint("app", __name__) - - -@main_bp.route('/') -def index(): - """ - Home page of the platform - - Contains a list of some of the streams that are currently live and the most popular categories. - """ - return render_template('index.html') - diff --git a/backend/requirements.txt b/backend/requirements.txt deleted file mode 100644 index 3b5b9c9..0000000 --- a/backend/requirements.txt +++ /dev/null @@ -1,21 +0,0 @@ -blinker==1.9.0 -cachelib==0.13.0 -certifi==2024.12.14 -charset-normalizer==3.4.1 -click==8.1.8 -colorama==0.4.6 -Flask==3.1.0 -Flask-Session==0.8.0 -Flask-WTF==1.2.2 -python-dotenv==1.0.1 -idna==3.10 -itsdangerous==2.2.0 -Jinja2==3.1.5 -MarkupSafe==3.0.2 -msgspec==0.19.0 -requests==2.32.3 -stripe==11.4.1 -typing_extensions==4.12.2 -urllib3==2.3.0 -Werkzeug==3.1.3 -WTForms==3.2.1 diff --git a/frontend/src/App.css b/frontend/src/App.css deleted file mode 100644 index b9d355d..0000000 --- a/frontend/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/frontend/src/assets/react.svg b/frontend/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/frontend/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/src/pages/HomePage.tsx b/frontend/src/pages/HomePage.tsx deleted file mode 100644 index 4e42fb0..0000000 --- a/frontend/src/pages/HomePage.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; - -const HomePage: React.FC = () => { - return ( -
-

Welcome to Our Team Software Project

-

This is the homepage of our project. Stay tuned for more updates!

-
- ); -}; - -export default HomePage; \ No newline at end of file diff --git a/web_server/.flaskenv b/web_server/.flaskenv index 0664964..9a285a8 100644 --- a/web_server/.flaskenv +++ b/web_server/.flaskenv @@ -1,2 +1,2 @@ -FLASK_APP=blueprints.__init__ +FLASK_APP=backend.blueprints.__init__ FLASK_DEBUG=True \ No newline at end of file diff --git a/web_server/blueprints/__init__.py b/web_server/backend/blueprints/__init__.py similarity index 58% rename from web_server/blueprints/__init__.py rename to web_server/backend/blueprints/__init__.py index 544c8b3..97500d5 100644 --- a/web_server/blueprints/__init__.py +++ b/web_server/backend/blueprints/__init__.py @@ -1,20 +1,23 @@ from flask import Flask from flask_session import Session -from blueprints.utils import logged_in_user +from backend.blueprints.utils import logged_in_user +from flask_cors import CORS def create_app(): app = Flask(__name__, template_folder="../ui/templates/", static_folder="../ui/static/") app.config["SECRET_KEY"] = "" app.config["SESSION_PERMANENT"] = False app.config["SESSION_TYPE"] = "filesystem" + #! ↓↓↓ For development purposes only + CORS(app) # Allow cross-origin requests for the frontend Session(app) app.before_request(logged_in_user) with app.app_context(): - from blueprints.authentication import auth_bp - from blueprints.main import main_bp - from blueprints.stripe import stripe_bp + from backend.blueprints.authentication import auth_bp + from backend.blueprints.main import main_bp + from backend.blueprints.stripe import stripe_bp app.register_blueprint(auth_bp) app.register_blueprint(main_bp) diff --git a/web_server/blueprints/authentication.py b/web_server/backend/blueprints/authentication.py similarity index 95% rename from web_server/blueprints/authentication.py rename to web_server/backend/blueprints/authentication.py index b661021..fdb7375 100644 --- a/web_server/blueprints/authentication.py +++ b/web_server/backend/blueprints/authentication.py @@ -1,8 +1,8 @@ from flask import Blueprint, render_template, session, request, url_for, redirect, g from werkzeug.security import generate_password_hash, check_password_hash -from forms import SignupForm, LoginForm -from database.database import Database -from blueprints.utils import login_required +from backend.forms import SignupForm, LoginForm +from backend.database.database import Database +from backend.blueprints.utils import login_required auth_bp = Blueprint("auth", __name__) diff --git a/web_server/backend/blueprints/main.py b/web_server/backend/blueprints/main.py new file mode 100644 index 0000000..a6305e0 --- /dev/null +++ b/web_server/backend/blueprints/main.py @@ -0,0 +1,42 @@ +from flask import render_template, Blueprint + +main_bp = Blueprint("app", __name__) + + +@main_bp.route('/get_streams') +def get_sample_streams(): + """ + Returns a list of (sample) streamers live right now + """ + streamers = [ + { + "id": 1, + "title": "Gaming Stream", + "streamer": "Gamer123", + "viewers": 1500, + "thumbnail": "assets/images/monkey.png", + }, + { + "id": 2, + "title": "Art Stream", + "streamer": "Artist456", + "viewers": 800, + "thumbnail": "assets/images/surface.jpeg", + }, + { + "id": 3, + "title": "Music Stream", + "streamer": "Musician789", + "viewers": 2000, + "thumbnail": "assets/images/dance_game.png", + }, + { + "id": 4, + "title": "Just Chatting", + "streamer": "Chatty101", + "viewers": 1200, + "thumbnail": "assets/images/elf.webp", + }, + ] + return streamers + diff --git a/backend/core/blueprints/stripe.py b/web_server/backend/blueprints/stripe.py similarity index 100% rename from backend/core/blueprints/stripe.py rename to web_server/backend/blueprints/stripe.py diff --git a/backend/core/blueprints/utils.py b/web_server/backend/blueprints/utils.py similarity index 100% rename from backend/core/blueprints/utils.py rename to web_server/backend/blueprints/utils.py diff --git a/backend/database/database.py b/web_server/backend/database/database.py similarity index 100% rename from backend/database/database.py rename to web_server/backend/database/database.py diff --git a/backend/database/schema.sql b/web_server/backend/database/schema.sql similarity index 100% rename from backend/database/schema.sql rename to web_server/backend/database/schema.sql diff --git a/backend/core/forms.py b/web_server/backend/forms.py similarity index 100% rename from backend/core/forms.py rename to web_server/backend/forms.py diff --git a/web_server/blueprints/__pycache__/__init__.cpython-310.pyc b/web_server/blueprints/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 8285129192c1d76f50db7c3e65ddd8f84bc0956d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmZ8f&2Q5%6nDOwHtohX;97R=r2}z86#{jcgb<}#icmw4mBntC&H0$^s0_8IahR+%QT54^ogr3 zgb(f-sp!0=ob7NrPa$QFZ+!Hu+JX@Jsy6z8_!ijy`8a$Qy@OVZXmOlM8tqeYDvL52 z7Fk(=i`^heX`ayNDJQ#A8uKV9W^xg8x;y5@2~A|A5{Ygii3r2G}IQwr0UoCSB2pjg#XFU z0x!!z4}}dW0iX+d;K$$*WFGTuUk-r4KDsl?(nD*2>)|mh;$zYn7UdX=3|8TKA00v6 z<56t^knhB^_?gB01`hm7=J4ITBu9W8kI+>Fjg$458L^}T-dtIan^8+X2>5owj9Kvm zXf!ZLj3%8k_JvF8UY;5F-Y^spO@IB_e zQ88P%NsI=gSzZe_U~{lRyFrpXIdv}136K;=C(oe+E@Xn^Qv}xy*bPxf2^rA~LP38u zf3lxRIlVN~qRRT7sWsB;IK83S2E)oargxd$RJJSB&EWM** zy*1#dtPnk2#u`cIZ@s&;tmKO;D@&{C64tDA(XO$!MsRwE*mrQ1DOJjY*BJztmz6fI zs8IHEOq3Bj8zim6R(v_8- ztaS43>|7^*c=N%2SA5HzU*xuvdb=xLb?2`8fiJq^%pYRxLH^6l!_Cg7D@LA*SDuJh z9ztNgC(b+K{PSr1o7t~syV2=hbh?isp=-W!rB!EqxYD9CK3pm1jF0D1?5Q;KM4EZj z?n(BYmWgIEfPYrAP1peYw{vPo;V|KwhJw3gE4BROcPjzn6SD=Nz zuH2Z)PX-@PiuqR~k6#x+Z)GB0sK!6GgWH_&Z8#qPt2?;L6KAKCZ85{7{$=(L<_B~F z>mo7@>V>ps*?P;wACNh4`Dc)pK=p%yAh_r?XMDJ5&KVyrT6D%oUz`$Bee|*-X;}Cl D_4}R8 diff --git a/web_server/blueprints/__pycache__/__init__.cpython-312.pyc b/web_server/blueprints/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index e2f9252ff0027d835429edbbe2552db837f8723a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1365 zcmah}&1(}u6rauRCY#Ndwpu}@9|}qo(-!q2qG*g@)mTg~ErD^Hoy67MY@C@;E3H%z z)Pr~t6#oOM-o1)PFAWw9i-Ce(yeT~hJ^5xg+i0=)l6~{u{NC5RH@hEGDIEd5yZyA* zi6Hb&1}ALvUS@NXaf4fxY{bii zFs{0`NvM|!pio7gUMl3T7pCy#!t_ONXQ@ysUAk7plZES7&lL;BDNnCjHevG&0(r?0 zo|>L4P*JY9Tt<`M#Ip?{ItJV;UyL(Otp*WFnu_bG`d58eU#KJI2^^B39^bOLw-N5AHla|qS|4gjq?{ym8Xc|442$0pED>Ko}}(A zQsLzaJAQoZ&El|yUs`hbT69Ist diff --git a/web_server/blueprints/__pycache__/app.cpython-310.pyc b/web_server/blueprints/__pycache__/app.cpython-310.pyc deleted file mode 100644 index 5f5b09511e0aa6b4b5691b79fc47a8517cc013a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmYjP!EO^V5VgJ8Bt$Ck3BKl%B5^|qA(jItgcMb3BTFlHJxP|@YisPKwAXN?{{X%5 zOMB(SFZ9HCTSP~iu}7Xa?|E#0bhKb(w`VuIiZk{*Cy%Y54`B9qUCpQyQeq#r|nVRXEEoXlS#g<}thR_+nI)MvTCm5c*vpocCyEGI! zggbuRf~1{fYYrc+M7LUOeT00p1;y`2YX_ diff --git a/web_server/blueprints/__pycache__/authentication.cpython-310.pyc b/web_server/blueprints/__pycache__/authentication.cpython-310.pyc deleted file mode 100644 index cca19bf245db16a300853e58840e93ffc3810848..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2594 zcmbVOTW{1x6!zF&+j~i}n+ungf?GgkQM#$%tx%wZP>>)XHuPexv~oO?T_?V5XU1Gs z=AlYo`45{%-un~!E9SLNmHG?%LeH6HA*n#B@Mg{&pE*7=bLKnWB%hnB8Sq^0y&RmH zH;g~=ezr~jKeqmQ7FXIoYVd= z6hpNX4Oz5z)ClgiZam0}(e0e4s(LRU#2Kn>qP$z747WqUK%Y-=ppR3-OjOxnA%|mk zP3Uix_5H?{vL8O^Zh^0xGC9nth;Uc4rwR(Tb!g&m5YpH;UKph@AqNH@mBy~QYrP=Q z+t8cPSD?3`cc8bW3*MEoGVu2BQHSl{w5`nMlFxbGK&aZ&UC$MfTz zjYk_kOT#$vzxA(Q8Q=fdNWMRfg>z?N%BJC#H+1MQ;Vh)jeHrettTR6Tc;@tqHy&;IcQ>~lOgHCWn9Z~5&w#i(-N&k*6)8YBN%E(VhE+cn z4?`{ywv4X&+i~9hP-=eo?%v~#u7BbBs(<9KeT5T1)%f(*Fcx|NKFyi%vt0Va@Coxn z|7M(b#x(?PN27UMpQ5)jlxgycC>v@iZ7=aU#8Hb+!X&0xM0wU1#daD?<;^yvY#0eu zMIVatX1i0>nRbcKVUSh?IfW2Wo@G#;x_a3&78Ov>-VTGrg=IpJsoMbEKJ zf_jvvFlQep;x1UYgAtoil8eIuxdrBSl`o^qF%&0IoJ8>n2xZc3LA@6nb z9r-lm%zw!9UD#qT$~o(8&uC2aFx@PZaTMbAJEP~ynPwe#DXxKVOpkcj;OAJ_Y+}B~ z=9n|hvzjnEZH~D}?AM;zAfDYY`FRL2cGmQXMxeiaFll%B6DF_9a<7q|yFWlh%03bjrerMYj48z1mG zB^#4D^am~h*12lP`Q3#{6L|(1O>D^)b@owz6IU*l@ZL4#5_N$|Jk2E4&GFrjtN-`a z{+YWO92j05x@0sd9cBVK&SSdSW&*ZoY812MxGd&yEbjo${@FnnQFY^X;d{%?N2&%YbxbFr`!+R>u>3Q_p*FY7QK+GU`6n?ffPikadOV9R5!?FRM z_ygEogwNpqgE)C1kKhgl3|ywh9hRlkcO2XjrnD&B5qPF;b5m7x9^1CwI{y+p-xd0y z1)s$My=rGV+fQH+m@dz15WWh^X8VMy>?EPs<0g9J^wX%A$wTS$;5BFg=kASJG3W@O zA|A`ICY=zjv$N)ikF?!mc5y3na30MiU620l%8rG;5@JzDB$YCfNQ3 DQCp5z diff --git a/web_server/blueprints/__pycache__/authentication.cpython-311.pyc b/web_server/blueprints/__pycache__/authentication.cpython-311.pyc deleted file mode 100644 index 3b2c39f68d847b3c3af027a0be1507352843e561..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 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 Ly*y#gn%4a<3cX2I diff --git a/web_server/blueprints/__pycache__/authentication.cpython-312.pyc b/web_server/blueprints/__pycache__/authentication.cpython-312.pyc deleted file mode 100644 index cffbdd43452d62d591d6deeacc2c8e005443a87c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4609 zcmcgwUu+Y}8J}JMx7SIG^AD21a^NJU!9ak6LTJjL5CSBjIM+M5NbbfviS2m3x!LuR zSmp#0(gktV5vf&DsZ#R@;vV|QE4rtO7rPF!wc-@o-b>$ta!>cv`PLab3CT6$p`&OgFg6Aa68J;xs0-Pjp(+w7V*iqj5=#8~#`v$EG${Qn)*u zm`rD;uc|~bTsPIpL>h`g&Tw9lbZK1DFfG@mpdkuF(~)GuDrNL|)^SWT`x=(Pfic5+ zYcxDYu?_|6aaGo0uqu{Zv|ypXwFrGKAbs5{sOtB7D2I}O*pis1o^a$LMOe2q)7PZ^ z{knS`#X8@w-xkYLta*YrI^~zX1U$Y?bfPogVli@{ASN_dK+6=uDY%qPkDqg$%LKl3Ww<4 zb}(cuXFJ0o{Q#@g53-W%Vsl`580;Kk?X`S^odBzq-8uBFhs_|2g2G7lT6o~*z~wRV zhWGRo_z ztfNOvXB0}3sg!z`x}ir*XtyMy13_ZBM;uS6!JS<5+lx0p83>Er{XOEQzu)Th)$Oiib$5STiFXK*Y- zmBTrKspHf%Htd)Xm1u@tnx3ZeLg4Bco|vl8F{3aL0m>u}sBVa*RBfX{0@pX_B5=1z zD?IkW1Fi;Xrw@ad#|?WdLo_N$E;%zDtxQ^gB3q9JI#4}|KV7?W?#>vN6fvw$=yxT8 z#al#8(goa!X(vw}KYdiEjVDgriKztN8E4|C-2vC)w4R7bu+-4>tYNQsn1J5H7}^X~ znEU7lPt)VR`&Y^iPsy>r;Mo7#A-?suEL@nsQ1S-~{=l5G+|an-o_8*2pme2LSXkD{# zO_#Zq%Qs%0{qEeV1-bUTZRuF}a{fyS>AFzvAAB)IA+0yKl^fx|pM7OQny4M2Den=> zLc=%LA6+jA9R;DIBpfaXhx38+uZ6y{cW>Ssfac*x!zDp12x3X-DhOTq?u)O5OJ#4< z;@*FFKiU@1|62I;;LQS|rbh2B*sa(PP5wt};5+1c@fXW!z5r~0zz zRNi`Ojcx$S+K-usKL#%>!5IRPU;7umLmwChT%)AFos{ep2J9Bg>u_+)#HjY3C1*)` zSZyt@wp(-7Bn^4DCMwq(#kLv-)NoY`G$7DE-eE-zH9RYA8yxUVI;aF$el9qmV*E^R zVYYHM*#g>~7tu|YCS zwKxn0z>|gtbRmjo5}K|VE|@a?JekBADA2k}kZu6l%-NG(T0Ta9+R=4(Z+v|I=h=NT zq3_J#l%CV`lmNNTUzX2be(?)R&n<)8%HZhBneVc|;EnI>sG)6JZXH?{u9t4M@POMd~%&yqo($Xe--{Llv=wB zt=&(Xi>=4!hUiopJKnS(TDnneKmNp39eY_gNLhMusOay^3!Om8eNW|O&&j;?BsoIe zMnBl7AJvS$iIZU~O-{Z|3mZ8(x&9$dtE;JYD|P5+CLOlROftvr63giw;71Ibc?N@4 z^VpE16kCflo*{E?m3_8X=0`rJkk9B(gQIvKQ8(CxuZABCKOBAI@&9pfaj@8UxabMw ztpT(1NU+tgO{64kioiH*mOmrf*JcJ8<9emUDj9@t|XFcIouf&ZT4bJBnQIJN^)Ndd-6PldDi#y-xpE z;xbV)OM$1&O9udT;vL_~odQ(vDwI}lRZ+7=Zf}{Zf5-D&Cjc7YvG1LgzM9kiFM+D4 AEdT%j diff --git a/web_server/blueprints/__pycache__/main.cpython-310.pyc b/web_server/blueprints/__pycache__/main.cpython-310.pyc deleted file mode 100644 index a8a124751c8190423ec887f9468cffa95579b0c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmYjP!EO^V5VgJ8Y=~4qe1WgIq)5G02q6LzrwS?J&|qoht|!S-du@%ql=d2q@DFh0 zm-fnuU+9VP7SxX9u}7Xa@6Fi$=xEN!o_+kjd&?R7or8x~Q1FUYd``|V!!2`s!=2a& z&OjIe#X)Q)F!@oM;wLu~Q+{O!zL}conk}k7gklRZJVEFTV4c7Ps}l^5UfUi5wp|(u z9l|X?ZgT2F6BMjy#TmIo)CW!_#m%?5Bzxx_$e?#1{Z^(uovH5DqZ@BWxAI-mZ5O4M zwv8z##*F$0hzUWvNMN0$MvzU9Bs1A-O8*Q}cV;Z?JYj$IDR+<_8>Rb=_$P pbv;xWU0;NuM4$OHcU)pVVcb1u1wLO(0 z*n^6<_UNf1`DYr)LG~ng@)ikRa`NpqDHeR}d;8{n%+NU^iWTwU4X)u;&k=z-!qR9p@(`ZUf~@% zMz=Q&kao!{wn(+~D~nW(bU{Mofpj#4alkdCv-g7pV(CXZHF+G5=?(X+869(?BZkf) z(PvNush^8h$e)Yk!qua-{#<1+S2-zEeIymT^t%ES{)KJzfEFXITy*pIfK7pGt6-S diff --git a/web_server/blueprints/__pycache__/main.cpython-312.pyc b/web_server/blueprints/__pycache__/main.cpython-312.pyc deleted file mode 100644 index 0ad7799810f0a29da2881a1ae1a65deba60905b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmYLH&ubJh6iza;v%6Dkg?bRAkb{Q~=;~66BBcj^fF}{!(=srmGuiFb$z(_}t=m%t zK@SSv+J8azPw7S2+gwCEd8@3aJ^7OE;)A@rH+kRpy}Zoj>S~C!@O><+kdWEKJ-ftO-?z*SSv;--@%B@;YJnzrRj4yvZ5WNo;07o+q Kk=rhEl>Y!k*`Fo= diff --git a/web_server/blueprints/__pycache__/stripe.cpython-311.pyc b/web_server/blueprints/__pycache__/stripe.cpython-311.pyc deleted file mode 100644 index 6cda2eb6088a243d0f65e85331c4b6790c84a17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2457 zcmbVN-%k@s9G}_k(%+!<HqMXJ@dCeBJVYbet zgs8wF!YMqdTjLN~hiN-$^ zQ*nJngL|I__kkKbAJyR9r@^Ce<0w%7idhw~nGKYr6+%UWXxWrx5Yzc}Do3(ZO&g}2 zk{daq!z7_+(&|ip)U4ADs%D9q)RQ2h8)8rRs+t^54JUi^xny^4;H;J#8o81fnVX!C zN2j9d$l&zV0UEt_UA`DeclFN2jc{^eu_r$nnMx+RuU$>0i~$-SxUNOCuAmz_y?~N91HCX9RVk>uM%#+OCX^PXw@O*N8EfQFOT) zYna%f^U&Y?4delGA_K-sOF&&%Em6&PfpPC^3RbvTtni9W5gxHwonqf`tU<-CL$}%z zO82xNqgp8lokp~E2^;PT2ST^-8l1UaJr^Uxd+@HzO+$4q;oEq8cU-^==q5jn7O>Iq zfgDOyPu+0Vo&b4vjhYUk#fhR2#k9#1Rm^5cu1rLhx6#49y!C3)nQlcJdBqG2aHddZ zGaWZ_Qrb|Byy?+%ab1S&8!Yldn#>a#5KMbc6}5~)%uljXUL$Ekv~nRD`7F^*S4vG2 zQHAo-ON{1>GR z*c!V)^rVr=#>V2hs;ICPk#Z>`7U~j-l9MH7Z>*at{%Imn|KO!Fp>S+)yt_Np&6}TEo{1Ho!TfTe)6-xv zyL)tYqb#G6twCsf;cNP#v*-&v_l2JMLfei0?NhCVrcxbh?%(#GED8K!UkNe73r+PU z5Ayl9KW{G`MMuJ~k^6}2FGg1EEB1G9n~>*d32{Q>9(m#Lu1NPB_Z=&a7Y)AE@V)u_ z^DExH-#cg}0YqSY>p-3(1$)uov+3^La`zV9y_>dP{TP^frz4DhaSgQazkN2)%s*|y zFn!uA09|b8+;uLf8m?)MEOx-syDdW2La&7kD9JsuSHb>l)-&k_Pt)t=|)C_i2V;Y10X?FhB@YgX_M$IL~IronJ2WBEgq^WQHTLrbW^ajVR{nwb%ty|ZDFkS6)UXs zX(uc;GoB$J%jl)YcYmztX?gBxf97fbd1@o}Jb3O|@Z7Jdt>C3%@Y0s&a?x{n`HPp% zLl5nb>YpqW`^JiWlbg=SmNQaxMmD*~8&HH6ot>3ZuE{LRYB{rhm_TN$mm-3Px;E+% zHEwj#TT#<7XK1MarcC-LL_;u?J+eZ@;>Dn%9|8hyxQ{(NzvXT#y4yBwZDr9y=*qXNa|OqiCs6bRmYq9?Z!g!~ zt>3|}?@rt~v3a=d$;^}M%O|#Qe-ZbWI3MmSAt0}L#GS9Mv?9)Jv7dT8`FNPIpDE%q uC632a814w5OrU3P&9y7Bdc2S;%rb$FBJL=07`K-Y5XRnFvr=9zhu|OSh*{$R diff --git a/web_server/blueprints/__pycache__/stripe.cpython-312.pyc b/web_server/blueprints/__pycache__/stripe.cpython-312.pyc deleted file mode 100644 index 8dd2cb295bef3ea1cf4a16cae0e4589d1d269fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2220 zcmb_dO>7fK6rS1j`giSsLudpl7(!K6Bsh*qf~pdl(lkhI62SQ(R-~1^JBio!+Gcj0 z;E15KLMl~@N>8CurRE4qq;l+)b1$)ijC>FHY z$|!LgCe})bEu*W8@Vujc@QVB zTva}uEcEnc(q=3-zSvutn4HSx;#V%`^X4E<4_?(L_1x^x#fhH9*o92*SbDy@d%8Pb z9FO(%FSbV&jA(9MN(L#pV%h96kYQ-W0&!g$ON>j9cywfDimIVBOAUaBzVP(f`GZa? zzz59T-E0H3T?G}g4g>Zmvn<9NLxn0g2UT8mslty;a;u(o?;7P38%w}!u_XX*fb2d; zZm#RTHE6#jKnE~)8FK>Q$PzRIj^z#L*g;?h|E*QHY0AbWcoQZX>jGQ=*ZFC%044t@ z@ghBqR28YjrKGS*j!;k)Bs085FEsJ$)04AtRUdi5l9D(gSZ2g~t(+>Dnpq*DQBE5Q zMcrf-7Yb+|VM!pKvL@?A6_Ep_R7FPxQ?@aX%}NOw#Gls+NY*H=4C1ov4q~Kg7%8S) zEXYcc(haeQ6g^SNYcxOtQJ781hgs2y*8!V&5)HK7HVuex=(>U$>DWx=DJ`*^xdrW5 zvSA0~h{xdyLOtX!YOryo>;`b=6ag z^j0Iij{|)huD-us`heK>C*Wv!Z}4{NTkn&W@ZH!q^LK)O*9EG5WxPu>_%c2i0FMH` z!881$18sv*{*eTk92Mxi*b;4|-DQ|5vuqH4cxe2!7Gk8fTIe|yR{p03YEnLHUB@)^ zo{`<9dQ++Hwt~|V|J`P^`NGWzj+8y%NX>PfbFSkAkoZyJZ&XFrRN4>p#*<7U4GI%bAzZ?5{tR{9;#g3ZTSrt3ir+%J!FjMO~ zSM56YOMbKKvrX~y<@cZa_TBUR6#60baG};eR_!0F^-om$Cm#DIH@L|i8VfA?q7IK= z1D^qJf!|IA3V!3(0`$-5z(5PejV=Zq_tP0u&r1+9uLl5k)5ZE2yGpE7tUnBfF#UqS zp?l{y1E)4zrz}e;NQBvZ%E(#n*u|V#CGGOrcY-VzQaX}l;W&O-=)0|T32;28-1F1Fpxta>*^ zY1#L5|IKChtqDLdN}*=>hjS|IIzuyVgC*fxbt-;)lUL0VA~wOKXHGU n*__$tcsK=_QE%N6>;8t--NUQp)j4K#dYgl=li5Tq$;$R0rw0st diff --git a/web_server/blueprints/__pycache__/utils.cpython-310.pyc b/web_server/blueprints/__pycache__/utils.cpython-310.pyc deleted file mode 100644 index 7d1d51668e0e00b81bf170e8ca1e58e0b4082aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1293 zcmb_by-yTD6rY*hy;}}A6*ch#bqkuaps_QAs8AYWLMYs9a#?rgj^*~_d^77Q!3q*- z@Ndw>hJR^VD{DF{-AF}J}4(y`9S?&9$Au!d7dC=C0?C70~G zFrx2WI{A`eT(M!pMk}b&QuP98p^f#1%0NInpHwzTWtmsU4Ce99iQn zF?pev$DeGssE0!(`+3!;@Klc`(d7#qZr~>4D9#2^L0Y7Vo!moV*dg2JU)X>O7YE@! z|IGI|mg?=kOr?xc6KRuziRwWFH72X0$+p78D432arDSC4=$(qDc|>_d=QPU@`AcY1 zXoBepPW{w{-a)Jz23;eJC%N%=0x6EfK88PJdn{*r{0IN)lG(5U`bSu~^(*z!^jZ#b zm_<&Dvm4q7vK%yM0&e2a$=Gz&jJ@w2$VzgO?~ z>RvY6N?>%}`m*?rNyyLmk__WiIDQL+yMz-?15%BfC%Fu_09&{X*veCLq(A*Dy6d;2j1=6L!qZW@Dua9>lu=rWkE=rIh!&%?5=!}D zd6!1^vUDrT!+puHK!7;O@hyP6MAJk;$n}QIDJMG+{a%s*(YWt)&by1s=RT;exz#{B!>{B8uX?VALvcnWXCDYxvZ=SnhDV&KxzW+#SJ}L9 zOKdJI=w(+5_MQx{!|^(vLgmXElp`aK7fRtQ231j!epxH0s{KF>Rc=NdL0Bvbp7+an z3|F3qC^1QO31E#JWgp*M*m`<f>b3&EKV*`i=4Nin~S@2=+osl3D|&RCyk;eWge@C^kj!JLc- zR9bsU+sP^+8tZ#HIMta%2J$tmzBihw*PP@WG01IWmH1?pen-E;)Xdq)hG>ByG_uO# zhVD*NiMz7FCp5f_lSjed3E{g_ex1$#ZDej;&LHs-kM8 zFZQ3uE`!eFL*qf{xq+G(`m+^Y1PTlF`x^PBt$p*gjftbKi{H*{&;0n}4}-OyiT$35 z1Hi7ygRaS1`{ZF~*M`0`U+e7Kx(0wxrZ47z#Dm#2WDiWT7u{kbe#lNjL%spml3*lO z0XH0v0pPdo){U{x7S8*Q_W1U*28$Ti(U3{b_(%f0Gjv~S9zr`K8;3Y|C(l9 zxc3UcDa~HLQ~ar|x7ODCU&tn(L9b0LYmP-e2L{*~k|E$tHQV17*@eJWOAj^KN%zH9 zc}t;M_H-BqO19uWyc=V}#{Ohy;wxtM{mghN%Rc}CLBJ3I diff --git a/web_server/blueprints/__pycache__/utils.cpython-312.pyc b/web_server/blueprints/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 6ed7cf5e313b2ac0dba92a66e6df1c2972234847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1765 zcmb_c&2Jk;6rb4-d-LIhHWUJF=^_l38;B?+O@%5)L5SRBQNmm4G?clQXLO2S+$J9JXh1?*qM=sOLcOGiM#%`xl1Xt+3o>E0 zlm%OFk&@*ZfCHWhIJlN6WdFcm1v9ZY^L)-+nPeM0s8nN~WI6k=!Gug`Ey)Tdgdaz{ zG%;7Xvm)GH5=t3>kR|Cf0d5mXK`B{Ib4`DM_NYhpdjBP^R8qn9N}g!-ahx?$(B>1X zAsCOGkQGdxg{X;MW0GgkGH@y}9WV5wUDClVAI`kixG zu3UM2>NN?ImoJyyn6vWDputwSA4ySeNIwvhD{IL}5Z7wVtN2j`!}HS+6;l$g05r*A z?&+6ZqNm&!TPM@dA1{MAssI5xN7sbA(^mOKVWb^%u?79W1cNz z`zEuy2eADJ$ByelyWMWYE@JI2z}MLT_?kkKyZ-@CYH~9#&D23+2b6eJTB*IP2%e6* z`a3NpMtZyjqLH??L42}7zolQ{(e(MmglwUEG%+Ifu`Fa%XL$~Sa4ZSpn9?CdvlJ99r={Bh#@iJ#9E55{Kphi85r9lN!-Kbqfu@9t=R z-^#0Ab1cQK#?OJ`=P?*wiudhqLdYm!Q#RvZrjPs8N;EE8e z1P;h=ZX@6eGhY}=%xd6>`aiBp_YSGYa-iCXTp7oK-~+f0Uo%BO6_1amu@qAuTGzwa qYXq#w@v*~aNg$h#bV})ca_tv#?H)P%z|iQc53DR5@07%Q6rR~1d!0Jjq^Ya?5Opaa)gU5=0EH4&LJ5!*6c8aru`I3DyA#;pc-`4G zP9g`aDhDG4sZk2s4t^bRt(4P@}!5V;4R z-?E&6=TKVsn@wl+L#sCgJ_naz+CT(lv4OxpZtxpImNzgFmc$@nkuwCa#td--W#ixz zgPCM-u(#w&Q<|gYHJi9GN}Mt+&gwV_gfR{u58uI`AR5R48MLL)Z!1VASn|dv__Ezj zv?urmz(xEW4`|=C4LR(Ec|>Ohj>1_*YAo2uK=9|e*|nHfDvcWXbll}E+Z9Th^QkK= zS!U6VYkAw7#toAewPoT;s=8ub^vE1a` z_;}_O1AqLG|f|)`3cNOhd{MidWxdZUS{vpDbXC_#lWUe*0rG!@)K(k zi+>daU@xED{PH{J_DWN}(2_6Ih5h04x8JA>Eoq>g8U(1j+I^|U@Xg_GMsAJNV{JKA z@200AGy*(>#{<3&N&_VjfDD@7wvLq{uptzM2*Z0chn_)B2sA>^B02;mVUNIJtKw+E zFj|1Pb^HaqKXZp#1y|4tzkn*3o`JBmKnGy}9IfSL({U4Tt>~o00CL3=HH%J~^O42G zX0!+ZJ>~nWjMr;tj-d2*@vN*K_QxP5nLO7@p1T|T9_-5l z9fT99Be9?CyYci_)0@-vNPhsW!-FS`HbeRP;0XG@>rKq>$P@f;A}A5uS;ijjuYuC| zpQ!sdaXwC>Ua;Uw_rQMssxsb*bvIWt6?QE~%>5%38r+p?%;>+3s#^(z_LuokGtu z@f?U<l3)V$tCiJI3t!f6aA Po)rHu+rN)l@Q(Tqa$37B diff --git a/web_server/database/app.db b/web_server/database/app.db deleted file mode 100644 index 1e82968d6811ad99e4a97362b1205fdc4726d5f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 zcmeI((NEJr90%~0;U)wfQz_d+pu*cK7++mNmed9Anp{;!C}(tGDY!Y*Wrc z*B_FeSjnYYjC!O>p&VJvfy#p)PP$xFs zr#7{^^hgeY%McT9%yiPX$R0JR7;x7(>Kc3WmN?nL-7i>OUvE`4V^vlB$&h{K=Ogi? z<9gF5kk@X?<8G#f+F-t_t*xmi5;kql+4+=B-m}8xgB*0BvK`N^BYNsrAD3maeyk@k zqmX%H&Xd!8K1OmgO;*w*%?CZ8HpyneIClCyOLRY^mXnx8el%jlp>K-G<&hUgZsd;{ z*%M2{=^fHS`X|$|d*QQ77V_NU5V_emj!lPbBroA})4yP3x8FCZVaynKwn8Es~C`y}hC5 zsPpfXPafx&K{%W>f3m%!7iPo8o1Ccd0VIdp-7yQ%@ zWa8_(-l%HNw7b^3oVU9vPZjZr@-Y5XX~c(Ce82_)2tWV=5P$##AOHafKmY;|fIwLV z>hZ*q=l{9ppR&#p^MU{bAOHafKmY;|fB*y_009V;Utpo4sS)GRR^_I&IajMZT8QuA z_y6+eA2Wmi1Rwwb2tWV=5P$##AOHaf;Q1eG00Izz00bZa0SG_<0uX=z1Rzj;0X+Yg zKgXCM1Rwwb2tWV=5P$##AOHafKp^w~|0*;f009U<00Izz00bZa0SG_<0uU&tz(3@2 BS+)QG diff --git a/web_server/database/database.py b/web_server/database/database.py deleted file mode 100644 index 034a6ff..0000000 --- a/web_server/database/database.py +++ /dev/null @@ -1,22 +0,0 @@ -import sqlite3 -import os - -class Database: - def __init__(self) -> None: - self._db = os.path.join(os.path.abspath(os.path.dirname(__file__)), "app.db") - - def create_connection(self) -> sqlite3.Cursor: - conn = sqlite3.connect(self._db) - conn.row_factory = sqlite3.Row - self._conn = conn - cursor = conn.cursor() - return cursor - - def commit_data(self): - try: - self._conn.commit() - except Exception as e: - print(e) - - def close_connection(self) -> None: - self._conn.close() \ No newline at end of file diff --git a/web_server/database/requirements.txt b/web_server/database/requirements.txt deleted file mode 100644 index 8ab6294..0000000 --- a/web_server/database/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -flask \ No newline at end of file diff --git a/web_server/database/schema.sql b/web_server/database/schema.sql deleted file mode 100644 index 8f8d7cd..0000000 --- a/web_server/database/schema.sql +++ /dev/null @@ -1,36 +0,0 @@ -DROP TABLE IF EXISTS users; -CREATE TABLE users -( - username VARCHAR(50) PRIMARY KEY NOT NULL, - password VARCHAR(256) NOT NULL, - email VARCHAR(64) NOT NULL, - num_followers INTEGER NOT NULL, - isPartenered BOOLEAN NOT NULL DEFAULT 0, - bio TEXT -); - -SELECT * FROM users; - - -DROP TABLE IF EXISTS streams; -CREATE TABLE streams -( - stream_id INTEGER PRIMARY KEY AUTOINCREMENT, - title TEXT NOT NULL, - start_time DATETIME NOT NULL, - num_viewers INT NOT NULL DEFAULT 0, - isLive BOOLEAN NOT NULL DEFAULT 0, - vod_id INT, - streamer_id VARCHAR NOT NULL, - FOREIGN KEY (streamer_id) REFERENCES users(username) ON DELETE CASCADE -); - -DROP TABLE IF EXISTS follows; -CREATE TABLE follows -( - user_id INT NOT NULL, - following_id INT NOT NULL, - PRIMARY KEY (user_id, following_id), - FOREIGN KEY (user_id) REFERENCES users(username) ON DELETE CASCADE, - FOREIGN KEY (following_id) REFERENCES users(username) ON DELETE CASCADE -); \ No newline at end of file diff --git a/web_server/forms.py b/web_server/forms.py deleted file mode 100644 index f339bd7..0000000 --- a/web_server/forms.py +++ /dev/null @@ -1,15 +0,0 @@ -from flask_wtf import FlaskForm -from wtforms import SubmitField, StringField, EmailField, PasswordField -from wtforms.validators import InputRequired, EqualTo - -class SignupForm(FlaskForm): - username = StringField("Username:", validators=[InputRequired()]) - email = EmailField("Email:", validators=[InputRequired()]) - password = PasswordField("Password:", validators=[InputRequired()]) - password2 = PasswordField("Confirm Password:", validators=[InputRequired(), EqualTo("password")]) - submit = SubmitField("Submit") - -class LoginForm(FlaskForm): - username = StringField("Username:", validators=[InputRequired()]) - password = PasswordField("Password:", validators=[InputRequired()]) - submit = SubmitField("Submit") \ No newline at end of file diff --git a/frontend/eslint.config.js b/web_server/frontend/eslint.config.js similarity index 100% rename from frontend/eslint.config.js rename to web_server/frontend/eslint.config.js diff --git a/frontend/index.html b/web_server/frontend/index.html similarity index 100% rename from frontend/index.html rename to web_server/frontend/index.html diff --git a/frontend/package-lock.json b/web_server/frontend/package-lock.json similarity index 100% rename from frontend/package-lock.json rename to web_server/frontend/package-lock.json diff --git a/frontend/package.json b/web_server/frontend/package.json similarity index 95% rename from frontend/package.json rename to web_server/frontend/package.json index 336f3c7..e3bbe4b 100644 --- a/frontend/package.json +++ b/web_server/frontend/package.json @@ -9,6 +9,7 @@ "lint": "eslint .", "preview": "vite preview" }, + "proxy": "http://localhost:5000", "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/frontend/postcss.config.js b/web_server/frontend/postcss.config.js similarity index 100% rename from frontend/postcss.config.js rename to web_server/frontend/postcss.config.js diff --git a/frontend/src/App.tsx b/web_server/frontend/src/App.tsx similarity index 100% rename from frontend/src/App.tsx rename to web_server/frontend/src/App.tsx diff --git a/web_server/frontend/src/assets/images/dance_game.png b/web_server/frontend/src/assets/images/dance_game.png new file mode 100644 index 0000000000000000000000000000000000000000..cd7aff79356e9903c26f83c78856853a941f62e7 GIT binary patch literal 295434 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