From 90590b0bea9b893028b8148f321e0a802004f09c Mon Sep 17 00:00:00 2001 From: Peichun Hua Date: Wed, 9 Sep 2026 13:12:47 -0400 Subject: [PATCH 01/10] feat(4shared): add 4shared mirror --- sites/4shared/.requires-images | 0 sites/4shared/ASSET_SOURCES.md | 21 + sites/4shared/_health.py | 3 + sites/4shared/app.py | 674 ++++++++++++++++++ sites/4shared/requirements.txt | 6 + sites/4shared/seed_data.py | 354 +++++++++ sites/4shared/static/css/.gitkeep | 0 sites/4shared/static/css/main.css | 334 +++++++++ sites/4shared/static/icons/.gitkeep | 0 sites/4shared/static/icons/mark.svg | 1 + sites/4shared/static/js/.gitkeep | 0 sites/4shared/static/js/main.js | 1 + sites/4shared/tasks.jsonl | 20 + sites/4shared/templates/.gitkeep | 0 sites/4shared/templates/404.html | 1 + sites/4shared/templates/_account_nav.html | 12 + sites/4shared/templates/_file_card.html | 10 + sites/4shared/templates/about.html | 1 + sites/4shared/templates/account.html | 1 + sites/4shared/templates/account_edit.html | 1 + sites/4shared/templates/activity.html | 1 + sites/4shared/templates/base.html | 53 ++ sites/4shared/templates/category.html | 1 + sites/4shared/templates/download_ready.html | 1 + sites/4shared/templates/favorites.html | 1 + sites/4shared/templates/file_detail.html | 23 + sites/4shared/templates/help.html | 1 + sites/4shared/templates/index.html | 26 + sites/4shared/templates/login.html | 1 + sites/4shared/templates/my_files.html | 1 + sites/4shared/templates/premium.html | 17 + sites/4shared/templates/premium_checkout.html | 1 + .../4shared/templates/premium_confirmed.html | 1 + sites/4shared/templates/preview.html | 1 + sites/4shared/templates/register.html | 1 + sites/4shared/templates/search.html | 30 + sites/4shared/templates/share.html | 1 + sites/4shared/templates/shared.html | 1 + sites/4shared/templates/trash.html | 1 + sites/4shared/templates/upload.html | 1 + 40 files changed, 1604 insertions(+) create mode 100644 sites/4shared/.requires-images create mode 100644 sites/4shared/ASSET_SOURCES.md create mode 100644 sites/4shared/_health.py create mode 100644 sites/4shared/app.py create mode 100644 sites/4shared/requirements.txt create mode 100644 sites/4shared/seed_data.py create mode 100644 sites/4shared/static/css/.gitkeep create mode 100644 sites/4shared/static/css/main.css create mode 100644 sites/4shared/static/icons/.gitkeep create mode 100644 sites/4shared/static/icons/mark.svg create mode 100644 sites/4shared/static/js/.gitkeep create mode 100644 sites/4shared/static/js/main.js create mode 100644 sites/4shared/tasks.jsonl create mode 100644 sites/4shared/templates/.gitkeep create mode 100644 sites/4shared/templates/404.html create mode 100644 sites/4shared/templates/_account_nav.html create mode 100644 sites/4shared/templates/_file_card.html create mode 100644 sites/4shared/templates/about.html create mode 100644 sites/4shared/templates/account.html create mode 100644 sites/4shared/templates/account_edit.html create mode 100644 sites/4shared/templates/activity.html create mode 100644 sites/4shared/templates/base.html create mode 100644 sites/4shared/templates/category.html create mode 100644 sites/4shared/templates/download_ready.html create mode 100644 sites/4shared/templates/favorites.html create mode 100644 sites/4shared/templates/file_detail.html create mode 100644 sites/4shared/templates/help.html create mode 100644 sites/4shared/templates/index.html create mode 100644 sites/4shared/templates/login.html create mode 100644 sites/4shared/templates/my_files.html create mode 100644 sites/4shared/templates/premium.html create mode 100644 sites/4shared/templates/premium_checkout.html create mode 100644 sites/4shared/templates/premium_confirmed.html create mode 100644 sites/4shared/templates/preview.html create mode 100644 sites/4shared/templates/register.html create mode 100644 sites/4shared/templates/search.html create mode 100644 sites/4shared/templates/share.html create mode 100644 sites/4shared/templates/shared.html create mode 100644 sites/4shared/templates/trash.html create mode 100644 sites/4shared/templates/upload.html diff --git a/sites/4shared/.requires-images b/sites/4shared/.requires-images new file mode 100644 index 00000000..e69de29b diff --git a/sites/4shared/ASSET_SOURCES.md b/sites/4shared/ASSET_SOURCES.md new file mode 100644 index 00000000..020b8d53 --- /dev/null +++ b/sites/4shared/ASSET_SOURCES.md @@ -0,0 +1,21 @@ +# 4shared asset provenance + +The mirror uses three real photographic assets already present in WebHarbor's +pinned Hugging Face asset bundle. They were copied byte-for-byte from the +Google Search mirror so the contribution does not introduce generated or +placeholder thumbnails. + +| 4shared path | Existing WebHarbor source path | SHA-256 | +| --- | --- | --- | +| `static/images/london.jpg` | `sites/google_search/static/images/google_real/london.jpg` | `dd11fcb9d34fff87ce03e9008a68adadd0e182c7bfcb7c657fbd608d7b8ef65c` | +| `static/images/new-york.jpg` | `sites/google_search/static/images/google_real/new_york_city.jpg` | `2bb9a4689eb0e3ed5b5c0d654a4db3eb47304ebca2a82f65bd87e8d2898de24b` | +| `static/images/denali.jpg` | `sites/google_search/static/images/google_real/mount_denali_mckinley_elevation.jpg` | `6857da22b8620bd28791d05340eebb5236497b4a1b0bb65452d2a2754215ff5e` | + +The 4shared logo mark is a repository-native SVG approximation in +`static/icons/mark.svg`. It is tracked with the code rather than the external +asset bundle. + +Layout, spacing, color, and interaction references were taken from a local +September 2026 capture bundle supplied by the contributor. No browser-profile +state, account data, or third-party captured media from that bundle is shipped +with the mirror. diff --git a/sites/4shared/_health.py b/sites/4shared/_health.py new file mode 100644 index 00000000..f33f8ddc --- /dev/null +++ b/sites/4shared/_health.py @@ -0,0 +1,3 @@ +"""Per-site health probe (optional, called by control_server).""" +def health(): + return {"ok": True, "site": "4shared"} diff --git a/sites/4shared/app.py b/sites/4shared/app.py new file mode 100644 index 00000000..a4c7b70c --- /dev/null +++ b/sites/4shared/app.py @@ -0,0 +1,674 @@ +"""4shared mirror for the WebHarbor offline benchmark.""" + +from __future__ import annotations + +import hashlib +import os +import re +import secrets +from datetime import datetime +from pathlib import Path +from urllib.parse import urlparse + +from flask import Flask, abort, flash, redirect, render_template, request, url_for +from flask_login import LoginManager, UserMixin, current_user, login_required, login_user, logout_user +from flask_sqlalchemy import SQLAlchemy +from flask_wtf.csrf import CSRFProtect +from sqlalchemy import event +from sqlalchemy.engine import Engine + + +SITE_SLUG = "4shared" +SITE_NAME = "4shared" +SITE_PORT = 40023 +BENCHMARK_PASSWORD = "TestPass123!" +BASE_DIR = Path(__file__).resolve().parent +INSTANCE_DIR = BASE_DIR / "instance" +SEED_DIR = BASE_DIR / "instance_seed" +RUNTIME_DB_PATH = INSTANCE_DIR / "4shared.db" +SEED_DB_PATH = SEED_DIR / "4shared.db" +PASSWORD_NAMESPACE = "webharbor-4shared-v1" + +INSTANCE_DIR.mkdir(parents=True, exist_ok=True) +SEED_DIR.mkdir(parents=True, exist_ok=True) + +app = Flask(__name__, instance_path=str(INSTANCE_DIR)) +app.config.update( + SECRET_KEY="webharbor-4shared-deterministic-development-key", + SQLALCHEMY_DATABASE_URI=f"sqlite:///{RUNTIME_DB_PATH}", + SQLALCHEMY_TRACK_MODIFICATIONS=False, + MAX_CONTENT_LENGTH=4 * 1024 * 1024, +) +db = SQLAlchemy(app) +csrf = CSRFProtect(app) +login_manager = LoginManager(app) +login_manager.login_view = "login" +login_manager.login_message = "Log in to manage files and folders." + + +@event.listens_for(Engine, "connect") +def enable_sqlite_foreign_keys(dbapi_connection, _connection_record): + cursor = dbapi_connection.cursor() + cursor.execute("PRAGMA foreign_keys=ON") + cursor.close() + + +def stable_password_hash(password: str) -> str: + return hashlib.sha256(f"{PASSWORD_NAMESPACE}:{password}".encode()).hexdigest() + + +def slugify(value: str) -> str: + value = re.sub(r"[^a-z0-9]+", "-", value.lower()).strip("-") + return value or "file" + + +def safe_next(target: str | None, fallback: str) -> str: + if not target or "\\" in target: + return fallback + parsed = urlparse(target) + if parsed.scheme or parsed.netloc or not target.startswith("/") or target.startswith("//"): + return fallback + return target + + +def human_size(value: int) -> str: + size = float(value) + for unit in ("B", "KB", "MB", "GB"): + if size < 1024 or unit == "GB": + return f"{size:.1f} {unit}" if unit != "B" else f"{int(size)} B" + size /= 1024 + return f"{size:.1f} GB" + + +app.jinja_env.filters["filesize"] = human_size + + +class User(db.Model, UserMixin): + __tablename__ = "users" + id = db.Column(db.Integer, primary_key=True) + email = db.Column(db.String(160), unique=True, nullable=False, index=True) + display_name = db.Column(db.String(120), nullable=False) + password_hash = db.Column(db.String(64), nullable=False) + location = db.Column(db.String(120), default="") + bio = db.Column(db.Text, default="") + plan = db.Column(db.String(32), default="Free") + storage_limit_mb = db.Column(db.Integer, default=15360) + joined_at = db.Column(db.DateTime, nullable=False) + + def set_password(self, password: str) -> None: + self.password_hash = stable_password_hash(password) + + def check_password(self, password: str) -> bool: + return secrets.compare_digest(self.password_hash, stable_password_hash(password)) + + @property + def storage_used(self) -> int: + return sum(item.size_bytes for item in self.files if not item.deleted) + + +class Folder(db.Model): + __tablename__ = "folders" + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True) + name = db.Column(db.String(120), nullable=False) + parent_id = db.Column(db.Integer, db.ForeignKey("folders.id", ondelete="CASCADE")) + created_at = db.Column(db.DateTime, nullable=False) + user = db.relationship("User", backref=db.backref("folders", cascade="all, delete-orphan"), foreign_keys=[user_id]) + parent = db.relationship("Folder", remote_side=[id], backref="children") + __table_args__ = (db.UniqueConstraint("user_id", "parent_id", "name", name="uq_folder_parent_name"),) + + +class FileItem(db.Model): + __tablename__ = "files" + id = db.Column(db.Integer, primary_key=True) + owner_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), index=True) + folder_id = db.Column(db.Integer, db.ForeignKey("folders.id", ondelete="SET NULL"), index=True) + filename = db.Column(db.String(220), nullable=False) + slug = db.Column(db.String(260), unique=True, nullable=False, index=True) + category = db.Column(db.String(32), nullable=False, index=True) + extension = db.Column(db.String(12), nullable=False) + mime_type = db.Column(db.String(100), nullable=False) + size_bytes = db.Column(db.Integer, nullable=False) + description = db.Column(db.Text, default="") + tags = db.Column(db.String(400), default="") + license_name = db.Column(db.String(100), default="") + uploader_name = db.Column(db.String(120), nullable=False) + public = db.Column(db.Boolean, default=True, nullable=False, index=True) + featured = db.Column(db.Boolean, default=False, nullable=False) + deleted = db.Column(db.Boolean, default=False, nullable=False) + thumbnail = db.Column(db.String(240), default="") + preview_text = db.Column(db.Text, default="") + uploaded_at = db.Column(db.DateTime, nullable=False, index=True) + modified_at = db.Column(db.DateTime, nullable=False) + download_count = db.Column(db.Integer, default=0, nullable=False) + rating = db.Column(db.Float, default=4.5, nullable=False) + + owner = db.relationship("User", backref=db.backref("files", cascade="all, delete-orphan")) + folder = db.relationship("Folder", backref="files") + + @property + def stem(self) -> str: + return self.filename.rsplit(".", 1)[0] + + +class Favorite(db.Model): + __tablename__ = "favorites" + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False) + file_id = db.Column(db.Integer, db.ForeignKey("files.id", ondelete="CASCADE"), nullable=False) + created_at = db.Column(db.DateTime, nullable=False) + user = db.relationship("User", backref=db.backref("favorites", cascade="all, delete-orphan")) + file = db.relationship("FileItem", backref=db.backref("favorite_rows", cascade="all, delete-orphan")) + __table_args__ = (db.UniqueConstraint("user_id", "file_id", name="uq_favorite_user_file"),) + + +class SavedFile(db.Model): + __tablename__ = "saved_files" + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False) + file_id = db.Column(db.Integer, db.ForeignKey("files.id", ondelete="CASCADE"), nullable=False) + created_at = db.Column(db.DateTime, nullable=False) + user = db.relationship("User", backref=db.backref("saved_files", cascade="all, delete-orphan")) + file = db.relationship("FileItem") + __table_args__ = (db.UniqueConstraint("user_id", "file_id", name="uq_saved_user_file"),) + + +class DownloadLog(db.Model): + __tablename__ = "downloads" + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="SET NULL")) + file_id = db.Column(db.Integer, db.ForeignKey("files.id", ondelete="CASCADE"), nullable=False) + downloaded_at = db.Column(db.DateTime, nullable=False) + user = db.relationship("User", backref="downloads") + file = db.relationship("FileItem", backref="download_rows") + + +class SharedLink(db.Model): + __tablename__ = "shared_links" + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False) + file_id = db.Column(db.Integer, db.ForeignKey("files.id", ondelete="CASCADE"), nullable=False) + token = db.Column(db.String(48), unique=True, nullable=False, index=True) + permission = db.Column(db.String(24), default="view") + label = db.Column(db.String(120), default="") + created_at = db.Column(db.DateTime, nullable=False) + user = db.relationship("User", backref=db.backref("shared_links", cascade="all, delete-orphan")) + file = db.relationship("FileItem", backref="share_links") + + +class Comment(db.Model): + __tablename__ = "comments" + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False) + file_id = db.Column(db.Integer, db.ForeignKey("files.id", ondelete="CASCADE"), nullable=False) + body = db.Column(db.String(600), nullable=False) + created_at = db.Column(db.DateTime, nullable=False) + user = db.relationship("User", backref="comments") + file = db.relationship("FileItem", backref=db.backref("comments", order_by="Comment.created_at.desc()")) + + +class PlanOrder(db.Model): + __tablename__ = "plan_orders" + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False) + plan_name = db.Column(db.String(40), nullable=False) + billing_period = db.Column(db.String(24), nullable=False) + amount = db.Column(db.Float, nullable=False) + card_last4 = db.Column(db.String(4), nullable=False) + status = db.Column(db.String(24), default="Active", nullable=False) + created_at = db.Column(db.DateTime, nullable=False) + user = db.relationship("User", backref="plan_orders") + + +@login_manager.user_loader +def load_user(user_id: str): + return db.session.get(User, int(user_id)) + + +def public_files_query(): + return FileItem.query.filter_by(public=True, deleted=False) + + +STOP_WORDS = {"the", "a", "an", "in", "on", "at", "to", "for", "of", "and", "or", "is", "it", "by", "with"} + + +def scored_search(query: str, items: list[FileItem]) -> list[FileItem]: + tokens = [token for token in re.split(r"\W+", query.lower()) if len(token) > 1 and token not in STOP_WORDS] + if not tokens: + return items + ranked = [] + for item in items: + title = item.filename.lower() + blob = " ".join((item.filename, item.description, item.tags, item.category, item.extension, item.uploader_name)).lower() + score = sum(4 if token in title else 1 for token in tokens if token in blob) + if score: + ranked.append((item, score)) + ranked.sort(key=lambda row: (-row[1], -row[0].download_count, row[0].filename.lower())) + return [item for item, _score in ranked] + + +def owned_file_or_404(file_id: int) -> FileItem: + item = db.session.get(FileItem, file_id) + if not item or item.owner_id != current_user.id: + abort(404) + return item + + +@app.context_processor +def common_context(): + categories = ["Music", "Video", "Apps", "Images", "Books", "Documents", "Archives"] + favorite_ids = set() + if current_user.is_authenticated: + favorite_ids = {row.file_id for row in current_user.favorites} + return {"nav_categories": categories, "favorite_ids": favorite_ids, "site_port": SITE_PORT} + + +@app.route("/") +def index(): + featured = public_files_query().filter_by(featured=True).order_by(FileItem.id.asc()).limit(8).all() + popular = public_files_query().order_by(FileItem.download_count.desc(), FileItem.id.asc()).limit(8).all() + recent = public_files_query().order_by(FileItem.uploaded_at.desc(), FileItem.id.asc()).limit(8).all() + return render_template("index.html", featured=featured, popular=popular, recent=recent) + + +@app.route("/search") +def search(): + query = request.args.get("q", "").strip()[:120] + category_name = request.args.get("category", "All Files").strip()[:32] + sort = request.args.get("sort", "relevance") + items = public_files_query().all() + if category_name and category_name != "All Files": + items = [item for item in items if item.category.lower() == category_name.lower()] + items = scored_search(query, items) + if sort == "downloads": + items.sort(key=lambda item: (-item.download_count, item.filename.lower())) + elif sort == "newest": + items.sort(key=lambda item: (-item.uploaded_at.timestamp(), item.filename.lower())) + elif sort == "size": + items.sort(key=lambda item: (-item.size_bytes, item.filename.lower())) + return render_template("search.html", files=items, query=query, category=category_name, sort=sort) + + +@app.route("/category/") +def category(category: str): + display = category.replace("-", " ").title() + files = public_files_query().filter(db.func.lower(FileItem.category) == display.lower()).order_by(FileItem.download_count.desc()).all() + if not files: + abort(404) + return render_template("category.html", files=files, category=display) + + +@app.route("/file/") +def file_detail(slug: str): + item = FileItem.query.filter_by(slug=slug, deleted=False).first_or_404() + if not item.public and (not current_user.is_authenticated or item.owner_id != current_user.id): + abort(404) + related = public_files_query().filter(FileItem.category == item.category, FileItem.id != item.id).order_by(FileItem.download_count.desc()).limit(6).all() + return render_template("file_detail.html", file=item, related=related) + + +@app.route("/preview/") +def preview(file_id: int): + item = db.get_or_404(FileItem, file_id) + if item.deleted or (not item.public and (not current_user.is_authenticated or item.owner_id != current_user.id)): + abort(404) + return render_template("preview.html", file=item) + + +@app.post("/download/") +def download(file_id: int): + item = db.get_or_404(FileItem, file_id) + if item.deleted or (not item.public and (not current_user.is_authenticated or item.owner_id != current_user.id)): + abort(404) + item.download_count += 1 + db.session.add(DownloadLog(user_id=current_user.id if current_user.is_authenticated else None, file_id=item.id, downloaded_at=datetime.utcnow())) + db.session.commit() + return render_template("download_ready.html", file=item) + + +@app.route("/login", methods=["GET", "POST"]) +def login(): + if current_user.is_authenticated: + return redirect(url_for("account")) + if request.method == "POST": + email = request.form.get("email", "").strip().lower()[:160] + password = request.form.get("password", "") + user = User.query.filter_by(email=email).first() + if user and user.check_password(password): + login_user(user) + return redirect(safe_next(request.args.get("next"), url_for("account"))) + flash("The email or password is incorrect.", "error") + return render_template("login.html") + + +@app.route("/register", methods=["GET", "POST"]) +def register(): + if request.method == "POST": + display_name = request.form.get("display_name", "").strip()[:120] + email = request.form.get("email", "").strip().lower()[:160] + password = request.form.get("password", "") + if len(display_name) < 2 or "@" not in email or len(password) < 8: + flash("Enter a name, valid email, and password of at least 8 characters.", "error") + elif User.query.filter_by(email=email).first(): + flash("An account with that email already exists.", "error") + else: + user = User(email=email, display_name=display_name, joined_at=datetime.utcnow()) + user.set_password(password) + db.session.add(user) + db.session.commit() + login_user(user) + flash("Welcome to 4shared. Your account is ready.", "success") + return redirect(url_for("account")) + return render_template("register.html") + + +@app.get("/logout") +@login_required +def logout(): + logout_user() + return redirect(url_for("index")) + + +@app.get("/account") +@login_required +def account(): + recent_files = FileItem.query.filter_by(owner_id=current_user.id, deleted=False).order_by(FileItem.modified_at.desc()).limit(6).all() + recent_downloads = DownloadLog.query.filter_by(user_id=current_user.id).order_by(DownloadLog.downloaded_at.desc()).limit(6).all() + return render_template("account.html", recent_files=recent_files, recent_downloads=recent_downloads) + + +@app.route("/account/edit", methods=["GET", "POST"]) +@login_required +def account_edit(): + if request.method == "POST": + name = request.form.get("display_name", "").strip()[:120] + if len(name) < 2: + flash("Display name must have at least two characters.", "error") + else: + current_user.display_name = name + current_user.location = request.form.get("location", "").strip()[:120] + current_user.bio = request.form.get("bio", "").strip()[:500] + db.session.commit() + flash("Profile updated.", "success") + return redirect(url_for("account")) + return render_template("account_edit.html") + + +@app.get("/my-files") +@login_required +def my_files(): + folder_id = request.args.get("folder", type=int) + active_folder = None + if folder_id: + active_folder = Folder.query.filter_by(id=folder_id, user_id=current_user.id).first_or_404() + folders = Folder.query.filter_by(user_id=current_user.id, parent_id=folder_id).order_by(Folder.name).all() + files = FileItem.query.filter_by(owner_id=current_user.id, folder_id=folder_id, deleted=False).order_by(FileItem.filename).all() + all_folders = Folder.query.filter_by(user_id=current_user.id).order_by(Folder.name).all() + return render_template("my_files.html", folders=folders, files=files, active_folder=active_folder, all_folders=all_folders) + + +@app.post("/folder/new") +@login_required +def folder_new(): + name = request.form.get("name", "").strip()[:120] + parent_id = request.form.get("parent_id", type=int) + if parent_id and not Folder.query.filter_by(id=parent_id, user_id=current_user.id).first(): + abort(404) + if not name: + flash("Folder name is required.", "error") + elif Folder.query.filter_by(user_id=current_user.id, parent_id=parent_id, name=name).first(): + flash("A folder with that name already exists here.", "error") + else: + db.session.add(Folder(user_id=current_user.id, parent_id=parent_id, name=name, created_at=datetime.utcnow())) + db.session.commit() + flash(f"Folder ‘{name}’ created.", "success") + return redirect(url_for("my_files", folder=parent_id) if parent_id else url_for("my_files")) + + +@app.route("/upload", methods=["GET", "POST"]) +@login_required +def upload(): + folders = Folder.query.filter_by(user_id=current_user.id).order_by(Folder.name).all() + if request.method == "POST": + filename = request.form.get("filename", "").strip()[:220] + category_name = request.form.get("category", "Documents")[:32] + description = request.form.get("description", "").strip()[:1000] + folder_id = request.form.get("folder_id", type=int) + if folder_id and not Folder.query.filter_by(id=folder_id, user_id=current_user.id).first(): + abort(404) + if not filename or "." not in filename: + flash("Enter a filename with an extension, such as notes.pdf.", "error") + else: + extension = filename.rsplit(".", 1)[1].lower()[:12] + slug = f"{slugify(filename)}-{current_user.id}-{int(datetime.utcnow().timestamp())}" + item = FileItem( + owner_id=current_user.id, folder_id=folder_id, filename=filename, slug=slug, + category=category_name, extension=extension, mime_type="application/octet-stream", + size_bytes=max(1024, request.form.get("size_kb", type=int, default=128) * 1024), + description=description, tags="personal upload", license_name="Private", + uploader_name=current_user.display_name, public=request.form.get("public") == "on", + uploaded_at=datetime.utcnow(), modified_at=datetime.utcnow(), preview_text=description, + ) + db.session.add(item) + db.session.commit() + flash(f"{filename} uploaded.", "success") + return redirect(url_for("my_files", folder=folder_id) if folder_id else url_for("my_files")) + return render_template("upload.html", folders=folders) + + +@app.post("/file//rename") +@login_required +def rename_file(file_id: int): + item = owned_file_or_404(file_id) + filename = request.form.get("filename", "").strip()[:220] + if not filename or "." not in filename: + flash("Enter a complete filename.", "error") + else: + item.filename = filename + item.extension = filename.rsplit(".", 1)[1].lower()[:12] + item.modified_at = datetime.utcnow() + db.session.commit() + flash("File renamed.", "success") + return redirect(url_for("my_files", folder=item.folder_id) if item.folder_id else url_for("my_files")) + + +@app.post("/file//move") +@login_required +def move_file(file_id: int): + item = owned_file_or_404(file_id) + folder_id = request.form.get("folder_id", type=int) + if folder_id and not Folder.query.filter_by(id=folder_id, user_id=current_user.id).first(): + abort(404) + item.folder_id = folder_id + item.modified_at = datetime.utcnow() + db.session.commit() + flash("File moved.", "success") + return redirect(url_for("my_files", folder=folder_id) if folder_id else url_for("my_files")) + + +@app.post("/file//delete") +@login_required +def delete_file(file_id: int): + item = owned_file_or_404(file_id) + item.deleted = True + item.modified_at = datetime.utcnow() + db.session.commit() + flash("File moved to Trash.", "success") + return redirect(url_for("my_files")) + + +@app.get("/trash") +@login_required +def trash(): + files = FileItem.query.filter_by(owner_id=current_user.id, deleted=True).order_by(FileItem.modified_at.desc()).all() + return render_template("trash.html", files=files) + + +@app.post("/file//restore") +@login_required +def restore_file(file_id: int): + item = owned_file_or_404(file_id) + item.deleted = False + item.modified_at = datetime.utcnow() + db.session.commit() + flash("File restored.", "success") + return redirect(url_for("trash")) + + +@app.post("/file//favorite") +@login_required +def toggle_favorite(file_id: int): + item = db.get_or_404(FileItem, file_id) + if item.deleted: + abort(404) + row = Favorite.query.filter_by(user_id=current_user.id, file_id=item.id).first() + if row: + db.session.delete(row) + flash("Removed from favorites.", "success") + else: + db.session.add(Favorite(user_id=current_user.id, file_id=item.id, created_at=datetime.utcnow())) + flash("Added to favorites.", "success") + db.session.commit() + return redirect(safe_next(request.form.get("next"), url_for("file_detail", slug=item.slug))) + + +@app.get("/favorites") +@login_required +def favorites(): + rows = Favorite.query.filter_by(user_id=current_user.id).order_by(Favorite.created_at.desc()).all() + return render_template("favorites.html", files=[row.file for row in rows if not row.file.deleted]) + + +@app.post("/file//save") +@login_required +def save_file(file_id: int): + item = db.get_or_404(FileItem, file_id) + if not item.public or item.deleted: + abort(404) + if not SavedFile.query.filter_by(user_id=current_user.id, file_id=item.id).first(): + db.session.add(SavedFile(user_id=current_user.id, file_id=item.id, created_at=datetime.utcnow())) + db.session.commit() + flash("Saved to My 4shared.", "success") + return redirect(url_for("file_detail", slug=item.slug)) + + +@app.get("/saved") +@login_required +def saved(): + rows = SavedFile.query.filter_by(user_id=current_user.id).order_by(SavedFile.created_at.desc()).all() + return render_template("favorites.html", files=[row.file for row in rows], title="Saved to My 4shared") + + +@app.route("/file//share", methods=["GET", "POST"]) +@login_required +def share_file(file_id: int): + item = db.get_or_404(FileItem, file_id) + if not item.public and item.owner_id != current_user.id: + abort(404) + if request.method == "POST": + permission = request.form.get("permission", "view") + if permission not in {"view", "download"}: + permission = "view" + token = secrets.token_urlsafe(12) + link = SharedLink(user_id=current_user.id, file_id=item.id, token=token, permission=permission, + label=request.form.get("label", "").strip()[:120], created_at=datetime.utcnow()) + db.session.add(link) + db.session.commit() + flash("Share link created.", "success") + return redirect(url_for("share_file", file_id=item.id)) + links = SharedLink.query.filter_by(user_id=current_user.id, file_id=item.id).order_by(SharedLink.created_at.desc()).all() + return render_template("share.html", file=item, links=links) + + +@app.get("/shared/") +def shared(token: str): + link = SharedLink.query.filter_by(token=token).first_or_404() + if link.file.deleted: + abort(404) + return render_template("shared.html", link=link, file=link.file) + + +@app.post("/file//comment") +@login_required +def add_comment(file_id: int): + item = db.get_or_404(FileItem, file_id) + body = request.form.get("body", "").strip()[:600] + if len(body) < 2: + flash("Comment cannot be empty.", "error") + else: + db.session.add(Comment(user_id=current_user.id, file_id=item.id, body=body, created_at=datetime.utcnow())) + db.session.commit() + flash("Comment posted.", "success") + return redirect(url_for("file_detail", slug=item.slug)) + + +@app.get("/activity") +@login_required +def activity(): + downloads = DownloadLog.query.filter_by(user_id=current_user.id).order_by(DownloadLog.downloaded_at.desc()).all() + shares = SharedLink.query.filter_by(user_id=current_user.id).order_by(SharedLink.created_at.desc()).all() + return render_template("activity.html", downloads=downloads, shares=shares) + + +@app.get("/premium") +def premium(): + return render_template("premium.html") + + +@app.route("/premium/checkout", methods=["GET", "POST"]) +@login_required +def premium_checkout(): + periods = {"monthly": 9.95, "annual": 77.88} + period = request.values.get("period", "annual") + if period not in periods: + period = "annual" + if request.method == "POST": + card = re.sub(r"\D", "", request.form.get("card_number", "")) + holder = request.form.get("cardholder", "").strip() + if len(card) != 16 or len(holder) < 2: + flash("Enter the demo 16-digit card number and cardholder name.", "error") + else: + order = PlanOrder(user_id=current_user.id, plan_name="Premium", billing_period=period, + amount=periods[period], card_last4=card[-4:], created_at=datetime.utcnow()) + current_user.plan = "Premium" + current_user.storage_limit_mb = 102400 + db.session.add(order) + db.session.commit() + return render_template("premium_confirmed.html", order=order) + return render_template("premium_checkout.html", period=period, amount=periods[period]) + + +@app.get("/help") +def help_center(): + return render_template("help.html") + + +@app.get("/about") +def about(): + return render_template("about.html") + + +@app.get("/_health") +def health(): + return {"ok": True, "site": SITE_SLUG, "files": public_files_query().count()} + + +@app.errorhandler(404) +def not_found(_error): + return render_template("404.html"), 404 + + +def initialize_database() -> None: + with app.app_context(): + db.create_all() + from seed_data import seed_benchmark_users, seed_database + seed_database() + seed_benchmark_users() + + +initialize_database() + + +if __name__ == "__main__": + port = int(os.environ.get("PORT", SITE_PORT)) + app.run(host="0.0.0.0", port=port, debug=False) diff --git a/sites/4shared/requirements.txt b/sites/4shared/requirements.txt new file mode 100644 index 00000000..cde776e2 --- /dev/null +++ b/sites/4shared/requirements.txt @@ -0,0 +1,6 @@ +Flask==3.1.0 +Flask-SQLAlchemy==3.1.1 +Flask-Login==0.6.3 +Flask-WTF==1.2.2 +SQLAlchemy==2.0.36 +Werkzeug==3.1.3 diff --git a/sites/4shared/seed_data.py b/sites/4shared/seed_data.py new file mode 100644 index 00000000..69514ceb --- /dev/null +++ b/sites/4shared/seed_data.py @@ -0,0 +1,354 @@ +"""Deterministic seed data for the 4shared WebHarbor mirror.""" + +from __future__ import annotations + +import sys +from datetime import datetime, timedelta + + +def _app_module(): + module = sys.modules.get("app") + if module is not None: + return module + main = sys.modules.get("__main__") + if main is not None and hasattr(main, "db") and hasattr(main, "FileItem"): + return main + import app as module + return module + + +_app = _app_module() +BENCHMARK_PASSWORD = _app.BENCHMARK_PASSWORD +Comment = _app.Comment +DownloadLog = _app.DownloadLog +Favorite = _app.Favorite +FileItem = _app.FileItem +Folder = _app.Folder +PlanOrder = _app.PlanOrder +SavedFile = _app.SavedFile +SharedLink = _app.SharedLink +User = _app.User +db = _app.db +slugify = _app.slugify + +SEED_TIME = datetime(2026, 8, 20, 10, 0, 0) + +UPLOADERS = [ + "Open Culture Shelf", "Atlas Media Lab", "Commons Studio", "Learning Exchange", + "Field Notes Collective", "Open Source Desk", "Archive Lantern", "Community Library", +] + +CATALOG = { + "Music": { + "ext": "mp3", "mime": "audio/mpeg", "license": "Public domain recording", + "items": [ + ("Moonlight Sonata First Movement", "A measured solo-piano performance recorded in a quiet recital hall.", "piano beethoven classical nocturne", "Duration 5:42 · 320 kbps · recorded on a Steinway Model B."), + ("Clair de Lune Studio Performance", "An intimate interpretation of Debussy's atmospheric piano work.", "piano debussy impressionist classical", "Duration 4:51 · 256 kbps · remastered from a 2018 session."), + ("Morning Meadow Field Recording", "Dawn birds, light wind, and a distant creek captured in early spring.", "nature birds ambience field recording", "Duration 12:08 · stereo · recorded at 48 kHz."), + ("Nocturne in E Flat Practice Take", "A complete practice-room reading with natural room ambience.", "chopin piano nocturne practice", "Duration 4:33 · 192 kbps · take number 7."), + ("Cello Suite Prelude Live", "A warm live performance of the familiar unaccompanied prelude.", "bach cello suite live classical", "Duration 3:09 · audience recording · restored in 2024."), + ("Rain on Library Windows", "A seamless ambience track of gentle rain against tall windows.", "rain ambience sleep study nature", "Duration 18:40 · stereo · no music or voice."), + ("Blue Hour Jazz Trio", "Original piano, upright bass, and brushed drums in a relaxed medium tempo.", "jazz trio original instrumental", "Duration 6:17 · 24-bit source · key of F minor."), + ("Acoustic Guitar Warmup Etude", "A fingerstyle study designed for intermediate practice sessions.", "guitar acoustic etude practice", "Duration 2:58 · 120 BPM · standard tuning."), + ("Ocean Pier Evening Ambience", "Waves, gulls, and wooden pier creaks recorded just after sunset.", "ocean waves ambience coast", "Duration 14:22 · binaural recording · light wind."), + ("Brass Quintet Festival Fanfare", "An original ceremonial fanfare for two trumpets, horn, trombone, and tuba.", "brass quintet fanfare original", "Duration 2:14 · score revision 3 · concert pitch."), + ("Violin Partita Courante", "A clear rehearsal recording focused on articulation and dance rhythm.", "violin bach partita baroque", "Duration 3:37 · mono room mic · no edits."), + ("Quiet Cafe Background Loop", "Low conversation and table sounds for creative-work ambience.", "cafe ambience background focus", "Duration 9:30 · seamless loop · no identifiable speech."), + ("Mountain Stream in Late Summer", "Close-miked flowing water from a shaded alpine stream.", "water stream nature field recording", "Duration 10:45 · 48 kHz WAV source · normalized to -16 LUFS."), + ("String Quartet Rehearsal Sketch", "An original two-theme chamber sketch from an open rehearsal.", "strings quartet rehearsal original", "Duration 7:06 · rehearsal letter C begins at 3:12."), + ("Vintage Metronome at 72 BPM", "A wooden mechanical metronome captured for music practice.", "metronome rhythm practice 72 bpm", "Duration 5:00 · 72 beats per minute · dry studio sound."), + ("Evening Crickets Field Session", "A summer-night chorus recorded near a woodland edge.", "crickets night nature ambience", "Duration 11:11 · stereo pair · recorded in August."), + ], + }, + "Video": { + "ext": "mp4", "mime": "video/mp4", "license": "Creative Commons Attribution", + "items": [ + ("Introduction to Urban Sketching", "A practical lesson on line, shape, and quick watercolor washes.", "art drawing watercolor tutorial", "Runtime 18:24 · 1080p · includes three street-scene demonstrations."), + ("Night Walk Across Tower Bridge", "A stabilized dusk-to-night walk with ambient city sound.", "london travel bridge city walk", "Runtime 12:36 · 4K master · filmed from south to north."), + ("Denali Landscape Study", "A slow visual study of the mountain, tundra, and reflected light.", "denali alaska mountain nature landscape", "Runtime 8:15 · 2160p · filmed over two clear mornings."), + ("Build a Simple Weather Station", "A classroom demonstration using open hardware sensors.", "science weather tutorial sensors education", "Runtime 22:41 · 1080p · bill of materials appears at 04:18."), + ("Five-Minute Desk Mobility Routine", "A low-impact guided routine for shoulders, hips, and wrists.", "fitness mobility desk stretch", "Runtime 5:38 · captions included · no equipment required."), + ("Open Data Mapping Basics", "A beginner overview of layers, coordinates, and map styling.", "maps gis open data tutorial", "Runtime 27:03 · 1080p · sample project uses GeoJSON."), + ("Coastal Birds Field Guide", "Identification notes and footage for eight common shoreline birds.", "birds coast nature guide", "Runtime 14:19 · captions included · eight species chapters."), + ("Bread Dough Fermentation Timelapse", "A controlled side-by-side rise at three room temperatures.", "bread baking science timelapse", "Runtime 6:52 · labels show 18°C, 22°C, and 27°C."), + ("Community Garden Summer Tour", "A volunteer-led walk through pollinator beds and raised plots.", "garden plants community tour", "Runtime 16:08 · 1080p · filmed in July."), + ("Beginner Astronomy Moon Phases", "A model-based explanation of the lunar cycle and viewing geometry.", "astronomy moon phases education", "Runtime 11:44 · includes a 29.5-day cycle diagram."), + ("Restoring a Wooden Chair", "A careful repair demonstration from disassembly through finish.", "woodworking restoration chair tutorial", "Runtime 31:20 · chapter markers · hand tools only."), + ("Museum Archive Handling Basics", "Gloves, supports, labeling, and safe movement of paper objects.", "museum archive preservation training", "Runtime 13:57 · accessibility captions · revised 2025."), + ("City Cycling Route Planning", "How to evaluate gradients, protected lanes, and intersection risk.", "cycling city maps route planning", "Runtime 19:05 · sample route length 8.4 km."), + ("Watercolor Clouds Three Techniques", "Wet-on-wet, lifting, and dry-brush cloud studies.", "painting watercolor clouds art", "Runtime 15:31 · 1080p · materials list in opening minute."), + ("Library Digitization Workflow", "A demonstration of capture, naming, metadata, and quality control.", "library scanning metadata workflow", "Runtime 24:12 · TIFF master workflow · PDF access copies."), + ("Seed Saving for Beginners", "A seasonal guide to collecting, drying, labeling, and storage.", "garden seeds sustainability guide", "Runtime 17:46 · covers tomatoes, beans, and lettuce."), + ], + }, + "Apps": { + "ext": "zip", "mime": "application/zip", "license": "Open-source package", + "items": [ + ("OpenMap Desktop Portable", "Portable offline map viewer package with sample public data.", "maps desktop offline open source", "Version 3.4.2 · Linux and Windows launchers · SHA-256 listed in README."), + ("NoteStack Markdown Editor", "A lightweight local-first editor for Markdown notes.", "notes markdown editor productivity", "Version 2.8.0 · spellcheck included · export to HTML and PDF."), + ("PhotoBatch Community Edition", "Resize, rotate, and rename image collections without cloud upload.", "photos images batch resize open source", "Version 1.9.5 · supports JPEG, PNG, and WebP."), + ("AudioTag Library Tool", "Edit common audio metadata fields and organize albums.", "music audio tags organizer", "Version 4.1.1 · reads ID3 and Vorbis comments."), + ("StudyTimer Focus Utility", "A simple configurable focus and break timer.", "timer study focus productivity", "Version 1.6.3 · three color themes · CSV session export."), + ("ArchivePeek File Inspector", "Browse archive contents and checksums before extraction.", "archive zip checksum utility", "Version 2.2.4 · ZIP, TAR, and 7z read support."), + ("ColorScope Palette Assistant", "Inspect colors and create accessible palette combinations.", "design color accessibility palette", "Version 5.0.0 · WCAG contrast preview · GPL-3.0."), + ("PocketWeather Sample Client", "Demonstration client for an open weather-data endpoint.", "weather sample api client", "Version 0.9.8 · demo data works offline · MIT license."), + ("BookShelf EPUB Catalog", "Catalog local EPUB metadata and reading status.", "books epub catalog library", "Version 3.0.1 · OPF metadata import · local database only."), + ("SubtitleShift Timing Utility", "Adjust subtitle timing by a fixed offset or scale.", "video subtitles timing utility", "Version 1.4.6 · SRT and WebVTT support."), + ("GeoJournal Field Notes", "Create location-aware field notes with offline maps.", "journal maps offline field notes", "Version 2.5.7 · GPX import · coordinates optional."), + ("DiagramLite Flow Editor", "Small vector diagram editor with SVG export.", "diagram svg flowchart editor", "Version 0.8.9 · 24 bundled shapes · autosave enabled."), + ("Checksum Desk", "Generate and compare common file checksums locally.", "checksum sha256 files security", "Version 1.2.0 · SHA-256, SHA-512, and BLAKE2."), + ("CaptionCraft Transcriber", "Manual caption authoring workspace with keyboard controls.", "captions accessibility video editor", "Version 2.0.3 · WebVTT export · waveform preview."), + ("GardenPlot Planner", "Lay out beds and track crop rotations by season.", "garden planner crops open source", "Version 4.3.0 · metric and imperial grids."), + ("FontLedger Collection Viewer", "Preview locally installed font families and metadata.", "fonts typography viewer design", "Version 1.1.8 · specimen PDF export."), + ], + }, + "Images": { + "ext": "jpg", "mime": "image/jpeg", "license": "Creative Commons image", + "items": [ + ("London Skyline at Blue Hour", "A wide cityscape over the Thames as evening lights appear.", "london skyline city travel bridge", "Resolution 3840 × 2160 · captured at 20:14 · lens 24 mm."), + ("New York Skyline at Sunset", "Manhattan towers against a clear pastel sunset.", "new york skyline city sunset", "Resolution 3840 × 2160 · ISO 200 · exposure 1/80 s."), + ("Denali Reflection Panorama", "Snow-covered Denali reflected in still tundra water.", "denali mountain alaska panorama nature", "Resolution 2824 × 2176 · morning light · elevation viewpoint 640 m."), + ("Library Reading Room Windows", "Tall windows and long study tables in a historic reading room.", "library architecture reading room", "Resolution 2400 × 1600 · natural light · no people."), + ("Atlantic Coast Boardwalk", "Weathered boards leading through dunes toward the sea.", "ocean coast boardwalk landscape", "Resolution 3000 × 2000 · late afternoon · focal length 35 mm."), + ("Community Garden Pollinators", "Bees visiting purple flowers in a neighborhood garden.", "garden flowers bees nature", "Resolution 2200 × 1467 · macro crop · photographed in July."), + ("Alpine Lake Morning Mist", "Thin mist lifting from a mountain lake at sunrise.", "mountain lake mist sunrise", "Resolution 3200 × 2133 · tripod capture · 06:21 local time."), + ("Ceramic Studio Workbench", "Tools, clay, and unfinished vessels on a working studio table.", "ceramics art studio craft", "Resolution 2600 × 1733 · window light · documentary series."), + ("Red Bicycle by Brick Wall", "A city bicycle parked beside a warm red-brick facade.", "bicycle city street red", "Resolution 2400 × 1600 · 50 mm lens · overcast light."), + ("Winter Pines After Snow", "Fresh snow resting on dense evergreen branches.", "winter snow trees forest", "Resolution 3000 × 2000 · temperature -6°C · polarizing filter."), + ("Open Notebook and Fountain Pen", "A clean desk scene with handwritten project notes.", "notebook desk writing productivity", "Resolution 2400 × 1600 · overhead composition · daylight."), + ("Harbor Boats in Morning Fog", "Small sailboats emerging through pale harbor fog.", "harbor boats fog water", "Resolution 2800 × 1867 · 85 mm lens · photographed at 07:03."), + ("Wildflower Trail in Spring", "A narrow hillside trail lined with yellow and blue flowers.", "wildflowers trail spring hiking", "Resolution 3200 × 2133 · elevation 1,120 m · April capture."), + ("Classic Camera Detail", "Close view of the controls on a restored mechanical camera.", "camera vintage photography detail", "Resolution 2500 × 1667 · focus-stacked from six frames."), + ("Rainy Window City Lights", "Defocused evening traffic seen through raindrops on glass.", "rain city lights abstract", "Resolution 2400 × 1600 · 50 mm lens · manual focus."), + ("Map and Compass Flat Lay", "A paper trail map, field compass, and pencil arranged for a hike.", "map compass hiking navigation", "Resolution 3000 × 2000 · overhead studio light · north arrow visible."), + ], + }, + "Books": { + "ext": "epub", "mime": "application/epub+zip", "license": "Public domain text", + "items": [ + ("The Secret Garden Illustrated Edition", "A carefully proofread edition of the classic garden story.", "classic fiction garden children", "338 pages · EPUB 3 · 12 original illustrations."), + ("A Study in Scarlet", "The first Sherlock Holmes novel in a clean reflowable edition.", "classic mystery sherlock holmes", "164 pages · chapter navigation · British spelling retained."), + ("The Time Machine", "H. G. Wells's compact science-fiction novel with editorial notes.", "science fiction classic time travel", "128 pages · 12 chapters · notes begin after page 116."), + ("Anne of Green Gables", "A reflowable edition with a Prince Edward Island map.", "classic fiction anne canada", "412 pages · 38 chapters · includes one regional map."), + ("The Adventures of Tom Sawyer", "A proofread edition with a historical-context introduction.", "classic fiction mark twain adventure", "296 pages · 35 chapters · introduction by Open Shelf editors."), + ("The Wonderful Wizard of Oz", "A color-illustrated EPUB edition of the original 1900 story.", "classic fantasy oz illustrated", "214 pages · 24 chapters · 20 color plates."), + ("Walden", "Thoreau's reflections on simple living with linked endnotes.", "essays nature philosophy thoreau", "384 pages · linked endnotes · 18 chapter essays."), + ("Pride and Prejudice", "A typographically polished edition with character index.", "classic romance austen fiction", "432 pages · 61 chapters · character index included."), + ("Frankenstein 1818 Text", "The original 1818 edition with a concise textual history.", "gothic science fiction shelley", "280 pages · 1818 text · three-volume structure retained."), + ("The Jungle Book", "Stories and poems in a navigable illustrated edition.", "classic stories kipling jungle", "246 pages · 14 illustrations · poems indexed separately."), + ("Meditations Public Domain Translation", "A clear English translation arranged by book and section.", "philosophy stoicism marcus aurelius", "192 pages · 12 books · searchable section numbers."), + ("The Federalist Papers", "All 85 essays with author and topic index.", "history politics essays constitution", "672 pages · 85 essays · searchable topic index."), + ("Grimms Household Tales Selection", "Thirty selected tales in a reflowable reading edition.", "fairy tales folklore grimm", "318 pages · 30 tales · content notes included."), + ("The Souls of Black Folk", "Du Bois's landmark essays with preserved musical epigraphs.", "history essays sociology du bois", "286 pages · 14 essays · musical bars encoded as images."), + ("Leaves of Grass 1892 Edition", "The deathbed edition with section-level navigation.", "poetry whitman american", "476 pages · 17 sections · line breaks preserved."), + ("Twenty Thousand Leagues Under the Seas", "An illustrated translation of Verne's undersea adventure.", "adventure science fiction ocean verne", "512 pages · 47 chapters · 32 illustrations."), + ], + }, + "Documents": { + "ext": "pdf", "mime": "application/pdf", "license": "Open educational resource", + "items": [ + ("Urban Tree Inventory Field Guide", "A practical guide to measuring, identifying, and recording street trees.", "trees city field guide environment", "64 pages · revision 2.1 · diameter worksheet on page 41."), + ("Community Workshop Facilitation Notes", "Reusable agendas and exercises for small public workshops.", "community workshop facilitation guide", "38 pages · six agenda templates · accessibility checklist on page 32."), + ("Beginner Map Reading Workbook", "Exercises covering scale, symbols, contour lines, and coordinates.", "maps navigation workbook education", "72 pages · 24 exercises · answer key begins on page 66."), + ("Open Photography Metadata Handbook", "A reference to common EXIF, IPTC, and rights fields.", "photography metadata exif handbook", "54 pages · field matrix on page 17 · version 1.4."), + ("Home Energy Audit Checklist", "Room-by-room observations for a non-invasive home energy review.", "energy home checklist sustainability", "22 pages · 87 checklist items · climate notes appendix."), + ("Small Archive Digitization Plan", "A staged plan for naming, scanning, metadata, storage, and QA.", "archive scanning digitization workflow", "46 pages · 12-week sample schedule · risk register on page 39."), + ("Rain Garden Planting Guide", "Site selection and plant lists for compact residential rain gardens.", "garden rain water plants guide", "58 pages · three planting zones · maintenance calendar on page 49."), + ("Accessible Event Planning Workbook", "Prompts for venue, communication, sensory, and mobility access.", "accessibility events workbook planning", "44 pages · 63 prompts · vendor questions on page 29."), + ("Volunteer Trail Survey Form", "Printable forms for recording trail surface and drainage conditions.", "hiking trail survey form", "18 pages · four field forms · condition codes on page 5."), + ("Local History Interview Toolkit", "Consent, recording, description, and preservation guidance.", "history interview oral archive", "66 pages · sample release on page 55 · metadata sheet on page 59."), + ("Public Data Cleaning Recipes", "Spreadsheet-first techniques for dates, categories, and missing values.", "data spreadsheet cleaning tutorial", "82 pages · 19 recipes · validation checklist on page 78."), + ("Neighborhood Bird Count Protocol", "A repeatable ten-minute observation protocol for volunteers.", "birds citizen science protocol", "26 pages · ten-minute count · weather codes on page 12."), + ("Creative Commons Licensing Primer", "A plain-language guide to the six standard CC licenses.", "copyright creative commons licensing", "34 pages · license comparison chart on page 16."), + ("Remote Study Group Playbook", "Roles, meeting formats, and reflection prompts for peer study.", "study remote learning playbook", "40 pages · four meeting formats · facilitator cards appendix."), + ("Museum Label Writing Guide", "Techniques for concise, accessible object labels and panels.", "museum writing accessibility guide", "52 pages · 75-word label exercise on page 21."), + ("Community Garden Crop Calendar", "A temperate-climate planting and harvest planning calendar.", "garden crops calendar planning", "30 pages · zone 6 reference · succession table on page 24."), + ], + }, + "Archives": { + "ext": "zip", "mime": "application/zip", "license": "Creative Commons collection", + "items": [ + ("Urban Sketching Practice Sheets", "Printable perspective, texture, and value exercises.", "art drawing worksheets archive", "28 files · 44.6 MB unpacked · includes PDF and PNG formats."), + ("Open Map Symbol Collection", "A compact set of SVG symbols for community mapping.", "maps icons svg open data", "146 files · SVG format · symbol index included."), + ("Birdsong Identification Samples", "Short labeled clips for common woodland and garden birds.", "birds audio samples nature", "32 files · 96 MB unpacked · WAV and metadata CSV."), + ("Public Domain Botanical Plates", "Scanned botanical plates cleaned for classroom use.", "plants botanical images education", "48 files · 212 MB unpacked · 300 dpi JPEG."), + ("Accessible Presentation Templates", "High-contrast slide layouts with reading-order notes.", "accessibility slides templates", "14 files · PPTX and ODP · font list included."), + ("Community Survey Starter Pack", "Editable questionnaires, consent language, and coding sheets.", "survey community research templates", "21 files · DOCX, ODT, and XLSX formats."), + ("Field Recording Metadata Forms", "Sheets for location, equipment, rights, and technical notes.", "audio field recording metadata", "17 files · printable and spreadsheet versions."), + ("Historic Map Georeference Samples", "Practice maps with control points and completed examples.", "maps history gis tutorial", "26 files · GeoTIFF and CSV · five completed examples."), + ("Beginner Python Data Exercises", "Small CSV datasets and notebooks for introductory analysis.", "python data education notebooks", "39 files · 18 exercises · solutions in separate folder."), + ("Neighborhood Photo Walk Prompts", "Prompt cards and release forms for a group photo walk.", "photography community prompts", "24 files · 18 prompt cards · bilingual release form."), + ("Garden Planning Grid Pack", "Printable bed grids in metric and imperial dimensions.", "garden planning printable grids", "36 files · PDF and SVG · six page sizes."), + ("Oral History Audio Test Files", "Synthetic calibration clips for a digitization workflow.", "audio archive calibration testing", "12 files · WAV format · tones and spoken test counts."), + ("Open Icon Accessibility Set", "Simple interface icons with names and usage notes.", "icons accessibility interface svg", "180 files · SVG and PNG · 24 px and 48 px sizes."), + ("Classroom Weather Data Pack", "One year of fictional station readings for data lessons.", "weather data classroom csv", "13 files · 365 daily rows · data dictionary included."), + ("Local Newsletter Layout Kit", "Editable two- and four-page community newsletter layouts.", "newsletter design templates community", "18 files · Scribus and PDF · three color variants."), + ("Trail Sign Vector Collection", "Editable wayfinding and safety sign illustrations.", "trail hiking signs vector", "64 files · SVG and PDF · monochrome and color variants."), + ], + }, +} + +THUMBNAILS = ["images/london.jpg", "images/new-york.jpg", "images/denali.jpg"] + + +def seed_database(): + """Seed the public catalog once; an existing catalog is a complete no-op.""" + if FileItem.query.filter_by(public=True).count() > 0: + return + file_id = 1 + for category, spec in CATALOG.items(): + for index, (title, description, tags, detail) in enumerate(spec["items"]): + filename = f"{title}.{spec['ext']}" + thumbnail = "" + if category == "Images" and index < len(THUMBNAILS): + thumbnail = THUMBNAILS[index] + item = FileItem( + id=file_id, + filename=filename, + slug=f"{slugify(filename)}-{file_id}", + category=category, + extension=spec["ext"], + mime_type=spec["mime"], + size_bytes=(index + 3) * (1_380_000 if category in {"Music", "Video"} else 438_000), + description=description, + tags=tags, + license_name=spec["license"], + uploader_name=UPLOADERS[(file_id + index) % len(UPLOADERS)], + public=True, + featured=index in {1, 6}, + thumbnail=thumbnail, + preview_text=detail, + uploaded_at=SEED_TIME - timedelta(days=(index * 5 + file_id % 9)), + modified_at=SEED_TIME - timedelta(days=(index * 3 + file_id % 7)), + download_count=670 + ((file_id * 733) % 48_000), + rating=round(3.8 + ((file_id * 7) % 13) / 10, 1), + ) + db.session.add(item) + file_id += 1 + db.session.commit() + + +BENCHMARK_USERS = [ + ("alice.j@test.com", "Alice Johnson", "Seattle, Washington", "Photographer and community archive volunteer."), + ("bob.c@test.com", "Bob Chen", "Austin, Texas", "Maps, field recordings, and open-data projects."), + ("carol.d@test.com", "Carol Davis", "Chicago, Illinois", "Teacher building accessible classroom resources."), + ("david.k@test.com", "David Kim", "Atlanta, Georgia", "Designer and neighborhood garden coordinator."), +] + +PRIVATE_FILES = [ + ("Quarterly retreat budget.xlsx", "Documents", 184_320, "Working budget with venue and travel estimates."), + ("Seattle photo selects.zip", "Archives", 8_340_000, "Shortlisted city images for the fall exhibit."), + ("Field recording notes.docx", "Documents", 94_208, "Location and microphone notes from the coast session."), + ("Reading list autumn.txt", "Documents", 12_288, "Personal reading list and library holds."), + ("Community map draft.pdf", "Documents", 2_430_000, "Draft map for the public workshop."), + ("Old outline.txt", "Documents", 7_168, "Superseded outline retained in Trash."), +] + + +def seed_benchmark_users(): + """Seed four benchmark accounts and their state once; reruns are no-ops.""" + if User.query.filter_by(email="alice.j@test.com").first(): + return + public_files = FileItem.query.filter_by(public=True).order_by(FileItem.id).all() + private_id = (public_files[-1].id if public_files else 0) + 1 + for user_index, (email, name, location, bio) in enumerate(BENCHMARK_USERS): + user = User( + id=user_index + 1, + email=email, + display_name=name, + location=location, + bio=bio, + plan="Premium" if user_index == 3 else "Free", + storage_limit_mb=102400 if user_index == 3 else 15360, + joined_at=SEED_TIME - timedelta(days=800 - user_index * 73), + ) + user.set_password(BENCHMARK_PASSWORD) + db.session.add(user) + db.session.flush() + folders = [] + for folder_index, folder_name in enumerate(("Work", "Photos", "Shared Projects", "Music")): + folder = Folder( + user_id=user.id, + name=folder_name, + created_at=SEED_TIME - timedelta(days=150 - folder_index * 9 - user_index), + ) + db.session.add(folder) + db.session.flush() + folders.append(folder) + owned = [] + for item_index, (base_name, category, size, description) in enumerate(PRIVATE_FILES): + prefix = ("Alice", "Bob", "Carol", "David")[user_index] + filename = f"{prefix} {base_name}" + extension = filename.rsplit(".", 1)[1].lower() + item = FileItem( + id=private_id, + owner_id=user.id, + folder_id=folders[item_index % len(folders)].id if item_index < 5 else None, + filename=filename, + slug=f"{slugify(filename)}-{private_id}", + category=category, + extension=extension, + mime_type="application/octet-stream", + size_bytes=size + user_index * 4096, + description=description, + tags="private personal benchmark", + license_name="Private", + uploader_name=name, + public=False, + deleted=item_index == 5, + preview_text=f"Private file owned by {name}. {description}", + uploaded_at=SEED_TIME - timedelta(days=40 - item_index * 3 + user_index), + modified_at=SEED_TIME - timedelta(days=10 - item_index + user_index), + download_count=0, + rating=0, + ) + db.session.add(item) + owned.append(item) + private_id += 1 + for offset in range(4): + public = public_files[(user_index * 19 + offset * 9) % len(public_files)] + db.session.add(Favorite(user_id=user.id, file_id=public.id, created_at=SEED_TIME - timedelta(days=12 + offset))) + for offset in range(3): + public = public_files[(user_index * 23 + offset * 11 + 5) % len(public_files)] + db.session.add(SavedFile(user_id=user.id, file_id=public.id, created_at=SEED_TIME - timedelta(days=20 + offset))) + for offset in range(2): + public = public_files[(user_index * 13 + offset * 17 + 2) % len(public_files)] + db.session.add(DownloadLog(user_id=user.id, file_id=public.id, downloaded_at=SEED_TIME - timedelta(days=offset + 2))) + db.session.add(SharedLink( + user_id=user.id, + file_id=owned[0].id, + token=f"demo-{user_index + 1}-retreat-budget", + permission="download" if user_index % 2 else "view", + label="Planning group", + created_at=SEED_TIME - timedelta(days=5 + user_index), + )) + if user_index == 3: + db.session.add(PlanOrder( + user_id=user.id, + plan_name="Premium", + billing_period="annual", + amount=77.88, + card_last4="4242", + status="Active", + created_at=SEED_TIME - timedelta(days=44), + )) + for index in range(12): + db.session.add(Comment( + user_id=(index % 4) + 1, + file_id=public_files[(index * 7 + 3) % len(public_files)].id, + body=( + "The detail notes and file metadata were especially useful for our workshop." + if index % 2 == 0 else + "Preview opened correctly, and the format information matched the download." + ), + created_at=SEED_TIME - timedelta(days=30 - index), + )) + db.session.commit() + + +if __name__ == "__main__": + with _app.app.app_context(): + db.create_all() + seed_database() + seed_benchmark_users() + print(f"seeded {FileItem.query.count()} files and {User.query.count()} users") diff --git a/sites/4shared/static/css/.gitkeep b/sites/4shared/static/css/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/sites/4shared/static/css/main.css b/sites/4shared/static/css/main.css new file mode 100644 index 00000000..11c95bfa --- /dev/null +++ b/sites/4shared/static/css/main.css @@ -0,0 +1,334 @@ +:root { + --blue: #0797f6; + --blue-dark: #087fce; + --sky: #7fc8f6; + --ink: #3d4652; + --muted: #8b9299; + --line: #e1e4e7; + --wash: #f4f5f6; + --footer: #30383f; + --shadow: 0 4px 14px rgba(38, 53, 66, .14); +} + +* { box-sizing: border-box; } +html { font-family: Arial, Helvetica, sans-serif; color: var(--ink); background: #fff; } +body { margin: 0; line-height: 1.42; font-size: 14px; } +a { color: var(--blue-dark); text-decoration: none; } +a:hover { text-decoration: underline; } +button, input, select, textarea { font: inherit; } +.container { width: min(1170px, calc(100% - 40px)); margin-inline: auto; } +.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } + +.topbar { height: 82px; background: #fff; display: flex; align-items: center; position: relative; z-index: 20; } +.topbar-inner { display: flex; align-items: center; gap: 28px; } +.home-topbar .topbar-inner { justify-content: center; } +.home-topbar .header-actions { position: absolute; right: max(20px, calc((100vw - 1170px) / 2)); } +.brand { display: inline-flex; align-items: baseline; color: #058ff0; font-size: 28px; font-weight: 700; letter-spacing: -1.7px; line-height: 1; } +.brand:hover { text-decoration: none; } +.brand-four { font-size: 36px; letter-spacing: -3px; } +.header-search { flex: 1; display: flex; max-width: 790px; border: 1px solid #d9dde0; border-radius: 28px; overflow: hidden; box-shadow: 0 3px 8px rgba(0,0,0,.10); } +.header-search input { flex: 1; min-width: 0; border: 0; outline: 0; padding: 14px 20px; color: #4d555d; } +.header-search button { border: 0; background: #fff; color: #555d64; font-size: 25px; padding: 4px 18px 8px; cursor: pointer; } +.header-actions { margin-left: auto; display: flex; align-items: center; gap: 22px; white-space: nowrap; } +.signin-pill { border: 2px solid #9ed6fb; color: #078df0; border-radius: 24px; padding: 8px 17px; font-weight: 700; } +.signin-pill:hover { text-decoration: none; background: #f3faff; } +.user-link { color: #474d52; font-weight: 700; } +.user-dot { color: #a9afb4; font-size: 24px; vertical-align: middle; margin-right: 7px; } +.bell-link { color: #48515a; font-size: 20px; } + +.flash { padding: 12px 16px; border-radius: 5px; margin: 10px 0; } +.flash.success { background: #e8f8f1; color: #146e49; } +.flash.error { background: #fff0f0; color: #a63d3d; } +.flash.message { background: #edf7ff; color: #24638e; } + +.hero { position: relative; overflow: hidden; text-align: center; } +.real-home { background: linear-gradient(#fff 3%, #edf9ff 82%, #e3f4fd); min-height: 790px; padding: 40px 0 70px; } +.hero-inner { position: relative; z-index: 2; } +.hero h1 { color: #050505; font-size: 34px; line-height: 1.15; margin: 0 0 14px; letter-spacing: -1px; } +.hero p { color: #8d9297; font-size: 19px; font-weight: 700; margin: 0 0 40px; } +.cloud { position: absolute; z-index: 1; width: 520px; height: 170px; border-radius: 100px; background: rgba(255,255,255,.88); filter: drop-shadow(0 -10px 0 rgba(255,255,255,.25)); bottom: 160px; } +.cloud::before, .cloud::after { content: ""; position: absolute; border-radius: 50%; background: inherit; } +.cloud::before { width: 230px; height: 230px; left: 60px; top: -95px; } +.cloud::after { width: 300px; height: 300px; right: 15px; top: -125px; } +.cloud-a { left: -150px; } +.cloud-b { right: -150px; transform: scale(.9); } +.hero-search { display: flex; width: min(750px, 100%); margin: 0 auto; border: 2px solid #a4d8f8; border-radius: 31px; background: white; overflow: hidden; box-shadow: 0 2px 5px rgba(0,0,0,.14); } +.hero-search input { flex: 1; min-width: 0; border: 0; outline: 0; padding: 17px 24px; font-size: 16px; } +.hero-search button { width: 58px; height: 54px; margin: 3px; border: 0; border-radius: 50%; background: var(--blue); color: #fff; font-size: 27px; cursor: pointer; } +.or-separator { margin: 15px 0; color: #333; font-weight: 700; } +.drop-zone { width: min(750px, 100%); min-height: 225px; margin: 0 auto; border: 2px dashed var(--blue); border-radius: 24px; display: flex; align-items: center; justify-content: center; flex-direction: column; color: var(--blue); background: rgba(237,249,255,.55); } +.drop-zone:hover { text-decoration: none; background: rgba(255,255,255,.75); } +.upload-cloud { display: grid; place-items: center; width: 112px; height: 74px; margin-bottom: 10px; border: 3px solid var(--blue); border-radius: 50px; background: #dff3ff; font-size: 45px; line-height: 1; } +.upload-button { display: inline-flex; justify-content: center; min-width: 235px; padding: 13px 25px; margin-top: 18px; border-radius: 26px; background: var(--blue); color: #fff; font-weight: 700; } +.hero-categories { display: grid; grid-template-columns: repeat(6, 1fr); gap: 35px; margin: 75px auto 0; max-width: 1120px; } +.hero-categories a { height: 152px; border: 1px solid #d9dde0; border-radius: 22px; background: rgba(255,255,255,.94); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; color: #3f464c; box-shadow: 0 1px 3px rgba(0,0,0,.06); } +.hero-categories a:hover { text-decoration: none; border-color: #9ed6fb; } +.hero-categories b { font-size: 42px; line-height: 1; color: #ff902c; font-weight: 400; } +.hero-categories a:nth-child(2) b { color: #f43f57; } +.hero-categories a:nth-child(3) b { color: #54c735; } +.hero-categories a:nth-child(4) b { color: #775cf5; } +.hero-categories a:nth-child(5) b { color: #728b9d; } +.hero-categories a:nth-child(6) b { color: #aab1b7; } + +.app-band { text-align: center; padding: 65px 0 80px; background: #fff; } +.app-band h2 { margin: 0; font-size: 31px; color: #090909; } +.app-band p { color: #999fa5; font-size: 17px; font-weight: 700; } +.qr-motif { display: grid; place-items: center; color: #0b0b0b; font-size: 115px; line-height: 1; height: 150px; } +.app-badges { display: flex; justify-content: center; gap: 16px; margin-top: 22px; } +.store-badge { min-width: 215px; background: #22282d; color: white; border-radius: 28px; padding: 10px 22px; display: inline-flex; flex-direction: column; line-height: 1.1; text-align: left; } +.store-badge small { font-size: 9px; } +.store-badge strong { font-size: 15px; } + +.search-page { padding: 0 0 70px; min-height: 65vh; } +.search-tabs { display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; padding: 0 0 30px; } +.search-tabs a { border: 1px solid #d8dce0; border-radius: 22px; color: #454d55; padding: 9px 22px; font-weight: 700; } +.search-tabs a:hover { text-decoration: none; border-color: #a5abb0; } +.search-tabs a.active { color: #fff; background: #858585; border-color: #858585; } +.result-toolbar { display: flex; justify-content: space-between; align-items: center; color: #9b9fa3; margin: 0 14px 20px; } +.filters { display: flex; align-items: center; gap: 8px; } +.filters select { border: 0; background: #f4f5f6; color: #6f777e; padding: 7px 10px; border-radius: 15px; } +.filters button { border: 0; background: none; font-size: 21px; color: #78818a; cursor: pointer; } +.result-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px 30px; } +.result-row { min-height: 154px; border: 1px solid #e0e2e4; border-radius: 24px; overflow: hidden; display: grid; grid-template-columns: 158px 1fr 48px; background: #fff; position: relative; } +.result-visual { display: flex; align-items: center; justify-content: center; background: #7dc4f3; min-width: 0; overflow: hidden; } +.result-visual img { width: 100%; height: 100%; object-fit: cover; } +.media-glyph { color: #d8f0ff; font-size: 67px; line-height: 1; text-shadow: 0 8px 0 rgba(0,0,0,.04); } +.type-documents, .type-archives { background: #f6f5ef; } +.type-documents .media-glyph, .type-archives .media-glyph { color: #8fa3b1; font-size: 28px; text-shadow: none; } +.result-info { padding: 20px 10px 18px 20px; min-width: 0; } +.result-info h3 { margin: 0 0 3px; font-size: 18px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +.result-info h3 a { color: #414a53; } +.result-info p { margin: 0; color: #686f75; } +.result-owner { margin-top: 58px; color: #8a9096; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +.result-add { display: grid; place-items: start center; padding-top: 12px; background: #f3f4f5; color: #46505a; border-radius: 0 0 0 28px; font-size: 28px; } +.result-add:hover { text-decoration: none; background: #ebedef; } + +.page, .file-page { padding: 25px 0 70px; min-height: 62vh; } +.page-title { margin: 0 0 5px; font-size: 28px; color: #222; } +.page-lede { color: var(--muted); margin: 0 0 25px; } +.section { padding: 45px 0; } +.section.alt { background: #f7f8f9; } +.section-head { display: flex; align-items: end; justify-content: space-between; margin-bottom: 20px; } +.section-head h2 { margin: 0; color: #272d32; } +.section-head p { margin: 5px 0 0; color: var(--muted); } +.file-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; } +.file-card { border: 1px solid #e0e3e5; border-radius: 20px; background: #fff; overflow: hidden; min-width: 0; position: relative; } +.file-thumb { height: 126px; display: flex; align-items: center; justify-content: center; background: #7dc4f3; overflow: hidden; } +.file-thumb img { width: 100%; height: 100%; object-fit: cover; } +.file-icon { display: grid; place-items: center; width: 58px; height: 70px; border: 2px solid rgba(255,255,255,.85); border-radius: 8px; color: #fff; text-transform: uppercase; font-size: 11px; } +.file-card-body { padding: 14px; } +.file-title { display: block; color: #434b53; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +.file-meta { display: flex; gap: 7px; color: #969da3; font-size: 11px; margin-top: 7px; } +.card-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 11px; } +.chip, .tag-line span { border: 1px dotted #aeb4b9; border-radius: 15px; padding: 3px 8px; color: #7b838a; font-size: 10px; } +.rating { color: #f3a91b; } +.icon-button { border: 0; background: none; color: #9aa6b4; font-size: 19px; cursor: pointer; } +.icon-button.active { color: #e14c6d; } + +.media-preview { min-height: 390px; border-radius: 24px; background: #238ebb; display: flex; align-items: center; justify-content: center; overflow: hidden; } +.media-preview img { width: 100%; max-height: 610px; object-fit: contain; background: #edf1f4; } +.media-preview > .file-icon { transform: scale(1.6); } +.waveform { width: 94%; height: 260px; display: flex; align-items: center; justify-content: center; gap: 8px; position: relative; } +.waveform i { width: 5px; height: 80px; background: #046da0; opacity: .9; } +.waveform i:nth-child(3n) { height: 150px; } +.waveform i:nth-child(4n) { height: 115px; } +.waveform i:nth-child(5n) { height: 185px; } +.waveform span { position: absolute; bottom: 8px; color: #fff; font-size: 46px; } +.file-heading { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 26px 0 12px; } +.file-heading small { color: #41484e; font-weight: 700; } +.detail-title { color: #313940; font-size: 27px; margin: 1px 0 6px; } +.detail-meta { color: #8c9297; margin: 0; } +.tag-line { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; } +.heart-button { width: 54px; height: 54px; border: 0; border-radius: 50%; background: var(--blue); color: #fff; font-size: 31px; cursor: pointer; } +.detail-actions { display: flex; align-items: center; gap: 10px; padding: 18px 0 28px; border-bottom: 1px solid #e2e4e6; } +.detail-actions form { margin: 0; } +.primary-button, .secondary-button, .danger-button { display: inline-flex; align-items: center; justify-content: center; border-radius: 23px; padding: 10px 18px; font-weight: 700; cursor: pointer; } +.primary-button { background: var(--blue); color: #fff; border: 1px solid var(--blue); } +.primary-button:hover { background: var(--blue-dark); text-decoration: none; } +.secondary-button { background: #fff; color: #4a535b; border: 1px solid #d6dadd; } +.secondary-button:hover { border-color: var(--blue); color: var(--blue); text-decoration: none; } +.danger-button { color: #bd3f3f; background: #fff; border: 1px solid #e4bbbb; } +.wide { width: 100%; } +.detail-copy { padding: 5px 0 20px; } +.detail-copy h2, .comments h2 { font-size: 18px; color: #313940; } +.preview-note { background: #f5f7f8; padding: 14px 18px; border-radius: 10px; color: #56616a; } +.comments { padding: 0 0 28px; border-bottom: 1px solid #e1e3e5; } +.comments h2 small { color: #9da3a8; } +.comment-form { display: flex; gap: 12px; align-items: center; } +.comment-form textarea { flex: 1; min-height: 44px; height: 44px; border: 0; border-radius: 24px; background: #f0f1f2; padding: 12px 18px; resize: vertical; } +.comment-avatar { color: #aab0b5; font-size: 28px; } +.comment { padding: 14px 0; border-top: 1px solid #eee; } +.comment strong { display: block; } +.comment small { color: var(--muted); } +.related-head { margin-top: 42px; } +.related-grid { grid-template-columns: repeat(2, 1fr); } +.related-grid .file-card { display: grid; grid-template-columns: 155px 1fr; min-height: 145px; } +.related-grid .file-thumb { height: 100%; } + +.panel { border: 1px solid #e0e3e5; border-radius: 18px; background: #fff; padding: 24px; } +.auth-shell { max-width: 500px; margin: 45px auto; } +.auth-shell .panel { border: 0; box-shadow: 0 12px 35px rgba(0,0,0,.20); border-radius: 22px; } +.auth-shell h1 { text-align: center; color: #222; } +.center { text-align: center; } +.form-group { margin-bottom: 16px; } +.form-group label { display: block; margin: 0 0 6px; font-weight: 700; color: #41484f; } +.form-group input, .form-group select, .form-group textarea { width: 100%; border: 1px solid #ccd1d5; border-radius: 4px; padding: 10px 11px; background: #fff; } +.form-group textarea { min-height: 100px; resize: vertical; } +.form-hint, .auth-foot { color: var(--muted); font-size: 12px; } +.auth-foot { text-align: center; margin-top: 18px; } + +.account-layout { display: grid; grid-template-columns: 250px 1fr; gap: 24px; } +.account-nav { padding: 8px 0; min-height: 590px; border-right: 1px solid #e4e6e8; } +.account-nav a { display: block; color: #555e65; padding: 12px 20px; margin: 3px 0; border-radius: 24px 0 0 24px; font-weight: 700; } +.account-nav a:hover, .account-nav a.current { background: #e1f2fd; color: var(--blue-dark); text-decoration: none; } +.account-nav .account-add { display: inline-block; margin: 0 0 14px; padding: 10px 23px; border-radius: 24px; background: var(--blue); color: #fff; box-shadow: 0 4px 10px rgba(7,151,246,.28); } +.account-nav .account-add:hover, .account-nav .account-add.current { background: var(--blue-dark); color: #fff; } +.account-nav-separator { display: block; height: 1px; margin: 14px 20px; background: #e5e7e9; } +.account-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; } +.stat-card { border: 1px solid #e0e3e5; border-radius: 18px; padding: 20px; } +.stat-card strong { display: block; font-size: 24px; } +.stat-card span { color: var(--muted); } +.storage-bar { height: 7px; border-radius: 5px; background: #e6e9eb; overflow: hidden; } +.storage-bar i { display: block; height: 100%; background: var(--blue); } +.file-manager-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 20px; } +.inline-form { display: flex; gap: 8px; } +.inline-form input, .inline-form select { border: 1px solid #ccd2d7; border-radius: 20px; padding: 9px 13px; } +.folder-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 22px; } +.folder-card { padding: 16px; border-radius: 18px; background: #e2f2fc; color: #188bd5; } +.folder-card:hover { text-decoration: none; background: #d5edfc; } +.manager-table { width: 100%; border-collapse: collapse; } +.manager-table th { text-align: left; color: #8b9298; padding: 11px; border-bottom: 1px solid #e4e6e8; } +.manager-table td { padding: 13px 11px; border-bottom: 1px solid #e9ebed; vertical-align: middle; } +.manager-actions { display: flex; gap: 6px; flex-wrap: wrap; } +.manager-actions form { display: inline-flex; gap: 4px; } +.manager-actions button, .manager-actions a { border: 1px solid #d5dade; background: #fff; border-radius: 16px; color: #59636b; padding: 5px 9px; font-size: 11px; } +.manager-actions input, .manager-actions select { border: 1px solid #d5dade; border-radius: 14px; padding: 4px 7px; } +.breadcrumb { color: #7e878e; margin-bottom: 17px; font-size: 18px; } +.empty { padding: 46px; text-align: center; color: #92999f; border: 1px dashed #d4d8db; border-radius: 14px; } +.notice { background: #fff8df; border: 1px solid #efdda3; padding: 13px; border-radius: 7px; color: #776320; } + +.plan-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 420px)); justify-content: center; gap: 22px; } +.plan { border: 1px solid #dfe3e6; border-radius: 18px; padding: 28px; position: relative; background: #fff; } +.plan.recommended { border: 2px solid var(--blue); box-shadow: var(--shadow); } +.plan-badge { position: absolute; top: -11px; right: 20px; color: #fff; background: #ff8b31; border-radius: 13px; padding: 3px 10px; font-size: 10px; } +.plan-price { margin: 14px 0; font-size: 34px; } +.plan-price small { font-size: 12px; color: var(--muted); } +.plan ul { min-height: 150px; padding-left: 20px; color: #59636c; } +.premium-hero { padding: 55px 0 75px; text-align: center; background: radial-gradient(circle at 18% 14%, #eef9ff 0 10%, transparent 28%), radial-gradient(circle at 82% 12%, #eef9ff 0 10%, transparent 28%), #fff; } +.premium-hero > .container > h1 { color: #111; font-size: 32px; margin: 0 0 30px; } +.billing-toggle { display: inline-block; margin-bottom: 32px; } +.billing-toggle span { display: block; color: #ff8b31; font-weight: 700; font-size: 11px; } +.billing-toggle p { margin: 7px 0 0; color: #7d858c; } +.billing-toggle b { color: var(--blue); font-size: 24px; } +.four-plans { grid-template-columns: repeat(4, 1fr); max-width: 1100px; margin: 0 auto; gap: 14px; text-align: left; } +.four-plans .plan { padding: 24px; border-radius: 17px; min-width: 0; } +.four-plans .plan h2 { color: var(--blue); font-size: 17px; } +.four-plans .plan h4 { font-size: 10px; margin-top: 28px; } +.four-plans .plan ul { min-height: 160px; font-size: 12px; line-height: 1.8; } +.plan-current { display: block; background: #f0f1f2; color: #a0a6ab; border-radius: 22px; padding: 10px; text-align: center; font-weight: 700; } +.secure-copy { color: #9aa0a5; font-size: 11px; } +.feature-compare { max-width: 900px; margin: 80px auto 0; } +.feature-compare h2, .premium-faq h2 { color: #111; font-size: 26px; } +.compare-grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr; border: 1px solid #e4e7e9; border-radius: 10px; overflow: hidden; text-align: left; } +.compare-grid > * { padding: 15px 20px; border-bottom: 1px solid #e7e9eb; } +.compare-grid > *:nth-child(3n) { background: #edf8ff; text-align: center; } +.compare-grid > *:nth-child(3n + 2) { text-align: center; } +.premium-faq { max-width: 650px; margin: 70px auto 0; text-align: left; } +.premium-faq h2 { text-align: center; } +.premium-faq details { border-bottom: 1px solid #e6e8ea; padding: 16px; } +.premium-faq summary { font-weight: 700; cursor: pointer; } + +.site-footer { background: var(--footer); color: #fff; padding: 48px 0 28px; } +.footer-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 52px; } +.footer-grid h4 { margin: 0 0 13px; font-size: 13px; } +.footer-grid a { display: block; color: #959da3; margin: 8px 0; font-size: 12px; } +.footer-bottom { display: flex; align-items: end; justify-content: space-between; gap: 25px; margin-top: 75px; } +.footer-brand { color: #fff; } +.footer-brand .brand-four { color: var(--blue); } +.footer-pills { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; } +.footer-pills span { border: 1px solid #4e5860; border-radius: 22px; padding: 8px 15px; font-size: 11px; } + +@media (max-width: 900px) { + .header-search { max-width: none; } + .user-link { max-width: 150px; overflow: hidden; text-overflow: ellipsis; } + .hero-categories { grid-template-columns: repeat(3, 1fr); } + .result-list { grid-template-columns: 1fr; } + .file-grid { grid-template-columns: repeat(2, 1fr); } + .account-layout { grid-template-columns: 190px 1fr; } + .account-card-grid { grid-template-columns: 1fr; } + .folder-grid { grid-template-columns: repeat(2, 1fr); } + .footer-grid { grid-template-columns: repeat(3, 1fr); } +} + +@media (max-width: 600px) { + .container { width: min(100% - 24px, 1170px); } + .topbar { height: 62px; } + .brand { font-size: 21px; } + .brand-four { font-size: 28px; } + .home-topbar .header-actions { right: 12px; } + .signin-pill { padding: 5px 10px; font-size: 11px; } + .header-search { order: 3; flex-basis: 100%; box-shadow: none; } + .topbar:not(.home-topbar) { height: auto; padding: 10px 0; } + .topbar:not(.home-topbar) .topbar-inner { flex-wrap: wrap; gap: 8px; } + .header-search input { padding: 10px 14px; } + .header-search button { font-size: 20px; padding: 2px 13px 5px; } + .user-link { max-width: 115px; font-size: 11px; } + .bell-link { display: none; } + .real-home { min-height: 680px; padding-top: 30px; } + .hero h1 { font-size: 28px; } + .hero p { font-size: 15px; margin-bottom: 25px; } + .hero-search input { padding: 12px 16px; } + .hero-search button { width: 44px; height: 42px; font-size: 20px; } + .drop-zone { min-height: 165px; border-radius: 17px; } + .upload-cloud { width: 80px; height: 53px; font-size: 31px; } + .upload-button { min-width: 170px; padding: 10px 18px; } + .hero-categories { gap: 10px; margin-top: 42px; } + .hero-categories a { height: 92px; border-radius: 14px; gap: 8px; font-size: 11px; } + .hero-categories b { font-size: 26px; } + .cloud { display: none; } + .app-band { padding: 45px 0; } + .app-band h2 { font-size: 25px; } + .app-band p { font-size: 13px; } + .qr-motif { height: 100px; font-size: 80px; } + .app-badges { flex-direction: column; align-items: center; } + .store-badge { min-width: 205px; } + .search-tabs { gap: 7px; padding-bottom: 18px; } + .search-tabs a { padding: 6px 11px; font-size: 11px; } + .result-toolbar { align-items: flex-start; gap: 10px; } + .filters select { max-width: 104px; } + .result-row { min-height: 112px; grid-template-columns: 105px 1fr 36px; border-radius: 16px; } + .result-info { padding: 13px 7px 10px 12px; } + .result-info h3 { font-size: 14px; } + .result-owner { margin-top: 28px; font-size: 10px; } + .result-add { font-size: 21px; } + .media-glyph { font-size: 45px; } + .media-preview { min-height: 215px; border-radius: 15px; } + .waveform { height: 165px; gap: 3px; } + .waveform i { width: 3px; } + .waveform span { font-size: 30px; } + .file-heading { align-items: flex-start; } + .detail-title { font-size: 22px; } + .heart-button { width: 44px; height: 44px; } + .detail-actions { flex-wrap: wrap; } + .detail-actions .primary-button, .detail-actions .secondary-button { padding: 8px 12px; font-size: 11px; } + .comment-form { flex-wrap: wrap; } + .comment-form textarea { flex-basis: calc(100% - 50px); } + .file-grid, .related-grid { grid-template-columns: 1fr; } + .related-grid .file-card { grid-template-columns: 110px 1fr; } + .account-layout { grid-template-columns: 1fr; } + .account-nav { display: flex; overflow-x: auto; min-height: 0; border: 0; gap: 5px; padding: 0 0 12px; } + .account-nav a { flex: 0 0 auto; border-radius: 18px; background: #f3f4f5; padding: 8px 12px; font-size: 11px; } + .panel { padding: 16px; border-radius: 14px; } + .file-manager-toolbar { display: block; } + .inline-form { margin-top: 10px; } + .folder-grid { grid-template-columns: 1fr 1fr; } + .manager-table thead { display: none; } + .manager-table tr { display: block; border: 1px solid #e1e4e6; border-radius: 12px; padding: 8px; margin-bottom: 10px; } + .manager-table td { display: block; border: 0; padding: 5px; } + .manager-actions { display: grid; } + .plan-grid { grid-template-columns: 1fr; } + .four-plans { grid-template-columns: 1fr; } + .footer-grid { grid-template-columns: repeat(2, 1fr); gap: 25px; } + .footer-bottom { display: block; margin-top: 45px; } + .footer-pills { justify-content: flex-start; margin-top: 25px; } +} diff --git a/sites/4shared/static/icons/.gitkeep b/sites/4shared/static/icons/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/sites/4shared/static/icons/mark.svg b/sites/4shared/static/icons/mark.svg new file mode 100644 index 00000000..cf18fbd7 --- /dev/null +++ b/sites/4shared/static/icons/mark.svg @@ -0,0 +1 @@ + diff --git a/sites/4shared/static/js/.gitkeep b/sites/4shared/static/js/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/sites/4shared/static/js/main.js b/sites/4shared/static/js/main.js new file mode 100644 index 00000000..46895be6 --- /dev/null +++ b/sites/4shared/static/js/main.js @@ -0,0 +1 @@ +document.addEventListener("DOMContentLoaded",()=>{const button=document.querySelector(".menu-button");const nav=document.querySelector(".category-nav");if(button&&nav){button.addEventListener("click",()=>{nav.hidden=!nav.hidden;button.setAttribute("aria-expanded",String(!nav.hidden));});}document.querySelectorAll("[data-confirm]").forEach(form=>form.addEventListener("submit",event=>{if(!window.confirm(form.dataset.confirm)){event.preventDefault();}}));}); diff --git a/sites/4shared/tasks.jsonl b/sites/4shared/tasks.jsonl new file mode 100644 index 00000000..218b0dd3 --- /dev/null +++ b/sites/4shared/tasks.jsonl @@ -0,0 +1,20 @@ +{"web_name":"4shared","id":"4shared--0","ques":"Search the Music catalog for nature ambience. Find the track whose detail page says it lasts 10:45, comes from a 48 kHz WAV source, and is normalized to -16 LUFS. Report the exact filename and uploader.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--1","ques":"Browse Images and find the city skyline photo whose detail page lists ISO 200 and an exposure of 1/80 second. Report its exact filename, uploader, and resolution.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--2","ques":"Search Books for classic fiction and inspect the candidates. Which exact filename has 61 chapters and includes a character index? Also report its displayed file size.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--3","ques":"Search broadly for garden planning resources. Inspect the plausible results until you find the PDF whose detail page says it has three planting zones and a maintenance calendar on page 49. Report the filename, page count, and uploader.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--4","ques":"Search broadly for accessibility and design resources. Inspect the plausible results until you find the app package whose detail page mentions a WCAG contrast preview. Report the exact filename, version, and license shown on the page.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--5","ques":"In Videos, compare Open Data Mapping Basics with City Cycling Route Planning by opening both detail pages. Which has the longer runtime, and what are both runtimes?","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--6","ques":"Find The Federalist Papers in Books, verify from its detail page that it contains all 85 essays and a searchable topic index, then use the Download button.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--7","ques":"Log in with alice.j@test.com and password TestPass123!. Find ArchivePeek File Inspector, add it to Favorites, then open Favorites to confirm it is present.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--8","ques":"Log in with alice.j@test.com and password TestPass123!. Find Rain Garden Planting Guide and save it to My 4shared, then open Saved files to confirm it is present.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--9","ques":"Log in with alice.j@test.com and password TestPass123!. Update the account location to Portland, Oregon and the bio to ‘Community archive volunteer and urban sketcher.’","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--10","ques":"Log in with bob.c@test.com and password TestPass123!. In My files, create a new root-level folder named Survey Exports.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--11","ques":"Log in with carol.d@test.com and password TestPass123!. Upload a private file record named accessibility-session-notes.pdf, size 640 KB, with description ‘Notes and action items from the accessibility session.’ into the Work folder.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--12","ques":"Log in with alice.j@test.com and password TestPass123!. Rename Alice Quarterly retreat budget.xlsx to 2027 Retreat Budget.xlsx and move it into the Shared Projects folder.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--13","ques":"Log in with david.k@test.com and password TestPass123!. Open Trash and restore David Old outline.txt.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--14","ques":"Log in with alice.j@test.com and password TestPass123!. Open Alice Field recording notes.docx and create a share link labeled Audio volunteers with Preview and download permission.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--15","ques":"Log in with bob.c@test.com and password TestPass123!. Find Beginner Map Reading Workbook and post the comment ‘The coordinate exercises are ideal for our Saturday workshop.’","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--16","ques":"Log in with bob.c@test.com and password TestPass123!. Upgrade to the annual Premium plan using cardholder Bob Chen and demo card 4242 4242 4242 4242. Confirm the resulting plan and storage allowance from My 4shared.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--17","ques":"Log in with carol.d@test.com and password TestPass123!. Create a root folder named Workshop Handouts, upload a private 384 KB file named spring-workshop-outline.pdf into it with description ‘Draft outline for the spring neighborhood workshop.’, rename it final-spring-workshop-outline.pdf, then create a preview-only share link labeled Planning committee.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--18","ques":"Compare Pride and Prejudice, Anne of Green Gables, and Twenty Thousand Leagues Under the Seas by opening each book’s detail page. Report which has the most pages, its exact page count, and how many chapters it contains; then log in with david.k@test.com and password TestPass123! and save that book to My 4shared.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} +{"web_name":"4shared","id":"4shared--19","ques":"Log in with alice.j@test.com and password TestPass123!. Search broadly for archive metadata resources and inspect the plausible results until you find the document with a 12-week sample schedule and a risk register on page 39. Add it to Favorites, download it, and report its exact filename and total page count.","web":"http://localhost:40023/","upstream_url":"https://www.4shared.com/"} diff --git a/sites/4shared/templates/.gitkeep b/sites/4shared/templates/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/sites/4shared/templates/404.html b/sites/4shared/templates/404.html new file mode 100644 index 00000000..db35406f --- /dev/null +++ b/sites/4shared/templates/404.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}File not found — 4shared{% endblock %}{% block content %}

We couldn't find that file

It may have moved, become private, or returned to its owner’s Trash.

Search all files
{% endblock %} diff --git a/sites/4shared/templates/_account_nav.html b/sites/4shared/templates/_account_nav.html new file mode 100644 index 00000000..e480f94f --- /dev/null +++ b/sites/4shared/templates/_account_nav.html @@ -0,0 +1,12 @@ + diff --git a/sites/4shared/templates/_file_card.html b/sites/4shared/templates/_file_card.html new file mode 100644 index 00000000..4bf4d535 --- /dev/null +++ b/sites/4shared/templates/_file_card.html @@ -0,0 +1,10 @@ + diff --git a/sites/4shared/templates/about.html b/sites/4shared/templates/about.html new file mode 100644 index 00000000..70aa8603 --- /dev/null +++ b/sites/4shared/templates/about.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}About — 4shared{% endblock %}{% block content %}

About 4shared

A search-first file storage and sharing experience.

Search, store and share

4shared brings public-file discovery together with personal cloud storage. People can browse by file category, preview metadata, keep favorites, organize their own folders, and create share links.

About this mirror

This WebHarbor contribution is a deterministic, offline recreation for browser-agent evaluation. Its database and state reset to an identical seed, and its public catalog is limited to benign educational, public-domain, and open-source metadata.

{% endblock %} diff --git a/sites/4shared/templates/account.html b/sites/4shared/templates/account.html new file mode 100644 index 00000000..256266ff --- /dev/null +++ b/sites/4shared/templates/account.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}My 4shared{% endblock %}{% block content %}

Welcome back, {{ current_user.display_name.split()[0] }}

Manage your cloud files and recent activity.

{% endblock %} diff --git a/sites/4shared/templates/account_edit.html b/sites/4shared/templates/account_edit.html new file mode 100644 index 00000000..95eb8e95 --- /dev/null +++ b/sites/4shared/templates/account_edit.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Account settings — 4shared{% endblock %}{% block content %}

Account settings

Keep your public profile information up to date.

{% endblock %} diff --git a/sites/4shared/templates/activity.html b/sites/4shared/templates/activity.html new file mode 100644 index 00000000..6a0c33e4 --- /dev/null +++ b/sites/4shared/templates/activity.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Activity — 4shared{% endblock %}{% block content %}

Activity

Your recent downloads and active share links.

{% endblock %} diff --git a/sites/4shared/templates/base.html b/sites/4shared/templates/base.html new file mode 100644 index 00000000..5c855e09 --- /dev/null +++ b/sites/4shared/templates/base.html @@ -0,0 +1,53 @@ + + + + + + {% block title %}4shared — free file sharing and storage{% endblock %} + + + + +
+
+ 4shared + {% if request.endpoint != 'index' or current_user.is_authenticated %} + + {% endif %} + +
+
+
+
+ {% for category, message in get_flashed_messages(with_categories=true) %}
{{ message }}
{% endfor %} +
+ {% block content %}{% endblock %} +
+ + + + diff --git a/sites/4shared/templates/category.html b/sites/4shared/templates/category.html new file mode 100644 index 00000000..1d2e11b0 --- /dev/null +++ b/sites/4shared/templates/category.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}{{ category }} files — 4shared{% endblock %}{% block content %}

{{ category }}

Browse safe public {{ category|lower }} files, ordered by community activity.

{% for file in files %}{% include '_file_card.html' %}{% endfor %}
{% endblock %} diff --git a/sites/4shared/templates/download_ready.html b/sites/4shared/templates/download_ready.html new file mode 100644 index 00000000..13774125 --- /dev/null +++ b/sites/4shared/templates/download_ready.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Download ready — 4shared{% endblock %}{% block content %}

Your download is ready

{{ file.filename }}

This offline mirror records the download but does not transfer executable or user-hosted content.

Return to file
{% endblock %} diff --git a/sites/4shared/templates/favorites.html b/sites/4shared/templates/favorites.html new file mode 100644 index 00000000..7e028336 --- /dev/null +++ b/sites/4shared/templates/favorites.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% set heading=title|default('Favorites') %}{% block title %}{{ heading }} — 4shared{% endblock %}{% block content %}

{{ heading }}

Files you kept for quick access.

{% endblock %} diff --git a/sites/4shared/templates/file_detail.html b/sites/4shared/templates/file_detail.html new file mode 100644 index 00000000..db97e780 --- /dev/null +++ b/sites/4shared/templates/file_detail.html @@ -0,0 +1,23 @@ +{% extends 'base.html' %} +{% block title %}{{ file.filename }} — 4shared{% endblock %} +{% block content %} +
+
+ {% if file.thumbnail %}{{ file.stem }}{% elif file.category in ['Music','Video'] %}
{% else %}{{ file.extension }}{% endif %} +
+
+
{{ file.uploader_name }}

{{ file.filename }}

● {{ file.uploader_name }}  in  ▰ My 4shared   {{ file.uploaded_at.strftime('%b %d, %Y') }}

{{ file.extension|upper }}{{ file.size_bytes|filesize }}{{ file.category }}{{ file.license_name }}
+ {% if current_user.is_authenticated %}
{% endif %} +
+
+ ↗  Open in… + {% if current_user.is_authenticated %}
{% else %}+  To library{% endif %} +
+ {% if current_user.is_authenticated %}⌯  Share{% else %}⌯  Share{% endif %} +
+

About this file

{{ file.description }}

{{ file.preview_text }}
+

Comments {{ file.comments|length }}

{% if current_user.is_authenticated %}
{% else %}

Log in to comment.

{% endif %}{% for comment in file.comments %}
{{ comment.user.display_name }}{{ comment.created_at.strftime('%b %d, %Y') }}

{{ comment.body }}

{% endfor %}
+ + +
+{% endblock %} diff --git a/sites/4shared/templates/help.html b/sites/4shared/templates/help.html new file mode 100644 index 00000000..3722c4cf --- /dev/null +++ b/sites/4shared/templates/help.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Help and FAQ — 4shared{% endblock %}{% block content %}

How can we help?

Quick answers for searching, uploading, organizing, and sharing.

Search public files

Use one or several keywords, a topic, file extension, or category. Shorter queries often produce broader results.

Upload and organize

Sign in, choose Upload, add file details, and select a destination folder. You can rename or move it later.

Share a file

Open a file, choose Share file, then create a preview-only or download-enabled link.

Restore from Trash

Deleted files remain in Trash. Open Trash from My 4shared and choose Restore beside the file.

Preview formats

Images display directly. Music, video, books, documents, apps, and archives show descriptive preview metadata.

Free storage

Free accounts include 15 GB. Premium accounts in this mirror include 100 GB and faster-access features.

Convert documents

The source site links to PDF conversion tools for DOC, DOCX, PPT, PPTX, XLS, and XLSX formats. Conversion is informational in this offline mirror.

Safe benchmark content

All catalog records are benign educational or open-cultural metadata. No executable or user-hosted bytes are served.

{% endblock %} diff --git a/sites/4shared/templates/index.html b/sites/4shared/templates/index.html new file mode 100644 index 00000000..c1cff1b0 --- /dev/null +++ b/sites/4shared/templates/index.html @@ -0,0 +1,26 @@ +{% extends 'base.html' %} +{% block content %} +
+
+
+

Search, store and share easily

+

All your files: music, videos, apps and more

+ +
or
+ + + Drop files here or + Upload files + +
+ {% set icons = {'Music':'♫','Video':'▷','Apps':'♙','Images':'▧','Books':'▥'} %} + {% for item in ['Music','Video','Apps','Images','Books'] %}{{ icons[item] }}{{ item }}{% endfor %} + All Files +
+
+
+

Get 4shared App

Offline access  •  Faster downloads  •  Real-time updates

GET IT ONGoogle PlayDownload on theApp StoreExplore it onAppGallery
+{% endblock %} diff --git a/sites/4shared/templates/login.html b/sites/4shared/templates/login.html new file mode 100644 index 00000000..c5d52479 --- /dev/null +++ b/sites/4shared/templates/login.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Log in — 4shared{% endblock %}{% block content %}

Log in to 4shared

Access your files, folders, favorites, and share links.

New to 4shared? Sign up for free

{% endblock %} diff --git a/sites/4shared/templates/my_files.html b/sites/4shared/templates/my_files.html new file mode 100644 index 00000000..33c9d79c --- /dev/null +++ b/sites/4shared/templates/my_files.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}My files — 4shared{% endblock %}{% block content %}

My files

Organize your uploads into folders and create share links.

{% endblock %} diff --git a/sites/4shared/templates/premium.html b/sites/4shared/templates/premium.html new file mode 100644 index 00000000..1a4caaff --- /dev/null +++ b/sites/4shared/templates/premium.html @@ -0,0 +1,17 @@ +{% extends 'base.html' %} +{% block title %}4shared Premium - Choose Your Plan{% endblock %} +{% block content %} +
+

Expand your storage with 4shared Premium

+
GET 15% OFF WITH YEARLY

Monthly     Yearly

+
+

Free 15 GB

$0
Current plan

INCLUDES

  • 15 GB of free storage
  • Priority download
  • No credit card required
+

Premium 100 GB

$6.49 / month
Choose annual

EVERYTHING IN FREE +

  • 100 GB of storage
  • Ads-free browsing
  • Direct downloads
  • File and account statistics
+ +

Premium 1 TB

$39.99 / year
Select

EVERYTHING IN 500 GB +

  • 1 TB of storage
  • File backup and restore
  • Premium support
+
+

Cancel anytime. Secure payment through the benchmark checkout.

+

Compare features and plans

AccountFreePremiumStorage space15 GB100 GB, 500 GB, 1 TBBandwidth limitation×100 GB monthlyAds-free experience×Maximum upload size2 GB100 GBSupportRegular updatesPremium support×
+

Frequently asked questions

{% for q in ['How do you process payment?','How can I cancel my subscription?','How does renewal work?','What happens to my files if I downgrade or cancel?','What is your refund policy?'] %}
{{ q }}

This offline mirror simulates the workflow without processing a real payment.

{% endfor %}
+
+{% endblock %} diff --git a/sites/4shared/templates/premium_checkout.html b/sites/4shared/templates/premium_checkout.html new file mode 100644 index 00000000..fd5e9ccc --- /dev/null +++ b/sites/4shared/templates/premium_checkout.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Premium checkout — 4shared{% endblock %}{% block content %}

Upgrade to Premium

{{ period|title }} plan · ${{ '%.2f'|format(amount) }} {{ 'per month' if period == 'monthly' else 'per year' }}

Benchmark checkout only. Use demo card 4242 4242 4242 4242; no payment is processed.
{% endblock %} diff --git a/sites/4shared/templates/premium_confirmed.html b/sites/4shared/templates/premium_confirmed.html new file mode 100644 index 00000000..fe655675 --- /dev/null +++ b/sites/4shared/templates/premium_confirmed.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Premium activated — 4shared{% endblock %}{% block content %}

Premium activated

Your {{ order.billing_period }} plan is active. Your account now includes 100 GB of storage.

Order {{ order.id }} · card ending {{ order.card_last4 }}

Go to My 4shared
{% endblock %} diff --git a/sites/4shared/templates/preview.html b/sites/4shared/templates/preview.html new file mode 100644 index 00000000..5c06dc23 --- /dev/null +++ b/sites/4shared/templates/preview.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Preview {{ file.filename }} — 4shared{% endblock %}{% block content %}

Preview: {{ file.filename }}

{% if file.thumbnail %}{{ file.stem }}{% else %}
{{ file.extension }}

{{ file.preview_text }}

{% endif %}
{% endblock %} diff --git a/sites/4shared/templates/register.html b/sites/4shared/templates/register.html new file mode 100644 index 00000000..a7b1bb8b --- /dev/null +++ b/sites/4shared/templates/register.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Sign up — 4shared{% endblock %}{% block content %}

Get 15 GB free

Create an account to upload, organize, and share files.

At least 8 characters.

Already registered? Log in

{% endblock %} diff --git a/sites/4shared/templates/search.html b/sites/4shared/templates/search.html new file mode 100644 index 00000000..b21ff600 --- /dev/null +++ b/sites/4shared/templates/search.html @@ -0,0 +1,30 @@ +{% extends 'base.html' %} +{% block title %}{% if query %}{{ query }} - {% endif %}4shared - free file sharing and storage{% endblock %} +{% block content %} +
+
+ All + {% for item in ['Music','Video','Apps','Images','Books','Archives'] %}{{ item }}{% endfor %} +
+
+ {{ files|length }} files +
+ + + + +
+
+
+ {% for file in files %} + + {% else %}
No files matched. Try fewer words or another category.
{% endfor %} +
+
+{% endblock %} diff --git a/sites/4shared/templates/share.html b/sites/4shared/templates/share.html new file mode 100644 index 00000000..8b78d9a8 --- /dev/null +++ b/sites/4shared/templates/share.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Share {{ file.filename }} — 4shared{% endblock %}{% block content %}

Share file

Create a link to {{ file.filename }}.

{% endblock %} diff --git a/sites/4shared/templates/shared.html b/sites/4shared/templates/shared.html new file mode 100644 index 00000000..b5054084 --- /dev/null +++ b/sites/4shared/templates/shared.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}{{ file.filename }} shared on 4shared{% endblock %}{% block content %}
{{ file.extension }}

{{ file.filename }}

{{ file.description }}

Preview{% if link.permission == 'download' %}
{% endif %}
{% endblock %} diff --git a/sites/4shared/templates/trash.html b/sites/4shared/templates/trash.html new file mode 100644 index 00000000..89da4452 --- /dev/null +++ b/sites/4shared/templates/trash.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Trash — 4shared{% endblock %}{% block content %}

Trash

Restore files you moved out of My files.

{% endblock %} diff --git a/sites/4shared/templates/upload.html b/sites/4shared/templates/upload.html new file mode 100644 index 00000000..d717d169 --- /dev/null +++ b/sites/4shared/templates/upload.html @@ -0,0 +1 @@ +{% extends 'base.html' %}{% block title %}Upload files — 4shared{% endblock %}{% block content %}

Upload files

Create a safe file record in this offline benchmark environment.

{% endblock %} From 067fc0024b9e0cdc606ce46b67b0c576d1b05840 Mon Sep 17 00:00:00 2001 From: Peichun Hua Date: Wed, 9 Sep 2026 14:53:43 -0400 Subject: [PATCH 02/10] fix(4shared): harden mirror and replace placeholder assets --- review-reports/PR-90-FINAL-AUDIT.md | 89 ++++++++++++++++++ .../assets/pr-90-4shared-homepage-1440.png | Bin 0 -> 156842 bytes .../assets/pr-90-4shared-homepage-390.png | Bin 0 -> 118842 bytes sites/4shared/ASSET_SOURCES.md | 55 ++++++++--- sites/4shared/app.py | 70 +++++++++++--- sites/4shared/seed_data.py | 37 +++++++- sites/4shared/static/css/main.css | 41 +++++--- sites/4shared/templates/_account_nav.html | 2 +- sites/4shared/templates/base.html | 8 +- sites/4shared/templates/blog.html | 13 +++ sites/4shared/templates/converter.html | 14 +++ sites/4shared/templates/index.html | 4 +- sites/4shared/templates/premium.html | 6 +- sites/4shared/templates/premium_checkout.html | 2 +- .../4shared/templates/premium_confirmed.html | 2 +- sites/4shared/templates/press_room.html | 14 +++ sites/4shared/templates/upload.html | 2 +- 17 files changed, 307 insertions(+), 52 deletions(-) create mode 100644 review-reports/PR-90-FINAL-AUDIT.md create mode 100644 review-reports/assets/pr-90-4shared-homepage-1440.png create mode 100644 review-reports/assets/pr-90-4shared-homepage-390.png create mode 100644 sites/4shared/templates/blog.html create mode 100644 sites/4shared/templates/converter.html create mode 100644 sites/4shared/templates/press_room.html diff --git a/review-reports/PR-90-FINAL-AUDIT.md b/review-reports/PR-90-FINAL-AUDIT.md new file mode 100644 index 00000000..a6786f8e --- /dev/null +++ b/review-reports/PR-90-FINAL-AUDIT.md @@ -0,0 +1,89 @@ +# PR #90 final audit — 4shared + +## Result + +**PASS — 20/20 tasks, 252 visible-browser steps, 0 unresolved findings.** + +The review was rerun against the packaged `webharbor:dev` image after all +remediation. Every task started from the configured homepage, used Playwright +visible-element locators, and finished with a persistence check. The site was +reset before and after every task; every reset restored a byte-identical +runtime/seed pair with MD5 `b577adc216900a6f0e3974a80e51c04c`. + +Complete action traces and task screenshots are retained outside the +agent-visible repository to avoid creating answer-bearing benchmark artifacts. +The table below records sanitized endpoints and evidence classes. + +## Per-task review + +| Task | Steps | Screenshot | URL | Issue | Evidence | Impact | Severity | Reproduction | +| --- | ---: | --- | --- | --- | --- | --- | --- | --- | +| 4shared--0 | 15 | `4shared--0-15-reload-persistence-check.png` | `/file/` | None — PASS | Search, category filter, candidate inspection, metadata comparison, reload | Requested identification remained visible | None | Reset → homepage → follow task | +| 4shared--1 | 24 | `4shared--1-24-reload-persistence-check.png` | `/file/` | None — PASS | Images browse, multiple detail inspections, metadata comparison, reload | Requested image evidence remained visible | None | Reset → homepage → follow task | +| 4shared--2 | 7 | `4shared--2-07-reload-persistence-check.png` | `/file/` | None — PASS | Search, category filter, detail inspection, reload | Requested book comparison completed | None | Reset → homepage → follow task | +| 4shared--3 | 15 | `4shared--3-15-reload-persistence-check.png` | `/file/` | None — PASS | Broad search, candidate inspection, detail verification, reload | Multi-clue identification completed | None | Reset → homepage → follow task | +| 4shared--4 | 7 | `4shared--4-07-reload-persistence-check.png` | `/file/` | None — PASS | Broad search, candidate inspection, license/detail verification | Multi-clue identification completed | None | Reset → homepage → follow task | +| 4shared--5 | 6 | `4shared--5-06-reload-persistence-check.png` | `/file/` | None — PASS | Category browse, both detail pages opened, runtimes compared | Cross-item comparison completed | None | Reset → homepage → follow task | +| 4shared--6 | 6 | `4shared--6-06-reload-persistence-check.png` | `/download/` | None — PASS | Six-result search, target at position 6, detail check, download confirmation | Download state changed exactly as requested | None | Reset → homepage → follow task | +| 4shared--7 | 12 | `4shared--7-12-reload-persistence-check.png` | `/favorites` | None — PASS | Login, eight-result search, target at position 6, favorite, reload | Favorite persisted for the requested account | None | Reset → homepage → follow task | +| 4shared--8 | 12 | `4shared--8-12-reload-persistence-check.png` | `/saved` | None — PASS | Login, search, save, Saved files navigation, reload | Saved-file state persisted | None | Reset → homepage → follow task | +| 4shared--9 | 11 | `4shared--9-11-reload-persistence-check.png` | `/account/edit` | None — PASS | Login, profile fields edited, saved, reopened, reloaded | Both account fields persisted | None | Reset → homepage → follow task | +| 4shared--10 | 9 | `4shared--10-09-reload-persistence-check.png` | `/my-files` | None — PASS | Login, root folder creation, reload | Folder persisted at root | None | Reset → homepage → follow task | +| 4shared--11 | 12 | `4shared--11-12-reload-persistence-check.png` | `/my-files?folder=` | None — PASS | Login, upload form, folder/size/description, Documents classification, reload | Private PDF metadata persisted consistently | None | Reset → homepage → follow task | +| 4shared--12 | 12 | `4shared--12-12-reload-persistence-check.png` | `/my-files?folder=` | None — PASS | Login, source folder, rename, move, destination verification, reload | Name and folder changed together | None | Reset → homepage → follow task | +| 4shared--13 | 9 | `4shared--13-09-reload-persistence-check.png` | `/my-files` | None — PASS | Login, Recycle Bin, restore, root verification, reload | Restored file persisted outside Trash | None | Reset → homepage → follow task | +| 4shared--14 | 13 | `4shared--14-13-reload-persistence-check.png` | `/file//share` | None — PASS | Login, private file navigation, label/permission submission, reload | Share-link state persisted | None | Reset → homepage → follow task | +| 4shared--15 | 11 | `4shared--15-11-reload-persistence-check.png` | `/file/` | None — PASS | Login, public search, detail, comment submission, reload | Exact comment persisted | None | Reset → homepage → follow task | +| 4shared--16 | 12 | `4shared--16-12-reload-persistence-check.png` | `/account` | None — PASS | Login, annual 100GB selection, demo checkout, account reload | Plan and storage allowance persisted | None | Reset → homepage → follow task | +| 4shared--17 | 22 | `4shared--17-22-reload-persistence-check.png` | `/file//share` | None — PASS | Folder create, auto-classified PDF upload, rename, preview-only share, reload | All dependent state changes persisted | None | Reset → homepage → follow task | +| 4shared--18 | 21 | `4shared--18-21-reload-persistence-check.png` | `/saved` | None — PASS | Three detail pages compared, login, selected book saved, reload | Comparison and saved state completed | None | Reset → homepage → follow task | +| 4shared--19 | 16 | `4shared--19-16-reload-persistence-check.png` | `/favorites` | None — PASS | Login, broad search, candidate inspection, favorite, download, reload | Both requested mutations persisted | None | Reset → homepage → follow task | + +## Hardening audit + +- **De-leak:** search results expose titles and summary metadata, not decisive + detail facts. Full task trajectories are not committed. Exact-name action + tasks 6 and 7 now have 6 and 8 results respectively, with each target at + position 6. +- **Distractors:** broad searches used by the tasks return 6–40 plausible + candidates. Near matches deliberately differ in detail metadata or package + purpose. +- **Catalog breadth:** 122 public records cover Music, Video, Apps, Images, + Books, Documents, and Archives. All 16 image records use real, locally served + photographs. +- **Cross-field consistency:** filenames, extensions, categories, MIME-facing + behavior, plan names, plan prices, storage allowances, saved-state labels, + and upload classification were checked across list, detail, confirmation, + and account pages. +- **Known leak archetypes:** no prompt-embedded answer, target-count badge, + decisive result-card fact, pre-sorted unique target, first-item target, + insufficient candidate set, direct-route dependency, self-reported-only + completion, visit-only completion, broad mutation, cross-user mutation, + reset drift, or answer-bearing repository artifact remains. + +## Visual and functional validation + +- 51 responsive page checks: 17 representative pages at 1440×900, 390×844, + and 320×720. +- Zero document overflow, broken images, stretched images, out-of-bounds + controls, or unresolved title truncation. +- Seven supplementary flows pass: signed-out upload entry, registration, + re-login, 500GB checkout selection, 1TB checkout selection, three distinct + footer destinations, and explicit public-search scope while authenticated. +- Homepage uses the captured 4shared upload illustration, real mobile-app QR + code/frame, and source store logos. Asset provenance is recorded in + `sites/4shared/ASSET_SOURCES.md`. +- Fresh deterministic seed: 146 files total (122 public), 4 users, 16 folders, + 16 favorites, 12 saved files, 8 downloads, 12 comments, 4 share links, and + 1 plan order. Calling both seed functions twice leaves counts unchanged. + +## PR-safe screenshots + +Only non-answer-bearing homepage screenshots are committed for PR display: + +- `review-reports/assets/pr-90-4shared-homepage-1440.png` +- `review-reports/assets/pr-90-4shared-homepage-390.png` + +The Hugging Face asset PR must merge before `.assets-revision` can be pinned to +its immutable commit. No GitHub or Hugging Face merge is performed by this +review. diff --git a/review-reports/assets/pr-90-4shared-homepage-1440.png b/review-reports/assets/pr-90-4shared-homepage-1440.png new file mode 100644 index 0000000000000000000000000000000000000000..e66785569d357a6aa3b226ac0e50e41f4452b89f GIT binary patch literal 156842 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

(o$hn| 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 HvU~i$NXdTA literal 0 HcmV?d00001 diff --git a/review-reports/assets/pr-90-4shared-homepage-390.png b/review-reports/assets/pr-90-4shared-homepage-390.png new file mode 100644 index 0000000000000000000000000000000000000000..a43673ddcf072813938b3cbf94decb02e5517e46 GIT binary patch literal 118842 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∈!l_4M>~bo?F`7Ix;Ly;C@E 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

gD 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/share", methods=["GET", "POST"]) @@ -618,24 +637,26 @@ def premium(): @app.route("/premium/checkout", methods=["GET", "POST"]) @login_required def premium_checkout(): - periods = {"monthly": 9.95, "annual": 77.88} - period = request.values.get("period", "annual") - if period not in periods: - period = "annual" + plan_key = request.values.get("plan", "100") + if plan_key not in PREMIUM_PLANS: + plan_key = "100" + plan = PREMIUM_PLANS[plan_key] + period = "annual" + amount = plan[period] if request.method == "POST": card = re.sub(r"\D", "", request.form.get("card_number", "")) holder = request.form.get("cardholder", "").strip() if len(card) != 16 or len(holder) < 2: flash("Enter the demo 16-digit card number and cardholder name.", "error") else: - order = PlanOrder(user_id=current_user.id, plan_name="Premium", billing_period=period, - amount=periods[period], card_last4=card[-4:], created_at=datetime.utcnow()) - current_user.plan = "Premium" - current_user.storage_limit_mb = 102400 + order = PlanOrder(user_id=current_user.id, plan_name=plan["label"], billing_period=period, + amount=amount, card_last4=card[-4:], created_at=datetime.utcnow()) + current_user.plan = plan["account_plan"] + current_user.storage_limit_mb = plan["storage_mb"] db.session.add(order) db.session.commit() - return render_template("premium_confirmed.html", order=order) - return render_template("premium_checkout.html", period=period, amount=periods[period]) + return render_template("premium_confirmed.html", order=order, plan=plan) + return render_template("premium_checkout.html", period=period, amount=amount, plan=plan, plan_key=plan_key) @app.get("/help") @@ -648,6 +669,31 @@ def about(): return render_template("about.html") +@app.get("/press-room") +def press_room(): + return render_template("press_room.html") + + +@app.get("/blog") +def blog(): + return render_template("blog.html") + + +@app.route("/convert/-to-pdf", methods=["GET", "POST"]) +def convert_to_pdf(source_format: str): + allowed_formats = {"doc", "pptx", "docx", "xls", "ppt", "xlsx", "cbr", "txt", "pps", "rtf", "cbz", "fb2", "epub", "djvu"} + if source_format not in allowed_formats: + abort(404) + converted_name = None + if request.method == "POST": + filename = request.form.get("filename", "").strip()[:220] + if not filename.lower().endswith(f".{source_format}"): + flash(f"Choose a .{source_format} file record to convert.", "error") + else: + converted_name = f"{filename.rsplit('.', 1)[0]}.pdf" + return render_template("converter.html", source_format=source_format, converted_name=converted_name) + + @app.get("/_health") def health(): return {"ok": True, "site": SITE_SLUG, "files": public_files_query().count()} diff --git a/sites/4shared/seed_data.py b/sites/4shared/seed_data.py index 69514ceb..acbdb8ab 100644 --- a/sites/4shared/seed_data.py +++ b/sites/4shared/seed_data.py @@ -90,6 +90,11 @@ def _app_module(): ("AudioTag Library Tool", "Edit common audio metadata fields and organize albums.", "music audio tags organizer", "Version 4.1.1 · reads ID3 and Vorbis comments."), ("StudyTimer Focus Utility", "A simple configurable focus and break timer.", "timer study focus productivity", "Version 1.6.3 · three color themes · CSV session export."), ("ArchivePeek File Inspector", "Browse archive contents and checksums before extraction.", "archive zip checksum utility", "Version 2.2.4 · ZIP, TAR, and 7z read support."), + ("ArchivePeek File Inspector Legacy Build", "An archived compatibility build of the file inspector for older systems.", "archive file inspector legacy compatibility", "Version 1.7.9 · ZIP-only inspection · no checksum comparison."), + ("ArchivePeek File Inspector Checksums Add-on", "Optional checksum definitions for ArchivePeek deployments.", "archive file inspector checksum addon", "Version 2.1.0 · definitions package only · requires the main application."), + ("ArchivePeek File Inspector Portable Notes", "Release notes and deployment examples for portable ArchivePeek installations.", "archive file inspector portable documentation", "Version 2.2 notes · documentation package · contains no executable."), + ("ArchivePeek File Inspector Recovery Plug-in", "A recovery plug-in for damaged archive headers.", "archive file inspector recovery plugin", "Version 0.6.3 · experimental plug-in · TAR recovery only."), + ("ArchivePeek File Inspector Test Fixtures", "Sample archives for validating file-inspection workflows.", "archive file inspector test fixtures", "Version 2026.4 · 42 synthetic fixtures · not an application installer."), ("ColorScope Palette Assistant", "Inspect colors and create accessible palette combinations.", "design color accessibility palette", "Version 5.0.0 · WCAG contrast preview · GPL-3.0."), ("PocketWeather Sample Client", "Demonstration client for an open weather-data endpoint.", "weather sample api client", "Version 0.9.8 · demo data works offline · MIT license."), ("BookShelf EPUB Catalog", "Catalog local EPUB metadata and reading status.", "books epub catalog library", "Version 3.0.1 · OPF metadata import · local database only."), @@ -111,15 +116,15 @@ def _app_module(): ("Library Reading Room Windows", "Tall windows and long study tables in a historic reading room.", "library architecture reading room", "Resolution 2400 × 1600 · natural light · no people."), ("Atlantic Coast Boardwalk", "Weathered boards leading through dunes toward the sea.", "ocean coast boardwalk landscape", "Resolution 3000 × 2000 · late afternoon · focal length 35 mm."), ("Community Garden Pollinators", "Bees visiting purple flowers in a neighborhood garden.", "garden flowers bees nature", "Resolution 2200 × 1467 · macro crop · photographed in July."), - ("Alpine Lake Morning Mist", "Thin mist lifting from a mountain lake at sunrise.", "mountain lake mist sunrise", "Resolution 3200 × 2133 · tripod capture · 06:21 local time."), + ("Grand Lake Sunrise", "Warm sunrise light over a mountain lake and surrounding ridges.", "mountain lake sunrise colorado", "Resolution 3200 × 2133 · tripod capture · 06:21 local time."), ("Ceramic Studio Workbench", "Tools, clay, and unfinished vessels on a working studio table.", "ceramics art studio craft", "Resolution 2600 × 1733 · window light · documentary series."), ("Red Bicycle by Brick Wall", "A city bicycle parked beside a warm red-brick facade.", "bicycle city street red", "Resolution 2400 × 1600 · 50 mm lens · overcast light."), ("Winter Pines After Snow", "Fresh snow resting on dense evergreen branches.", "winter snow trees forest", "Resolution 3000 × 2000 · temperature -6°C · polarizing filter."), - ("Open Notebook and Fountain Pen", "A clean desk scene with handwritten project notes.", "notebook desk writing productivity", "Resolution 2400 × 1600 · overhead composition · daylight."), + ("Music Notebook and Fountain Pen", "A patterned music notebook and fountain pen arranged on a wooden desk.", "notebook fountain pen desk music", "Resolution 2400 × 1600 · overhead composition · daylight."), ("Harbor Boats in Morning Fog", "Small sailboats emerging through pale harbor fog.", "harbor boats fog water", "Resolution 2800 × 1867 · 85 mm lens · photographed at 07:03."), ("Wildflower Trail in Spring", "A narrow hillside trail lined with yellow and blue flowers.", "wildflowers trail spring hiking", "Resolution 3200 × 2133 · elevation 1,120 m · April capture."), ("Classic Camera Detail", "Close view of the controls on a restored mechanical camera.", "camera vintage photography detail", "Resolution 2500 × 1667 · focus-stacked from six frames."), - ("Rainy Window City Lights", "Defocused evening traffic seen through raindrops on glass.", "rain city lights abstract", "Resolution 2400 × 1600 · 50 mm lens · manual focus."), + ("Rainy City Street at Night", "Wet pavement and storefront lights on a quiet city street after dark.", "rain city street night lights", "Resolution 2400 × 1600 · available-light photograph · monochrome."), ("Map and Compass Flat Lay", "A paper trail map, field compass, and pencil arranged for a hike.", "map compass hiking navigation", "Resolution 3000 × 2000 · overhead studio light · north arrow visible."), ], }, @@ -138,6 +143,11 @@ def _app_module(): ("The Jungle Book", "Stories and poems in a navigable illustrated edition.", "classic stories kipling jungle", "246 pages · 14 illustrations · poems indexed separately."), ("Meditations Public Domain Translation", "A clear English translation arranged by book and section.", "philosophy stoicism marcus aurelius", "192 pages · 12 books · searchable section numbers."), ("The Federalist Papers", "All 85 essays with author and topic index.", "history politics essays constitution", "672 pages · 85 essays · searchable topic index."), + ("The Anti-Federalist Papers Selection", "A selected set of arguments opposing ratification, with editorial context.", "history politics essays constitution federalist papers", "244 pages · 24 selected essays · chronological reading list."), + ("Federalist Papers Study Questions", "Classroom prompts organized around major constitutional themes.", "history politics education federalist papers", "118 pages · 60 study questions · instructor notes appendix."), + ("Federalist Papers Author Concordance", "A reference concordance comparing commonly attributed authorship.", "history politics reference federalist papers", "206 pages · author tables · no full essay text."), + ("Federalist Papers Historical Reader", "Speeches, letters, and newspaper extracts from the ratification debate.", "history politics primary sources federalist papers", "356 pages · 41 source extracts · timeline included."), + ("Federalist Papers Constitutional Index", "A subject index linking constitutional clauses to related debates.", "history politics constitution federalist papers", "174 pages · clause index · cross-references only."), ("Grimms Household Tales Selection", "Thirty selected tales in a reflowable reading edition.", "fairy tales folklore grimm", "318 pages · 30 tales · content notes included."), ("The Souls of Black Folk", "Du Bois's landmark essays with preserved musical epigraphs.", "history essays sociology du bois", "286 pages · 14 essays · musical bars encoded as images."), ("Leaves of Grass 1892 Edition", "The deathbed edition with section-level navigation.", "poetry whitman american", "476 pages · 17 sections · line breaks preserved."), @@ -188,7 +198,24 @@ def _app_module(): }, } -THUMBNAILS = ["images/london.jpg", "images/new-york.jpg", "images/denali.jpg"] +THUMBNAILS = [ + "images/london.jpg", + "images/new-york.jpg", + "images/denali.jpg", + "images/library-reading-room.jpg", + "images/atlantic-boardwalk.jpg", + "images/garden-pollinators.jpg", + "images/alpine-lake-mist.jpg", + "images/ceramic-workbench.jpg", + "images/red-bicycle-brick-wall.jpg", + "images/winter-pines-snow.jpg", + "images/notebook-fountain-pen.jpg", + "images/harbor-boats-fog.jpg", + "images/wildflower-trail.jpg", + "images/classic-camera.jpg", + "images/rainy-window-lights.jpg", + "images/map-compass.jpg", +] def seed_database(): @@ -200,7 +227,7 @@ def seed_database(): for index, (title, description, tags, detail) in enumerate(spec["items"]): filename = f"{title}.{spec['ext']}" thumbnail = "" - if category == "Images" and index < len(THUMBNAILS): + if category == "Images": thumbnail = THUMBNAILS[index] item = FileItem( id=file_id, diff --git a/sites/4shared/static/css/main.css b/sites/4shared/static/css/main.css index 11c95bfa..f0acbec3 100644 --- a/sites/4shared/static/css/main.css +++ b/sites/4shared/static/css/main.css @@ -58,7 +58,7 @@ button, input, select, textarea { font: inherit; } .or-separator { margin: 15px 0; color: #333; font-weight: 700; } .drop-zone { width: min(750px, 100%); min-height: 225px; margin: 0 auto; border: 2px dashed var(--blue); border-radius: 24px; display: flex; align-items: center; justify-content: center; flex-direction: column; color: var(--blue); background: rgba(237,249,255,.55); } .drop-zone:hover { text-decoration: none; background: rgba(255,255,255,.75); } -.upload-cloud { display: grid; place-items: center; width: 112px; height: 74px; margin-bottom: 10px; border: 3px solid var(--blue); border-radius: 50px; background: #dff3ff; font-size: 45px; line-height: 1; } +.upload-artwork { width: 170px; height: 70px; object-fit: contain; margin-bottom: 10px; } .upload-button { display: inline-flex; justify-content: center; min-width: 235px; padding: 13px 25px; margin-top: 18px; border-radius: 26px; background: var(--blue); color: #fff; font-weight: 700; } .hero-categories { display: grid; grid-template-columns: repeat(6, 1fr); gap: 35px; margin: 75px auto 0; max-width: 1120px; } .hero-categories a { height: 152px; border: 1px solid #d9dde0; border-radius: 22px; background: rgba(255,255,255,.94); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; color: #3f464c; box-shadow: 0 1px 3px rgba(0,0,0,.06); } @@ -73,9 +73,14 @@ button, input, select, textarea { font: inherit; } .app-band { text-align: center; padding: 65px 0 80px; background: #fff; } .app-band h2 { margin: 0; font-size: 31px; color: #090909; } .app-band p { color: #999fa5; font-size: 17px; font-weight: 700; } -.qr-motif { display: grid; place-items: center; color: #0b0b0b; font-size: 115px; line-height: 1; height: 150px; } +.qr-motif { position: relative; width: 160px; height: 160px; margin: 20px auto 0; } +.qr-motif img { position: absolute; display: block; } +.qr-frame { inset: 0; width: 160px; height: 160px; } +.qr-code { inset: 16px; width: 128px; height: 128px; } .app-badges { display: flex; justify-content: center; gap: 16px; margin-top: 22px; } -.store-badge { min-width: 215px; background: #22282d; color: white; border-radius: 28px; padding: 10px 22px; display: inline-flex; flex-direction: column; line-height: 1.1; text-align: left; } +.store-badge { min-width: 215px; background: #22282d; color: white; border-radius: 28px; padding: 10px 22px; display: inline-flex; align-items: center; justify-content: center; gap: 10px; line-height: 1.1; text-align: left; } +.store-badge > img { width: 25px; height: 25px; object-fit: contain; } +.store-badge > span { display: flex; flex-direction: column; } .store-badge small { font-size: 9px; } .store-badge strong { font-size: 15px; } @@ -116,7 +121,7 @@ button, input, select, textarea { font: inherit; } .file-thumb { height: 126px; display: flex; align-items: center; justify-content: center; background: #7dc4f3; overflow: hidden; } .file-thumb img { width: 100%; height: 100%; object-fit: cover; } .file-icon { display: grid; place-items: center; width: 58px; height: 70px; border: 2px solid rgba(255,255,255,.85); border-radius: 8px; color: #fff; text-transform: uppercase; font-size: 11px; } -.file-card-body { padding: 14px; } +.file-card-body { min-width: 0; padding: 14px; } .file-title { display: block; color: #434b53; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .file-meta { display: flex; gap: 7px; color: #969da3; font-size: 11px; margin-top: 7px; } .card-actions { display: flex; align-items: center; justify-content: space-between; margin-top: 11px; } @@ -238,6 +243,14 @@ button, input, select, textarea { font: inherit; } .premium-faq details { border-bottom: 1px solid #e6e8ea; padding: 16px; } .premium-faq summary { font-weight: 700; cursor: pointer; } +.content-page { max-width: 1020px; } +.eyebrow, .story-tag { color: var(--blue-dark); font-size: 11px; font-weight: 800; letter-spacing: .12em; } +.story-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 30px; } +.story-grid .panel h2 { font-size: 20px; line-height: 1.3; } +.story-grid time, .story-grid .story-tag { color: var(--muted); font-size: 11px; } +.converter-result { display: flex; justify-content: space-between; gap: 16px; margin: 20px 0; padding: 14px 16px; border: 1px solid #9bd5b9; border-radius: 8px; background: #ebfaf2; color: #176342; } +.converter-result span { font-size: 12px; } + .site-footer { background: var(--footer); color: #fff; padding: 48px 0 28px; } .footer-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 52px; } .footer-grid h4 { margin: 0 0 13px; font-size: 13px; } @@ -246,7 +259,8 @@ button, input, select, textarea { font: inherit; } .footer-brand { color: #fff; } .footer-brand .brand-four { color: var(--blue); } .footer-pills { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; } -.footer-pills span { border: 1px solid #4e5860; border-radius: 22px; padding: 8px 15px; font-size: 11px; } +.footer-pills span { border: 1px solid #4e5860; border-radius: 22px; padding: 8px 15px; font-size: 11px; display: inline-flex; align-items: center; gap: 6px; } +.footer-pills img { width: 14px; height: 14px; object-fit: contain; } @media (max-width: 900px) { .header-search { max-width: none; } @@ -256,6 +270,7 @@ button, input, select, textarea { font: inherit; } .file-grid { grid-template-columns: repeat(2, 1fr); } .account-layout { grid-template-columns: 190px 1fr; } .account-card-grid { grid-template-columns: 1fr; } + .story-grid { grid-template-columns: 1fr; } .folder-grid { grid-template-columns: repeat(2, 1fr); } .footer-grid { grid-template-columns: repeat(3, 1fr); } } @@ -280,7 +295,7 @@ button, input, select, textarea { font: inherit; } .hero-search input { padding: 12px 16px; } .hero-search button { width: 44px; height: 42px; font-size: 20px; } .drop-zone { min-height: 165px; border-radius: 17px; } - .upload-cloud { width: 80px; height: 53px; font-size: 31px; } + .upload-artwork { width: 130px; height: 54px; } .upload-button { min-width: 170px; padding: 10px 18px; } .hero-categories { gap: 10px; margin-top: 42px; } .hero-categories a { height: 92px; border-radius: 14px; gap: 8px; font-size: 11px; } @@ -289,7 +304,9 @@ button, input, select, textarea { font: inherit; } .app-band { padding: 45px 0; } .app-band h2 { font-size: 25px; } .app-band p { font-size: 13px; } - .qr-motif { height: 100px; font-size: 80px; } + .qr-motif { width: 136px; height: 136px; } + .qr-frame { width: 136px; height: 136px; } + .qr-code { inset: 14px; width: 108px; height: 108px; } .app-badges { flex-direction: column; align-items: center; } .store-badge { min-width: 205px; } .search-tabs { gap: 7px; padding-bottom: 18px; } @@ -298,8 +315,8 @@ button, input, select, textarea { font: inherit; } .filters select { max-width: 104px; } .result-row { min-height: 112px; grid-template-columns: 105px 1fr 36px; border-radius: 16px; } .result-info { padding: 13px 7px 10px 12px; } - .result-info h3 { font-size: 14px; } - .result-owner { margin-top: 28px; font-size: 10px; } + .result-info h3 { display: -webkit-box; font-size: 14px; line-height: 1.25; white-space: normal; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } + .result-owner { margin-top: 12px; font-size: 10px; } .result-add { font-size: 21px; } .media-glyph { font-size: 45px; } .media-preview { min-height: 215px; border-radius: 15px; } @@ -314,10 +331,12 @@ button, input, select, textarea { font: inherit; } .comment-form { flex-wrap: wrap; } .comment-form textarea { flex-basis: calc(100% - 50px); } .file-grid, .related-grid { grid-template-columns: 1fr; } - .related-grid .file-card { grid-template-columns: 110px 1fr; } + .related-grid .file-card { grid-template-columns: 110px minmax(0, 1fr); } + .related-grid .file-title { display: -webkit-box; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 3; } .account-layout { grid-template-columns: 1fr; } - .account-nav { display: flex; overflow-x: auto; min-height: 0; border: 0; gap: 5px; padding: 0 0 12px; } + .account-nav { display: flex; flex-wrap: wrap; overflow-x: visible; min-height: 0; border: 0; gap: 5px; padding: 0 0 12px; } .account-nav a { flex: 0 0 auto; border-radius: 18px; background: #f3f4f5; padding: 8px 12px; font-size: 11px; } + .account-nav-separator { display: none; } .panel { padding: 16px; border-radius: 14px; } .file-manager-toolbar { display: block; } .inline-form { margin-top: 10px; } diff --git a/sites/4shared/templates/_account_nav.html b/sites/4shared/templates/_account_nav.html index e480f94f..f3c9b9fa 100644 --- a/sites/4shared/templates/_account_nav.html +++ b/sites/4shared/templates/_account_nav.html @@ -2,7 +2,7 @@ ⌂   My 4shared ♲   Recycle Bin - ⌯   Shared with me + ⌯   Saved files ♡   Favorites ◷   Activity diff --git a/sites/4shared/templates/base.html b/sites/4shared/templates/base.html index 5c855e09..8301a58f 100644 --- a/sites/4shared/templates/base.html +++ b/sites/4shared/templates/base.html @@ -13,7 +13,7 @@ 4shared {% if request.endpoint != 'index' or current_user.is_authenticated %}