Compare commits

..

No commits in common. "0a160e3c6ed6b875528b33bcf335fe1a75bcb2ba" and "57c37750ec9868a7ed9bad50d6b7f320a9648d8d" have entirely different histories.

18 changed files with 55 additions and 3103 deletions

View File

@ -53,110 +53,37 @@ class LegalDocument(ABC):
return self.get_header() + self.get_content() + self.get_footer() return self.get_header() + self.get_content() + self.get_footer()
def to_html(self) -> str: def to_html(self) -> str:
"""Generate the complete document as Jinja2 template extending base.html.""" """Generate the complete document in HTML format."""
# Content is already HTML, just wrap in basic HTML structure
html_content = self.get_content() html_content = self.get_content()
template_content = f"""{{% extends "base.html" %}} html_content = f"""<html>
<head>
{{% block title %}}{self.title} - MyWebdav{{% endblock %}} <title>{self.title}</title>
{{% block description %}}{self.title} for MyWebdav cloud storage service.{{% endblock %}}
{{% block extra_css %}}
<style> <style>
.legal-content {{ body {{
max-width: 900px; font-family: 'Times New Roman', serif;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}}
.legal-title {{
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}}
.legal-updated {{
color: #666;
font-style: italic;
margin-bottom: 2rem;
}}
.legal-content h2 {{
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}}
.legal-content h3 {{
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}}
.legal-content p {{
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}}
.legal-content ul {{
margin-left: 2rem;
margin-bottom: 1rem;
}}
.legal-content li {{
margin-bottom: 0.5rem;
line-height: 1.6; line-height: 1.6;
color: #555; max-width: 800px;
}} margin: 0 auto;
padding: 20px;
.legal-content strong {{
color: #333; color: #333;
font-weight: 600;
}}
.legal-contact {{
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}}
.legal-contact h3 {{
color: #1565c0;
margin-top: 0;
}}
@media (max-width: 768px) {{
.legal-title {{
font-size: 2rem;
}}
.legal-content {{
padding: 2rem 1rem;
}} }}
h1, h2, h3 {{
color: #2c3e50;
margin-top: 30px;
}} }}
h1 {{ font-size: 2em; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
h2 {{ font-size: 1.5em; border-bottom: 1px solid #bdc3c7; padding-bottom: 5px; }}
ul {{ margin-left: 20px; }}
li {{ margin-bottom: 8px; }}
strong {{ color: #2c3e50; }}
</style> </style>
{{% endblock %}} </head>
<body>
{{% block content %}} <h1>{self.title}</h1>
<div class="legal-content"> <p><em>Last Updated: {self.last_updated}</em></p>
<h1 class="legal-title">{self.title}</h1>
<p class="legal-updated">Last Updated: {self.last_updated}</p>
{html_content} {html_content}
<hr>
<div class="legal-contact">
<h3>Contact Information</h3> <h3>Contact Information</h3>
<p>If you have any questions about this {self.title.lower()}, please contact us:</p> <p>If you have any questions about this {self.title.lower()}, please contact us:</p>
<ul> <ul>
@ -164,11 +91,10 @@ class LegalDocument(ABC):
<li><strong>Website:</strong> <a href="{self.website}">{self.website}</a></li> <li><strong>Website:</strong> <a href="{self.website}">{self.website}</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li> <li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul> </ul>
</div> <p>MyWebdav Technologies</p>
</div> </body>
{{% endblock %}} </html>"""
""" return html_content
return template_content
class PrivacyPolicy(LegalDocument): class PrivacyPolicy(LegalDocument):
@ -941,21 +867,28 @@ def get_all_legal_documents() -> Dict[str, LegalDocument]:
} }
def generate_legal_documents(template_dir: str = "mywebdav/templates/legal"): def generate_legal_documents(output_dir: str = "static/legal"):
"""Generate all legal documents as Jinja2 templates.""" """Generate all legal documents as Markdown and HTML files."""
import os import os
os.makedirs(template_dir, exist_ok=True) os.makedirs(output_dir, exist_ok=True)
documents = get_all_legal_documents() documents = get_all_legal_documents()
for doc_name, doc in documents.items(): for doc_name, doc in documents.items():
# Generate Markdown
md_filename = f"{doc_name}.md"
md_path = os.path.join(output_dir, md_filename)
with open(md_path, "w") as f:
f.write(doc.to_markdown())
# Generate HTML
html_filename = f"{doc_name}.html" html_filename = f"{doc_name}.html"
html_path = os.path.join(template_dir, html_filename) html_path = os.path.join(output_dir, html_filename)
with open(html_path, "w") as f: with open(html_path, "w") as f:
f.write(doc.to_html()) f.write(doc.to_html())
print(f"Generated {html_filename}") print(f"Generated {md_filename} and {html_filename}")
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -4,8 +4,7 @@ import logging
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
from fastapi import FastAPI, Request, HTTPException, status from fastapi import FastAPI, Request, HTTPException, status
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse, JSONResponse, Response, RedirectResponse from fastapi.responses import HTMLResponse, JSONResponse, Response
from fastapi.templating import Jinja2Templates
from tortoise.contrib.fastapi import register_tortoise from tortoise.contrib.fastapi import register_tortoise
from .settings import settings from .settings import settings
from .routers import ( from .routers import (
@ -102,8 +101,6 @@ app = FastAPI(
lifespan=lifespan, lifespan=lifespan,
) )
templates = Jinja2Templates(directory="mywebdav/templates")
app.include_router(auth.router) app.include_router(auth.router)
app.include_router(users.router) app.include_router(users.router)
app.include_router(folders.router) app.include_router(folders.router)
@ -153,41 +150,8 @@ async def http_exception_handler(request: Request, exc: HTTPException):
) )
@app.get("/", response_class=HTMLResponse) @app.get("/", response_class=HTMLResponse) # Change response_class to HTMLResponse
async def splash_page(request: Request): async def read_root():
return templates.TemplateResponse("splash.html", {"request": request})
@app.get("/features", response_class=HTMLResponse)
async def features_page(request: Request):
return templates.TemplateResponse("features.html", {"request": request})
@app.get("/pricing", response_class=HTMLResponse)
async def pricing_page(request: Request):
return templates.TemplateResponse("pricing.html", {"request": request})
@app.get("/support", response_class=HTMLResponse)
async def support_page(request: Request):
return templates.TemplateResponse("support.html", {"request": request})
@app.get("/legal/{document_name}", response_class=HTMLResponse)
async def legal_document(request: Request, document_name: str):
try:
return templates.TemplateResponse(f"legal/{document_name}.html", {"request": request})
except Exception:
raise HTTPException(status_code=404, detail="Legal document not found")
@app.get("/login")
async def login_redirect():
return RedirectResponse(url="/app", status_code=302)
@app.get("/app", response_class=HTMLResponse)
async def web_app():
with open("static/index.html", "r") as f: with open("static/index.html", "r") as f:
return f.read() return f.read()

View File

@ -1,52 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}MyWebdav - Cloud Storage{% endblock %}</title>
<meta name="description" content="{% block description %}MyWebdav - Pay-as-you-go cloud storage. Store what you need, only pay for what you use.{% endblock %}">
<meta name="keywords" content="cloud storage, pay as you go, file storage, webdav, secure storage">
<link rel="stylesheet" href="/static/css/splash.css">
{% block extra_css %}{% endblock %}
<link rel="icon" type="image/png" href="/static/icons/icon-192x192.png">
</head>
<body>
<header class="header">
<nav class="nav-container">
<div class="logo">
<span class="logo-icon"></span>
<span class="logo-text">my<span class="logo-webdav">webdav</span></span>
</div>
<ul class="nav-menu">
<li><a href="/">Home</a></li>
<li><a href="/features">Features</a></li>
<li><a href="/pricing">Pricing</a></li>
<li><a href="/support">Support</a></li>
<li><a href="/login" class="nav-login">Login</a></li>
</ul>
</nav>
</header>
<main>
{% block content %}{% endblock %}
</main>
<footer class="footer">
<div class="footer-links">
<a href="/legal/privacy_policy">Privacy Policy</a>
<a href="/legal/data_processing_agreement">Data Processing Agreement</a>
<a href="/legal/terms_of_service">Terms of Service</a>
<a href="/legal/cookie_policy">Cookie Policy</a>
<a href="/legal/security_policy">Security Policy</a>
<a href="/legal/compliance_statement">Compliance Statement</a>
<a href="/legal/data_portability_deletion_policy">Data Portability &amp; Deletion</a>
<a href="/legal/contact_complaint_mechanism">Contact &amp; Complaints</a>
</div>
<div class="footer-copyright">
© 2024 CLOUDWAVE. All rights reserved
</div>
</footer>
{% block extra_js %}{% endblock %}
</body>
</html>

View File

@ -1,266 +0,0 @@
{% extends "base.html" %}
{% block title %}Features - MyWebdav Cloud Storage{% endblock %}
{% block description %}Discover MyWebdav's powerful features: secure storage, WebDAV support, file sharing, and more.{% endblock %}
{% block extra_css %}
<style>
.content-section {
max-width: 1200px;
margin: 0 auto;
padding: 4rem 2rem;
}
.page-title {
font-size: 3rem;
font-weight: 700;
color: #1565c0;
text-align: center;
margin-bottom: 1rem;
}
.page-subtitle {
font-size: 1.25rem;
color: #666;
text-align: center;
margin-bottom: 3rem;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 2rem;
margin-top: 2rem;
}
.feature-card {
background: white;
border-radius: 8px;
padding: 2rem;
border: 2px solid #e0e0e0;
transition: all 0.3s;
}
.feature-card:hover {
border-color: #1976d2;
box-shadow: 0 4px 12px rgba(25, 118, 210, 0.1);
transform: translateY(-2px);
}
.feature-icon {
font-size: 2.5rem;
color: #d32f2f;
margin-bottom: 1rem;
}
.feature-title {
font-size: 1.5rem;
font-weight: 600;
color: #333;
margin-bottom: 0.75rem;
}
.feature-description {
color: #666;
line-height: 1.6;
}
.feature-list {
list-style: none;
padding: 0;
margin-top: 1rem;
}
.feature-list li {
padding: 0.5rem 0;
color: #555;
}
.feature-list li:before {
content: "✓ ";
color: #d32f2f;
font-weight: bold;
margin-right: 0.5rem;
}
@media (max-width: 768px) {
.page-title {
font-size: 2rem;
}
.features-grid {
grid-template-columns: 1fr;
}
}
</style>
{% endblock %}
{% block content %}
<div class="content-section">
<h1 class="page-title">POWERFUL FEATURES</h1>
<p class="page-subtitle">Everything you need for secure, reliable cloud storage</p>
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon">🔒</div>
<h2 class="feature-title">Enterprise-Grade Security</h2>
<p class="feature-description">Your data is protected with industry-leading security measures.</p>
<ul class="feature-list">
<li>AES-256 encryption at rest</li>
<li>TLS 1.3 encryption in transit</li>
<li>Two-factor authentication (TOTP)</li>
<li>Regular security audits</li>
<li>GDPR compliant</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">📁</div>
<h2 class="feature-title">WebDAV Protocol Support</h2>
<p class="feature-description">Mount your storage as a network drive on any device.</p>
<ul class="feature-list">
<li>Windows, macOS, Linux support</li>
<li>Standard WebDAV protocol</li>
<li>Works with native file explorers</li>
<li>No additional software needed</li>
<li>Full file system operations</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🔄</div>
<h2 class="feature-title">File Versioning</h2>
<p class="feature-description">Never lose important data with automatic version history.</p>
<ul class="feature-list">
<li>Automatic version tracking</li>
<li>Restore previous versions</li>
<li>Version comparison</li>
<li>Configurable retention</li>
<li>No additional cost</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🤝</div>
<h2 class="feature-title">Sharing & Collaboration</h2>
<p class="feature-description">Share files securely with team members or external partners.</p>
<ul class="feature-list">
<li>Shareable links with expiration</li>
<li>Password protection</li>
<li>Access control management</li>
<li>Share tracking and analytics</li>
<li>Public and private sharing</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon"></div>
<h2 class="feature-title">High Performance</h2>
<p class="feature-description">Fast upload and download speeds with global CDN.</p>
<ul class="feature-list">
<li>Global edge network</li>
<li>Parallel upload/download</li>
<li>Resume interrupted transfers</li>
<li>Optimized for large files</li>
<li>Sub-second file access</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🔍</div>
<h2 class="feature-title">Full-Text Search</h2>
<p class="feature-description">Find your files instantly with powerful search capabilities.</p>
<ul class="feature-list">
<li>Search file names and content</li>
<li>Filter by type and date</li>
<li>Advanced query syntax</li>
<li>Instant results</li>
<li>Search in shared folders</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🖼️</div>
<h2 class="feature-title">Media Thumbnails</h2>
<p class="feature-description">Preview images and videos without downloading.</p>
<ul class="feature-list">
<li>Automatic thumbnail generation</li>
<li>Image preview</li>
<li>Video thumbnails</li>
<li>Multiple size options</li>
<li>Fast loading</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">💰</div>
<h2 class="feature-title">Pay-As-You-Go Pricing</h2>
<p class="feature-description">Only pay for what you use with transparent billing.</p>
<ul class="feature-list">
<li>No minimum commitment</li>
<li>$5 per TB per month</li>
<li>15GB free tier</li>
<li>Detailed usage tracking</li>
<li>Monthly invoicing</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🛡️</div>
<h2 class="feature-title">Data Residency</h2>
<p class="feature-description">Your data stays in the EU with full GDPR compliance.</p>
<ul class="feature-list">
<li>EU-based data centers</li>
<li>No data transfers outside EU</li>
<li>GDPR and NIS2 compliant</li>
<li>ISO 27001 certified</li>
<li>Full data sovereignty</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">📊</div>
<h2 class="feature-title">Activity Logging</h2>
<p class="feature-description">Complete audit trail of all file operations.</p>
<ul class="feature-list">
<li>Detailed activity logs</li>
<li>File access tracking</li>
<li>User action history</li>
<li>Compliance reporting</li>
<li>Export capabilities</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon">🔌</div>
<h2 class="feature-title">API Access</h2>
<p class="feature-description">Integrate MyWebdav with your applications.</p>
<ul class="feature-list">
<li>RESTful API</li>
<li>OAuth2 authentication</li>
<li>Comprehensive documentation</li>
<li>WebDAV protocol support</li>
<li>Developer-friendly</li>
</ul>
</div>
<div class="feature-card">
<div class="feature-icon"></div>
<h2 class="feature-title">Favorites & Organization</h2>
<p class="feature-description">Organize files your way with folders and favorites.</p>
<ul class="feature-list">
<li>Unlimited folder hierarchy</li>
<li>Star important files</li>
<li>Quick access favorites</li>
<li>Drag and drop organization</li>
<li>Bulk operations</li>
</ul>
</div>
</div>
<div style="text-align: center; margin-top: 3rem;">
<a href="/app" class="btn btn-primary" style="font-size: 1.125rem; padding: 1rem 3rem;">Get Started Today</a>
</div>
</div>
{% endblock %}

View File

@ -1,164 +0,0 @@
{% extends "base.html" %}
{% block title %}Compliance Statement - MyWebdav{% endblock %}
{% block description %}Compliance Statement for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Compliance Statement</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. Introduction</h2>
<p>MyWebdav Technologies is committed to maintaining the highest standards of compliance with applicable laws and regulations. This Compliance Statement outlines our commitments and achievements.</p>
<h2>2. Regulatory Compliance</h2>
<p>We comply with:</p>
<ul>
<li><strong>GDPR:</strong> EU General Data Protection Regulation</li>
<li><strong>NIS2 Directive:</strong> Network and Information Systems Directive</li>
<li><strong>Digital Services Act:</strong> Online intermediary liability framework</li>
<li><strong>ePrivacy Directive:</strong> Electronic communications privacy</li>
</ul>
<h2>3. Certifications and Standards</h2>
<ul>
<li>ISO/IEC 27001: Information Security Management</li>
<li>ISO/IEC 27017: Cloud Security Controls</li>
<li>SOC 2 Type II: Security, Availability, and Confidentiality</li>
</ul>
<h2>4. Data Protection</h2>
<h3>4.1 Data Residency</h3>
<p>Customer data is stored within the EU by default, with options for specific country storage.</p>
<h3>4.2 Encryption</h3>
<p>All data encrypted in transit and at rest using industry-standard algorithms.</p>
<h3>4.3 Access Controls</h3>
<p>Role-based access control with multi-factor authentication.</p>
<h2>5. Security Measures</h2>
<ul>
<li>Regular security audits and penetration testing</li>
<li>Incident response planning and testing</li>
<li>Continuous monitoring and threat detection</li>
<li>Employee security training and awareness</li>
</ul>
<h2>6. Transparency Reporting</h2>
<p>We publish annual transparency reports detailing:</p>
<ul>
<li>Government data requests</li>
<li>Security incidents</li>
<li>Law enforcement cooperation</li>
</ul>
<h2>7. Independent Audits</h2>
<p>Annual third-party audits verify compliance with all applicable standards.</p>
<h2>8. Continuous Improvement</h2>
<p>We regularly review and update our compliance program to address emerging threats and regulatory changes.</p>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this compliance statement, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,196 +0,0 @@
{% extends "base.html" %}
{% block title %}Contact and Complaint Mechanism - MyWebdav{% endblock %}
{% block description %}Contact and Complaint Mechanism for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Contact and Complaint Mechanism</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. Introduction</h2>
<p>MyWebdav Technologies provides multiple channels for you to contact us and raise concerns. We are committed to addressing your inquiries promptly and fairly.</p>
<h2>2. Contact Information</h2>
<h3>2.1 General Inquiries</h3>
<ul>
<li><strong>Email:</strong> support@mywebdav.eu</li>
<li><strong>Phone:</strong> +31 XX XXX XXXX (Mon-Fri, 9:00-17:00 CET)</li>
<li><strong>Address:</strong> MyWebdav Technologies, Amsterdam, Netherlands</li>
</ul>
<h3>2.2 Technical Support</h3>
<ul>
<li><strong>Email:</strong> tech-support@mywebdav.eu</li>
<li><strong>Help Center:</strong> <a href="https://help.mywebdav.eu">https://help.mywebdav.eu</a></li>
</ul>
<h3>2.3 Billing Inquiries</h3>
<ul>
<li><strong>Email:</strong> billing@mywebdav.eu</li>
</ul>
<h3>2.4 Data Protection</h3>
<ul>
<li><strong>Data Protection Officer:</strong> dpo@mywebdav.eu</li>
</ul>
<h3>2.5 Legal Matters</h3>
<ul>
<li><strong>Email:</strong> legal@mywebdav.eu</li>
</ul>
<h2>3. Complaint Procedure</h2>
<h3>3.1 How to Submit a Complaint</h3>
<ol>
<li>Contact our support team with details of your complaint</li>
<li>Include relevant account information and timestamps</li>
<li>Provide specific details about the issue</li>
</ol>
<h3>3.2 Complaint Handling Process</h3>
<ol>
<li><strong>Acknowledgment:</strong> Within 24 hours</li>
<li><strong>Investigation:</strong> Within 5 business days</li>
<li><strong>Resolution:</strong> Within 15 business days</li>
<li><strong>Escalation:</strong> If unresolved, escalate to management</li>
</ol>
<h3>3.3 Complaint Categories</h3>
<ul>
<li>Service quality issues</li>
<li>Billing disputes</li>
<li>Data protection concerns</li>
<li>Security incidents</li>
<li>Terms of Service violations</li>
</ul>
<h2>4. Dispute Resolution</h2>
<h3>4.1 Internal Resolution</h3>
<p>Most complaints resolved through direct communication with our team.</p>
<h3>4.2 Mediation</h3>
<p>For unresolved disputes, we offer mediation through a neutral third party.</p>
<h3>4.3 Legal Action</h3>
<p>If internal resolution fails, disputes may be brought before competent courts in the Netherlands.</p>
<h2>5. Response Times</h2>
<ul>
<li><strong>General inquiries:</strong> 24-48 hours</li>
<li><strong>Technical issues:</strong> 4-24 hours</li>
<li><strong>Complaints:</strong> 5 business days for initial response</li>
<li><strong>Data subject rights:</strong> 30 days (GDPR)</li>
</ul>
<h2>6. Feedback and Suggestions</h2>
<p>We welcome your feedback to improve our services. Contact us at feedback@mywebdav.eu.</p>
<h2>7. Transparency</h2>
<p>We publish annual reports on complaint handling and resolution rates.</p>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this contact and complaint mechanism, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,171 +0,0 @@
{% extends "base.html" %}
{% block title %}Cookie Policy - MyWebdav{% endblock %}
{% block description %}Cookie Policy for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Cookie Policy</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. What Are Cookies</h2>
<p>Cookies are small text files stored on your device when you visit our Service. They help us provide a better user experience.</p>
<h2>2. Types of Cookies We Use</h2>
<h3>2.1 Essential Cookies</h3>
<p>Required for basic Service functionality:</p>
<ul>
<li>Authentication and session management</li>
<li>Security features</li>
</ul>
<h3>2.2 Functional Cookies</h3>
<p>Enhance your experience:</p>
<ul>
<li>Language preferences</li>
<li>Theme settings</li>
</ul>
<h3>2.3 Analytics Cookies</h3>
<p>Help us understand usage:</p>
<ul>
<li>Page views and user journeys</li>
<li>Performance metrics</li>
</ul>
<h3>2.4 Marketing Cookies</h3>
<p>Used for targeted advertising (with consent):</p>
<ul>
<li>Personalized recommendations</li>
</ul>
<h2>3. Cookie Management</h2>
<p>You can control cookies through:</p>
<ul>
<li>Browser settings</li>
<li>Our cookie preference center</li>
<li>Opt-out links in marketing emails</li>
</ul>
<h2>4. Third-Party Cookies</h2>
<p>We may use third-party services that set cookies:</p>
<ul>
<li>Analytics providers</li>
<li>Payment processors</li>
<li>Social media integrations</li>
</ul>
<h2>5. Your Rights</h2>
<p>Under GDPR, you have rights regarding cookie-based processing:</p>
<ul>
<li>Right to information</li>
<li>Right to withdraw consent</li>
<li>Right to object</li>
</ul>
<h2>6. Updates</h2>
<p>We may update this policy. Material changes will be communicated via the Service.</p>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this cookie policy, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,182 +0,0 @@
{% extends "base.html" %}
{% block title %}Data Portability and Deletion Policy - MyWebdav{% endblock %}
{% block description %}Data Portability and Deletion Policy for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Data Portability and Deletion Policy</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. Introduction</h2>
<p>This policy outlines your rights under GDPR regarding data portability and deletion, and how MyWebdav Technologies facilitates these rights.</p>
<h2>2. Right to Data Portability</h2>
<p>You have the right to receive your personal data in a structured, commonly used, and machine-readable format.</p>
<h3>2.1 Scope</h3>
<p>Applies to personal data you have provided that is processed based on consent or contract.</p>
<h3>2.2 How to Request</h3>
<p>Contact us at dpo@mywebdav.eu with "Data Portability Request" in the subject line.</p>
<h3>2.3 Format</h3>
<p>Data will be provided in JSON or CSV format, depending on the data type.</p>
<h3>2.4 Timeline</h3>
<p>Requests fulfilled within 30 days, extendable to 60 days for complex requests.</p>
<h2>3. Right to Erasure ("Right to be Forgotten")</h2>
<p>You have the right to have your personal data erased under certain circumstances.</p>
<h3>3.1 Conditions for Erasure</h3>
<ul>
<li>Data no longer necessary for original purpose</li>
<li>Withdrawal of consent</li>
<li>Objection to processing (and no overriding interests)</li>
<li>Unlawful processing</li>
<li>Legal obligation to erase</li>
<li>Data collected from child</li>
</ul>
<h3>3.2 Exceptions</h3>
<p>Erasure not required if processing is necessary for:</p>
<ul>
<li>Exercising freedom of expression</li>
<li>Compliance with legal obligation</li>
<li>Public interest</li>
<li>Legal claims</li>
<li>Scientific research</li>
</ul>
<h3>3.3 How to Request Deletion</h3>
<p>Submit a deletion request via your account settings or contact dpo@mywebdav.eu.</p>
<h3>3.4 Account Deletion Process</h3>
<ul>
<li>All personal data permanently deleted</li>
<li>Shared content may remain if owned by others</li>
<li>Backup copies deleted within 90 days</li>
</ul>
<h2>4. Data Retention</h2>
<p>We retain data only as long as necessary:</p>
<ul>
<li><strong>Account data:</strong> Until deletion request</li>
<li><strong>Billing data:</strong> 7 years for tax compliance</li>
<li><strong>Logs:</strong> 12 months for security</li>
</ul>
<h2>5. Automated Decision Making</h2>
<p>We do not use automated decision making with legal or significant effects on individuals.</p>
<h2>6. Contact Information</h2>
<p>For data rights requests:</p>
<ul>
<li><strong>Email:</strong> dpo@mywebdav.eu</li>
<li><strong>Phone:</strong> +31 XX XXX XXXX</li>
<li><strong>Response Time:</strong> Within 30 days</li>
</ul>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this data portability and deletion policy, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,163 +0,0 @@
{% extends "base.html" %}
{% block title %}Data Processing Agreement - MyWebdav{% endblock %}
{% block description %}Data Processing Agreement for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Data Processing Agreement</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. Introduction</h2>
<p>This Data Processing Agreement ("DPA") supplements the Terms of Service between MyWebdav Technologies (the "Processor") and the Customer (the "Controller") regarding the processing of personal data.</p>
<h2>2. Definitions</h2>
<ul>
<li><strong>Personal Data:</strong> Any information relating to an identified or identifiable natural person</li>
<li><strong>Processing:</strong> Any operation performed on personal data</li>
<li><strong>Data Subject:</strong> The individual whose personal data is processed</li>
</ul>
<h2>3. Scope and Applicability</h2>
<p>This DPA applies to all processing of personal data by the Processor on behalf of the Controller.</p>
<h2>4. Processing Purposes</h2>
<p>The Processor shall process personal data solely for the purpose of providing the Service as described in the Terms of Service.</p>
<h2>5. Data Protection Obligations</h2>
<h3>5.1 Lawfulness</h3>
<p>Processing shall comply with GDPR and other applicable data protection laws.</p>
<h3>5.2 Security Measures</h3>
<p>The Processor shall implement appropriate technical and organizational measures to ensure data security.</p>
<h3>5.3 Confidentiality</h3>
<p>All personnel with access to personal data shall maintain confidentiality.</p>
<h2>6. Data Subject Rights</h2>
<p>The Processor shall assist the Controller in fulfilling data subject rights requests.</p>
<h2>7. Subprocessing</h2>
<p>The Processor may engage subprocessors with prior notice to the Controller.</p>
<h2>8. Data Breach Notification</h2>
<p>The Processor shall notify the Controller of any personal data breaches without undue delay.</p>
<h2>9. Data Protection Impact Assessment</h2>
<p>The Processor shall assist with DPIAs when required.</p>
<h2>10. International Data Transfers</h2>
<p>Data transfers outside the EU shall comply with GDPR Chapter V.</p>
<h2>11. Audit Rights</h2>
<p>The Controller may audit the Processor's compliance, subject to confidentiality obligations.</p>
<h2>12. Termination</h2>
<p>Upon termination, the Processor shall delete or return all personal data.</p>
<h2>13. Governing Law</h2>
<p>This DPA is governed by the laws of the Netherlands.</p>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this data processing agreement, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,259 +0,0 @@
{% extends "base.html" %}
{% block title %}Privacy Policy - MyWebdav{% endblock %}
{% block description %}Privacy Policy for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Privacy Policy</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. Introduction</h2>
<p>MyWebdav Technologies ("we," "us," or "our") is committed to protecting your privacy and ensuring the security of your personal data. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our MyWebdav cloud storage service (the "Service"), in full compliance with the EU General Data Protection Regulation (GDPR), and other applicable data protection laws.</p>
<p>This policy applies to all users of our Service, including visitors to our website and registered users. By using our Service, you consent to the collection and use of information in accordance with this policy.</p>
<h2>2. Data Controller and Contact Information</h2>
<p><strong>Data Controller:</strong> MyWebdav Technologies<br>
<strong>Registered Address:</strong> European Union<br>
<strong>Data Protection Officer:</strong> dpo@mywebdav.eu<br>
<strong>Contact Email:</strong> privacy@mywebdav.eu</p>
<h2>3. Information We Collect</h2>
<h3>3.1 Personal Data You Provide</h3>
<p>When you register for an account or use our Service, we collect:</p>
<ul>
<li>Name and contact information (email address, phone number if provided)</li>
<li>Account credentials and security information</li>
<li>Billing and payment information (processed securely through third-party providers)</li>
<li>Communications you send to us</li>
<li>Files and data you upload to our Service</li>
<li>Profile information and preferences</li>
</ul>
<h3>3.2 Information Collected Automatically</h3>
<p>We automatically collect certain information when you use our Service:</p>
<ul>
<li>IP address and geolocation data</li>
<li>Browser type, version, and language</li>
<li>Operating system and device information</li>
<li>Usage data (pages visited, features used, timestamps)</li>
<li>Log data (access times, errors, performance metrics)</li>
<li>Cookies and similar tracking technologies</li>
</ul>
<h3>3.3 Cookies and Tracking Technologies</h3>
<p>We use cookies and similar technologies to:</p>
<ul>
<li>Authenticate users and maintain secure sessions</li>
<li>Remember user preferences and settings</li>
<li>Analyze service usage and performance</li>
<li>Provide personalized features and recommendations</li>
<li>Ensure security and prevent fraud</li>
</ul>
<p>You can control cookie settings through your browser preferences. However, disabling certain cookies may limit Service functionality.</p>
<h2>4. Legal Basis for Processing</h2>
<p>We process your personal data based on the following legal grounds under GDPR:</p>
<ul>
<li><strong>Consent:</strong> Where you have explicitly agreed to processing (e.g., marketing communications)</li>
<li><strong>Contract:</strong> To provide the Service and fulfill our contractual obligations</li>
<li><strong>Legitimate Interest:</strong> To improve our Service, ensure security, and communicate with you</li>
<li><strong>Legal Obligation:</strong> To comply with applicable laws and regulations</li>
</ul>
<h2>5. How We Use Your Information</h2>
<p>We use collected information for the following purposes:</p>
<ul>
<li>Provide, maintain, and improve the Service</li>
<li>Process transactions and manage billing</li>
<li>Communicate with you about your account and the Service</li>
<li>Ensure security and prevent unauthorized access</li>
<li>Comply with legal obligations</li>
<li>Analyze usage patterns to improve user experience</li>
<li>Send service-related notifications and updates</li>
<li>Provide customer support</li>
</ul>
<h2>6. Information Sharing and Disclosure</h2>
<p>We do not sell your personal data to third parties. We may share information in the following circumstances:</p>
<ul>
<li><strong>Service Providers:</strong> With trusted third-party service providers under strict data processing agreements</li>
<li><strong>Legal Requirements:</strong> When required by law or to protect rights and safety</li>
<li><strong>Business Transfers:</strong> In connection with mergers, acquisitions, or asset sales (with notice)</li>
<li><strong>Consent:</strong> With your explicit consent</li>
<li><strong>Aggregated Data:</strong> Non-personally identifiable, aggregated data for analytical purposes</li>
</ul>
<h2>7. International Data Transfers</h2>
<p>Your data may be processed in countries outside the EU. We ensure adequate protection through:</p>
<ul>
<li>EU adequacy decisions for certain countries</li>
<li>Standard Contractual Clauses approved by the European Commission</li>
<li>Binding Corporate Rules</li>
<li>Your explicit consent where required</li>
</ul>
<p>All international transfers comply with Chapter V of the GDPR.</p>
<h2>8. Data Security</h2>
<p>We implement comprehensive security measures to protect your data:</p>
<ul>
<li><strong>Encryption:</strong> Data encrypted in transit (TLS 1.3) and at rest (AES-256)</li>
<li><strong>Access Controls:</strong> Role-based access control and multi-factor authentication</li>
<li><strong>Network Security:</strong> Firewalls, intrusion detection, and regular monitoring</li>
<li><strong>Physical Security:</strong> Secure data centers with controlled access</li>
<li><strong>Incident Response:</strong> 24/7 monitoring and rapid response procedures</li>
<li><strong>Regular Audits:</strong> Independent security audits and penetration testing</li>
</ul>
<h2>9. Data Retention</h2>
<p>We retain personal data only as long as necessary for the purposes outlined in this policy:</p>
<ul>
<li><strong>Account Data:</strong> Until account deletion or as required for legal compliance</li>
<li><strong>Usage Logs:</strong> Maximum 12 months for security and compliance purposes</li>
<li><strong>Billing Data:</strong> 7 years for tax and accounting compliance</li>
<li><strong>Marketing Data:</strong> Until you withdraw consent or request deletion</li>
</ul>
<h2>10. Your Rights Under GDPR</h2>
<p>You have the following rights regarding your personal data:</p>
<ul>
<li><strong>Right to Access:</strong> Request a copy of your personal data</li>
<li><strong>Right to Rectification:</strong> Correct inaccurate or incomplete data</li>
<li><strong>Right to Erasure:</strong> Delete your personal data ("right to be forgotten")</li>
<li><strong>Right to Restriction:</strong> Limit processing of your data</li>
<li><strong>Right to Portability:</strong> Receive your data in a structured format</li>
<li><strong>Right to Object:</strong> Object to processing based on legitimate interests</li>
<li><strong>Right to Withdraw Consent:</strong> Revoke consent for processing</li>
<li><strong>Right Not to be Subject to Automated Decision-Making:</strong> Including profiling</li>
</ul>
<p>To exercise these rights, contact our Data Protection Officer at dpo@mywebdav.eu. We will respond within 30 days.</p>
<h2>11. Children's Privacy</h2>
<p>Our Service is not intended for individuals under 16 years of age. We do not knowingly collect personal data from children under 16. If we become aware of such collection, we will delete the data immediately and terminate the account.</p>
<p>If you are a parent or guardian and believe your child has provided us with personal data, please contact us immediately.</p>
<h2>12. Changes to This Privacy Policy</h2>
<p>We may update this Privacy Policy to reflect changes in our practices or legal requirements. We will:</p>
<ul>
<li>Notify you via email at least 30 days before material changes take effect</li>
<li>Post the updated policy on our website</li>
<li>Highlight significant changes in the notification</li>
</ul>
<p>Continued use of the Service after changes take effect constitutes acceptance of the updated policy.</p>
<h2>13. Complaints and Supervisory Authority</h2>
<p>If you believe we have not complied with applicable data protection laws, you have the right to lodge a complaint with a supervisory authority. In the Netherlands, this is the Autoriteit Persoonsgegevens (AP).</p>
<p>We encourage you to contact us first to resolve any concerns.</p>
<h2>14. Contact Us</h2>
<p>For any questions about this Privacy Policy or our data practices:</p>
<ul>
<li><strong>Email:</strong> privacy@mywebdav.eu</li>
<li><strong>Data Protection Officer:</strong> dpo@mywebdav.eu</li>
<li><strong>Phone:</strong> +31 XX XXX XXXX</li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this privacy policy, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,210 +0,0 @@
{% extends "base.html" %}
{% block title %}Security Policy - MyWebdav{% endblock %}
{% block description %}Security Policy for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Security Policy</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. Introduction</h2>
<h3>1.1 Purpose</h3>
<p>This policy establishes the framework for securing our cloud storage platform and ensures all personnel understand their security responsibilities.</p>
<h3>1.2 Scope</h3>
<p>Applies to all employees, contractors, systems, and data managed by MyWebdav Technologies.</p>
<h2>2. Governance and Management</h2>
<h3>2.1 Information Security Management System (ISMS)</h3>
<p>We maintain an ISO/IEC 27001-certified ISMS with regular risk assessments, audits, and continuous improvement.</p>
<h3>2.2 Roles and Responsibilities</h3>
<ul>
<li><strong>CISO:</strong> Oversees security program</li>
<li><strong>Security Team:</strong> Implements controls and responds to incidents</li>
<li><strong>Employees:</strong> Follow policies and report incidents</li>
<li><strong>Management:</strong> Provides resources and enforces compliance</li>
</ul>
<h2>3. Access Control</h2>
<h3>3.1 Access Management</h3>
<p>Access follows the principle of least privilege with multi-factor authentication required for administrative access.</p>
<h3>3.2 User Authentication</h3>
<p>Strong passwords, regular rotation, and account lockout policies are enforced.</p>
<h3>3.3 Remote Access</h3>
<p>Secured via VPN with full logging and monitoring.</p>
<h2>4. Data Protection and Encryption</h2>
<h3>4.1 Data Classification</h3>
<p>Data classified as Public, Internal, Confidential, or Highly Sensitive with appropriate controls.</p>
<h3>4.2 Encryption Standards</h3>
<ul>
<li>TLS 1.3 for data in transit</li>
<li>AES-256 for data at rest</li>
<li>Secure key management and rotation</li>
</ul>
<h3>4.3 Data Retention and Disposal</h3>
<p>Data retained only as necessary with secure deletion methods.</p>
<h2>5. Network Security</h2>
<h3>5.1 Network Segmentation</h3>
<p>Isolated networks with firewalls, IDS, and regular monitoring.</p>
<h3>5.2 Secure Configuration</h3>
<p>Hardened systems following CIS Benchmarks.</p>
<h2>6. Physical Security</h2>
<h3>6.1 Facility Access</h3>
<p>Controlled access to data centers with biometric authentication.</p>
<h3>6.2 Equipment Security</h3>
<p>Secure storage in climate-controlled environments.</p>
<h2>7. Incident Response</h2>
<h3>7.1 Incident Response Plan</h3>
<p>Comprehensive plan for identification, containment, eradication, recovery, and notification.</p>
<h3>7.2 Breach Notification</h3>
<p>Incidents reported within 72 hours (GDPR) or 24 hours (NIS2) as applicable.</p>
<h2>8. Secure Development</h2>
<h3>8.1 Secure Coding Practices</h3>
<p>Code reviews, static/dynamic analysis, and vulnerability management.</p>
<h3>8.2 Change Management</h3>
<p>Formal approval processes for production changes.</p>
<h2>9. Third-Party Risk Management</h2>
<h3>9.1 Vendor Assessment</h3>
<p>Security assessments and contractual requirements for all vendors.</p>
<h2>10. Compliance and Auditing</h2>
<h3>10.1 Regulatory Compliance</h3>
<p>Compliance with GDPR, NIS2, and ISO/IEC 27001.</p>
<h3>10.2 Audits and Assessments</h3>
<p>Annual audits, quarterly penetration testing, and continuous monitoring.</p>
<h3>10.3 Training</h3>
<p>Mandatory annual security training for all personnel.</p>
<h2>11. Enforcement</h2>
<p>Compliance is mandatory. Violations may result in disciplinary action up to termination.</p>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this security policy, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,218 +0,0 @@
{% extends "base.html" %}
{% block title %}Terms of Service - MyWebdav{% endblock %}
{% block description %}Terms of Service for MyWebdav cloud storage service.{% endblock %}
{% block extra_css %}
<style>
.legal-content {
max-width: 900px;
margin: 0 auto;
padding: 3rem 2rem;
background: white;
border-radius: 8px;
}
.legal-title {
font-size: 2.5rem;
font-weight: 700;
color: #1565c0;
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 3px solid #1976d2;
}
.legal-updated {
color: #666;
font-style: italic;
margin-bottom: 2rem;
}
.legal-content h2 {
font-size: 1.75rem;
color: #333;
margin-top: 2rem;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e0e0e0;
}
.legal-content h3 {
font-size: 1.25rem;
color: #555;
margin-top: 1.5rem;
margin-bottom: 0.75rem;
}
.legal-content p {
line-height: 1.8;
color: #555;
margin-bottom: 1rem;
}
.legal-content ul {
margin-left: 2rem;
margin-bottom: 1rem;
}
.legal-content li {
margin-bottom: 0.5rem;
line-height: 1.6;
color: #555;
}
.legal-content strong {
color: #333;
font-weight: 600;
}
.legal-contact {
margin-top: 3rem;
padding: 2rem;
background: #f5f5f5;
border-radius: 8px;
border-left: 4px solid #1976d2;
}
.legal-contact h3 {
color: #1565c0;
margin-top: 0;
}
@media (max-width: 768px) {
.legal-title {
font-size: 2rem;
}
.legal-content {
padding: 2rem 1rem;
}
}
</style>
{% endblock %}
{% block content %}
<div class="legal-content">
<h1 class="legal-title">Terms of Service</h1>
<p class="legal-updated">Last Updated: November 16, 2025</p>
<h2>1. Introduction</h2>
<p>These Terms of Service ("Terms") constitute a legally binding agreement between you ("User," "you," or "your") and MyWebdav Technologies ("Company," "we," "us," or "our") governing your use of the MyWebdav cloud storage service (the "Service").</p>
<p>By accessing or using the Service, you acknowledge that you have read, understood, and agree to be bound by these Terms. If you do not agree, you must not use the Service.</p>
<h2>2. Service Description</h2>
<p>MyWebdav provides cloud-based file storage, sharing, and collaboration tools. The Service includes:</p>
<ul>
<li>Secure file storage and backup</li>
<li>File sharing and collaboration features</li>
<li>WebDAV protocol support</li>
<li>API access for integrations</li>
<li>Administrative and management tools</li>
</ul>
<h2>3. User Eligibility and Account Registration</h2>
<h3>3.1 Eligibility</h3>
<p>You must be at least 16 years old and have the legal capacity to enter into these Terms.</p>
<h3>3.2 Account Registration</h3>
<p>To use the Service, you must create an account with accurate information. You are responsible for maintaining the confidentiality of your account credentials and all activities under your account.</p>
<h3>3.3 Account Suspension/Termination</h3>
<p>We may suspend or terminate your account for violations of these Terms, illegal activity, or at our discretion with reasonable notice.</p>
<h2>4. Acceptable Use Policy</h2>
<p>You agree not to:</p>
<ul>
<li>Violate applicable laws or regulations</li>
<li>Infringe intellectual property rights</li>
<li>Upload malicious, illegal, or harmful content</li>
<li>Attempt unauthorized access to systems</li>
<li>Use the Service for spam or harassment</li>
<li>Circumvent security measures</li>
<li>Exceed fair usage limits</li>
</ul>
<h2>5. Content Ownership and Rights</h2>
<h3>5.1 Your Content</h3>
<p>You retain ownership of content you upload ("Your Content"). You grant us a limited license to store, process, and transmit Your Content solely to provide the Service.</p>
<h3>5.2 Prohibited Content</h3>
<p>You may not upload content that is:</p>
<ul>
<li>Illegal, defamatory, or obscene</li>
<li>Infringing on third-party rights</li>
<li>Containing malware or viruses</li>
<li>Excessive in volume without prior agreement</li>
</ul>
<h3>5.3 Content Removal</h3>
<p>We may remove content that violates these Terms, with or without notice.</p>
<h2>6. Service Availability and Limitations</h2>
<h3>6.1 Availability</h3>
<p>We strive for high availability but do not guarantee uninterrupted service. Scheduled maintenance may cause temporary outages.</p>
<h3>6.2 Storage Limits</h3>
<p>Storage limits vary by plan. Exceeding limits may result in additional charges or service restrictions.</p>
<h3>6.3 Fair Usage</h3>
<p>Excessive usage that impacts other users may result in throttling or additional charges.</p>
<h2>7. Billing and Payment</h2>
<h3>7.1 Fees</h3>
<p>Service fees are as published on our website. Prices may change with 30 days' notice.</p>
<h3>7.2 Payment</h3>
<p>You agree to pay all charges associated with your account. Failed payments may result in service suspension.</p>
<h3>7.3 Refunds</h3>
<p>Fees are generally non-refundable except as required by law or at our discretion.</p>
<h2>8. Data Protection and Privacy</h2>
<p>Your use of the Service is subject to our Privacy Policy, which is incorporated by reference. We comply with GDPR and other data protection regulations.</p>
<h2>9. Security and Data Protection</h2>
<p>We implement industry-standard security measures, but you acknowledge that no system is completely secure. You are responsible for your data security.</p>
<h2>10. Intellectual Property</h2>
<p>The Service and its original content are protected by intellectual property laws. You may not copy, modify, or distribute our proprietary materials.</p>
<h2>11. Disclaimers</h2>
<p><strong>THE SERVICE IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND. WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</strong></p>
<h2>12. Limitation of Liability</h2>
<p><strong>TO THE MAXIMUM EXTENT PERMITTED BY LAW, OUR TOTAL LIABILITY SHALL NOT EXCEED THE AMOUNT PAID BY YOU IN THE 12 MONTHS PRECEDING THE CLAIM.</strong></p>
<h2>13. Indemnification</h2>
<p>You agree to indemnify and hold us harmless from claims arising from your use of the Service or violation of these Terms.</p>
<h2>14. Governing Law and Dispute Resolution</h2>
<p>These Terms are governed by the laws of the Netherlands. Disputes shall be resolved through binding arbitration in Amsterdam, Netherlands.</p>
<h2>15. Modifications to Terms</h2>
<p>We may modify these Terms with reasonable notice. Continued use after changes constitutes acceptance.</p>
<h2>16. Severability</h2>
<p>If any provision is found invalid, the remaining provisions remain in effect.</p>
<h2>17. Entire Agreement</h2>
<p>These Terms constitute the entire agreement between you and us regarding the Service.</p>
<div class="legal-contact">
<h3>Contact Information</h3>
<p>If you have any questions about this terms of service, please contact us:</p>
<ul>
<li><strong>Email:</strong> <a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a></li>
<li><strong>Website:</strong> <a href="https://mywebdav.eu">https://mywebdav.eu</a></li>
<li><strong>Address:</strong> MyWebdav Technologies, European Union</li>
</ul>
</div>
</div>
{% endblock %}

View File

@ -1,377 +0,0 @@
{% extends "base.html" %}
{% block title %}Pricing - MyWebdav Cloud Storage{% endblock %}
{% block description %}Simple, transparent pay-as-you-go pricing. Only pay for what you use with no hidden fees.{% endblock %}
{% block extra_css %}
<style>
.content-section {
max-width: 1200px;
margin: 0 auto;
padding: 4rem 2rem;
}
.page-title {
font-size: 3rem;
font-weight: 700;
color: #1565c0;
text-align: center;
margin-bottom: 1rem;
}
.page-subtitle {
font-size: 1.25rem;
color: #666;
text-align: center;
margin-bottom: 3rem;
}
.pricing-hero {
background: linear-gradient(135deg, #1976d2 0%, #1565c0 100%);
color: white;
padding: 3rem;
border-radius: 12px;
text-align: center;
margin-bottom: 3rem;
}
.pricing-hero-amount {
font-size: 5rem;
font-weight: 700;
color: #fff;
margin: 1rem 0;
}
.pricing-hero-description {
font-size: 1.5rem;
opacity: 0.95;
}
.pricing-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-top: 3rem;
}
.pricing-card {
background: white;
border-radius: 8px;
padding: 2rem;
border: 2px solid #e0e0e0;
transition: all 0.3s;
}
.pricing-card.featured {
border-color: #d32f2f;
box-shadow: 0 8px 24px rgba(211, 47, 47, 0.2);
transform: scale(1.05);
}
.pricing-card:hover {
border-color: #1976d2;
box-shadow: 0 4px 12px rgba(25, 118, 210, 0.1);
}
.pricing-tier {
font-size: 1.75rem;
font-weight: 600;
color: #333;
margin-bottom: 0.5rem;
}
.pricing-amount {
font-size: 2.5rem;
font-weight: 700;
color: #d32f2f;
margin: 1rem 0;
}
.pricing-period {
font-size: 1rem;
color: #666;
margin-bottom: 1.5rem;
}
.pricing-features {
list-style: none;
padding: 0;
margin: 1.5rem 0;
}
.pricing-features li {
padding: 0.75rem 0;
color: #555;
border-bottom: 1px solid #f0f0f0;
}
.pricing-features li:last-child {
border-bottom: none;
}
.pricing-features li:before {
content: "✓ ";
color: #d32f2f;
font-weight: bold;
margin-right: 0.5rem;
}
.pricing-cta {
margin-top: 1.5rem;
}
.calculator-section {
background: #f5f5f5;
padding: 3rem;
border-radius: 12px;
margin-top: 3rem;
}
.calculator-title {
font-size: 2rem;
font-weight: 600;
color: #333;
text-align: center;
margin-bottom: 2rem;
}
.calculator-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
margin-bottom: 2rem;
}
.calculator-input-group {
background: white;
padding: 1.5rem;
border-radius: 8px;
}
.calculator-label {
font-weight: 600;
color: #333;
margin-bottom: 0.5rem;
display: block;
}
.calculator-input {
width: 100%;
padding: 0.75rem;
border: 2px solid #e0e0e0;
border-radius: 4px;
font-size: 1rem;
}
.calculator-result {
background: #1976d2;
color: white;
padding: 2rem;
border-radius: 8px;
text-align: center;
}
.calculator-result-label {
font-size: 1rem;
opacity: 0.9;
margin-bottom: 0.5rem;
}
.calculator-result-amount {
font-size: 3rem;
font-weight: 700;
}
.faq-section {
margin-top: 4rem;
}
.faq-title {
font-size: 2rem;
font-weight: 600;
color: #333;
text-align: center;
margin-bottom: 2rem;
}
.faq-item {
background: white;
padding: 1.5rem;
border-radius: 8px;
border: 2px solid #e0e0e0;
margin-bottom: 1rem;
}
.faq-question {
font-weight: 600;
color: #333;
font-size: 1.125rem;
margin-bottom: 0.5rem;
}
.faq-answer {
color: #666;
line-height: 1.6;
}
@media (max-width: 768px) {
.page-title {
font-size: 2rem;
}
.pricing-hero-amount {
font-size: 3.5rem;
}
.pricing-card.featured {
transform: scale(1);
}
}
</style>
{% endblock %}
{% block content %}
<div class="content-section">
<h1 class="page-title">SIMPLE, TRANSPARENT PRICING</h1>
<p class="page-subtitle">Pay only for what you use. No hidden fees, no surprises.</p>
<div class="pricing-hero">
<h2 style="font-size: 2rem; margin: 0;">Pay-As-You-Go Storage</h2>
<div class="pricing-hero-amount">$5/TB</div>
<p class="pricing-hero-description">Plus 15GB free tier included</p>
</div>
<div class="pricing-grid">
<div class="pricing-card">
<div class="pricing-tier">Free Tier</div>
<div class="pricing-amount">$0</div>
<div class="pricing-period">First 15GB included</div>
<ul class="pricing-features">
<li>15GB storage included</li>
<li>15GB bandwidth per month</li>
<li>All core features</li>
<li>WebDAV support</li>
<li>File versioning</li>
<li>Two-factor authentication</li>
<li>EU data residency</li>
</ul>
<div class="pricing-cta">
<a href="/app" class="btn btn-secondary" style="width: 100%;">Get Started Free</a>
</div>
</div>
<div class="pricing-card featured">
<div class="pricing-tier">Pay-As-You-Go</div>
<div class="pricing-amount">$5/TB</div>
<div class="pricing-period">Billed monthly</div>
<ul class="pricing-features">
<li>$0.0045 per GB per month storage</li>
<li>$0.009 per GB egress bandwidth</li>
<li>Free ingress bandwidth</li>
<li>All premium features</li>
<li>99.9% uptime SLA</li>
<li>24/7 support</li>
<li>API access</li>
<li>Priority support</li>
</ul>
<div class="pricing-cta">
<a href="/app" class="btn btn-primary" style="width: 100%;">Start Using</a>
</div>
</div>
<div class="pricing-card">
<div class="pricing-tier">Enterprise</div>
<div class="pricing-amount">Custom</div>
<div class="pricing-period">Contact us for pricing</div>
<ul class="pricing-features">
<li>Volume discounts available</li>
<li>Dedicated account manager</li>
<li>Custom SLA options</li>
<li>Priority support 24/7</li>
<li>Custom integrations</li>
<li>Training and onboarding</li>
<li>Compliance assistance</li>
<li>Dedicated infrastructure</li>
</ul>
<div class="pricing-cta">
<a href="/support" class="btn btn-secondary" style="width: 100%;">Contact Sales</a>
</div>
</div>
</div>
<div class="calculator-section">
<h2 class="calculator-title">Pricing Calculator</h2>
<div class="calculator-grid">
<div class="calculator-input-group">
<label class="calculator-label">Storage (GB)</label>
<input type="number" class="calculator-input" id="storage" value="100" min="0" oninput="calculatePrice()">
</div>
<div class="calculator-input-group">
<label class="calculator-label">Bandwidth Egress (GB/month)</label>
<input type="number" class="calculator-input" id="bandwidth" value="50" min="0" oninput="calculatePrice()">
</div>
</div>
<div class="calculator-result">
<div class="calculator-result-label">Estimated Monthly Cost</div>
<div class="calculator-result-amount" id="result">$0.00</div>
</div>
</div>
<div class="faq-section">
<h2 class="faq-title">Frequently Asked Questions</h2>
<div class="faq-item">
<div class="faq-question">How is storage calculated?</div>
<div class="faq-answer">Storage is calculated based on your average daily usage throughout the month. You're charged $0.0045 per GB per month ($5 per TB). The first 15GB is always free.</div>
</div>
<div class="faq-item">
<div class="faq-question">What is bandwidth egress?</div>
<div class="faq-answer">Bandwidth egress is data transferred out of MyWebdav (downloads). You're charged $0.009 per GB. The first 15GB per month is free. Uploads (ingress) are always free.</div>
</div>
<div class="faq-item">
<div class="faq-question">Are there any hidden fees?</div>
<div class="faq-answer">No. We believe in transparent pricing. You only pay for storage and egress bandwidth as shown. There are no setup fees, minimum charges, or surprise costs.</div>
</div>
<div class="faq-item">
<div class="faq-question">Can I cancel anytime?</div>
<div class="faq-answer">Yes. There are no long-term contracts or commitments. You can delete your account at any time and will only be charged for usage up to that point.</div>
</div>
<div class="faq-item">
<div class="faq-question">What payment methods do you accept?</div>
<div class="faq-answer">We accept all major credit cards (Visa, Mastercard, American Express) and SEPA direct debit through our payment processor Stripe.</div>
</div>
<div class="faq-item">
<div class="faq-question">Do you offer volume discounts?</div>
<div class="faq-answer">Yes. For storage over 10TB or bandwidth over 5TB per month, please contact our sales team for custom pricing.</div>
</div>
</div>
</div>
<script>
function calculatePrice() {
const storage = parseFloat(document.getElementById('storage').value) || 0;
const bandwidth = parseFloat(document.getElementById('bandwidth').value) || 0;
const freeStorage = 15;
const freeBandwidth = 15;
const billableStorage = Math.max(0, storage - freeStorage);
const billableBandwidth = Math.max(0, bandwidth - freeBandwidth);
const storageCost = billableStorage * 0.0045;
const bandwidthCost = billableBandwidth * 0.009;
const total = storageCost + bandwidthCost;
document.getElementById('result').textContent = '$' + total.toFixed(2);
}
calculatePrice();
</script>
{% endblock %}

View File

@ -1,35 +0,0 @@
{% extends "base.html" %}
{% block title %}MyWebdav - Pay-As-You-Go Cloud Storage{% endblock %}
{% block description %}Store what you need, only pay for what you use. $5/TB cloud storage with MyWebdav.{% endblock %}
{% block content %}
<div class="hero-section">
<div class="hero-content">
<h1 class="hero-title">PAY-AS-YOU-GO<br>CLOUD STORAGE</h1>
<div class="hero-price">$5/TB</div>
<p class="hero-subtitle">Store what you need, only pay for what you use</p>
<div class="hero-actions">
<a href="/login" class="btn btn-secondary">Login</a>
<a href="/app" class="btn btn-primary">Sign Up</a>
</div>
</div>
<div class="hero-image">
<svg class="cloud-icon" viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="cloudGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#b3d9f2;stop-opacity:1" />
<stop offset="100%" style="stop-color:#7fc4ef;stop-opacity:1" />
</linearGradient>
</defs>
<path d="M150,70 Q170,50 170,70 Q190,70 190,90 Q190,110 170,110 L60,110 Q40,110 40,90 Q40,75 50,65 Q50,45 70,45 Q80,30 100,30 Q120,30 130,45 Q150,50 150,70 Z"
fill="url(#cloudGradient)"
opacity="0.8"/>
<polygon points="140,90 160,70 150,90 165,90 145,115 150,95 135,95"
fill="#ef5350"
opacity="0.9"/>
</svg>
</div>
</div>
{% endblock %}

View File

@ -1,432 +0,0 @@
{% extends "base.html" %}
{% block title %}Support - MyWebdav Cloud Storage{% endblock %}
{% block description %}Get help with MyWebdav. Contact our support team or find answers in our knowledge base.{% endblock %}
{% block extra_css %}
<style>
.content-section {
max-width: 1200px;
margin: 0 auto;
padding: 4rem 2rem;
}
.page-title {
font-size: 3rem;
font-weight: 700;
color: #1565c0;
text-align: center;
margin-bottom: 1rem;
}
.page-subtitle {
font-size: 1.25rem;
color: #666;
text-align: center;
margin-bottom: 3rem;
}
.support-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-top: 2rem;
}
.support-card {
background: white;
border-radius: 8px;
padding: 2rem;
border: 2px solid #e0e0e0;
text-align: center;
transition: all 0.3s;
}
.support-card:hover {
border-color: #1976d2;
box-shadow: 0 4px 12px rgba(25, 118, 210, 0.1);
transform: translateY(-2px);
}
.support-icon {
font-size: 3rem;
margin-bottom: 1rem;
}
.support-title {
font-size: 1.5rem;
font-weight: 600;
color: #333;
margin-bottom: 1rem;
}
.support-description {
color: #666;
line-height: 1.6;
margin-bottom: 1.5rem;
}
.contact-section {
background: linear-gradient(135deg, #1976d2 0%, #1565c0 100%);
color: white;
padding: 3rem;
border-radius: 12px;
margin-top: 3rem;
}
.contact-title {
font-size: 2rem;
font-weight: 600;
text-align: center;
margin-bottom: 2rem;
}
.contact-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
.contact-item {
text-align: center;
padding: 1rem;
}
.contact-item-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.contact-item-label {
font-weight: 600;
margin-bottom: 0.5rem;
}
.contact-item-value {
opacity: 0.95;
}
.contact-item-value a {
color: white;
text-decoration: none;
}
.contact-item-value a:hover {
text-decoration: underline;
}
.kb-section {
margin-top: 4rem;
}
.kb-title {
font-size: 2rem;
font-weight: 600;
color: #333;
text-align: center;
margin-bottom: 2rem;
}
.kb-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
}
.kb-category {
background: white;
border-radius: 8px;
padding: 1.5rem;
border: 2px solid #e0e0e0;
}
.kb-category-title {
font-weight: 600;
color: #1976d2;
font-size: 1.25rem;
margin-bottom: 1rem;
}
.kb-links {
list-style: none;
padding: 0;
margin: 0;
}
.kb-links li {
padding: 0.5rem 0;
border-bottom: 1px solid #f0f0f0;
}
.kb-links li:last-child {
border-bottom: none;
}
.kb-links a {
color: #555;
text-decoration: none;
transition: color 0.2s;
}
.kb-links a:hover {
color: #1976d2;
}
.status-section {
background: #f5f5f5;
padding: 2rem;
border-radius: 12px;
margin-top: 3rem;
text-align: center;
}
.status-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: #4caf50;
color: white;
padding: 0.75rem 1.5rem;
border-radius: 24px;
font-weight: 600;
font-size: 1.125rem;
}
.status-indicator {
width: 12px;
height: 12px;
background: white;
border-radius: 50%;
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
@media (max-width: 768px) {
.page-title {
font-size: 2rem;
}
.support-grid,
.contact-grid,
.kb-grid {
grid-template-columns: 1fr;
}
}
</style>
{% endblock %}
{% block content %}
<div class="content-section">
<h1 class="page-title">WE'RE HERE TO HELP</h1>
<p class="page-subtitle">Get the support you need, when you need it</p>
<div class="support-grid">
<div class="support-card">
<div class="support-icon">📧</div>
<h2 class="support-title">Email Support</h2>
<p class="support-description">Send us an email and we'll respond within 24 hours.</p>
<a href="mailto:support@mywebdav.eu" class="btn btn-primary">Email Us</a>
</div>
<div class="support-card">
<div class="support-icon">📚</div>
<h2 class="support-title">Documentation</h2>
<p class="support-description">Browse our comprehensive guides and API documentation.</p>
<a href="#knowledge-base" class="btn btn-secondary">View Docs</a>
</div>
<div class="support-card">
<div class="support-icon">💬</div>
<h2 class="support-title">Community Forum</h2>
<p class="support-description">Connect with other users and share knowledge.</p>
<a href="mailto:community@mywebdav.eu" class="btn btn-secondary">Join Forum</a>
</div>
</div>
<div class="status-section">
<h2 style="color: #333; margin-bottom: 1rem;">Service Status</h2>
<div class="status-badge">
<span class="status-indicator"></span>
All Systems Operational
</div>
<p style="color: #666; margin-top: 1rem;">99.9% uptime over the last 30 days</p>
</div>
<div class="contact-section">
<h2 class="contact-title">Contact Information</h2>
<div class="contact-grid">
<div class="contact-item">
<div class="contact-item-icon">📧</div>
<div class="contact-item-label">General Support</div>
<div class="contact-item-value">
<a href="mailto:support@mywebdav.eu">support@mywebdav.eu</a>
</div>
</div>
<div class="contact-item">
<div class="contact-item-icon">🔧</div>
<div class="contact-item-label">Technical Support</div>
<div class="contact-item-value">
<a href="mailto:tech-support@mywebdav.eu">tech-support@mywebdav.eu</a>
</div>
</div>
<div class="contact-item">
<div class="contact-item-icon">💰</div>
<div class="contact-item-label">Billing Inquiries</div>
<div class="contact-item-value">
<a href="mailto:billing@mywebdav.eu">billing@mywebdav.eu</a>
</div>
</div>
<div class="contact-item">
<div class="contact-item-icon">🔒</div>
<div class="contact-item-label">Data Protection</div>
<div class="contact-item-value">
<a href="mailto:dpo@mywebdav.eu">dpo@mywebdav.eu</a>
</div>
</div>
<div class="contact-item">
<div class="contact-item-icon">⚖️</div>
<div class="contact-item-label">Legal Matters</div>
<div class="contact-item-value">
<a href="mailto:legal@mywebdav.eu">legal@mywebdav.eu</a>
</div>
</div>
<div class="contact-item">
<div class="contact-item-icon">🏢</div>
<div class="contact-item-label">Sales & Enterprise</div>
<div class="contact-item-value">
<a href="mailto:sales@mywebdav.eu">sales@mywebdav.eu</a>
</div>
</div>
</div>
</div>
<div class="kb-section" id="knowledge-base">
<h2 class="kb-title">Knowledge Base</h2>
<div class="kb-grid">
<div class="kb-category">
<div class="kb-category-title">Getting Started</div>
<ul class="kb-links">
<li><a href="#kb">Creating your account</a></li>
<li><a href="#kb">Uploading your first file</a></li>
<li><a href="#kb">Setting up WebDAV</a></li>
<li><a href="#kb">Organizing with folders</a></li>
<li><a href="#kb">Understanding pricing</a></li>
</ul>
</div>
<div class="kb-category">
<div class="kb-category-title">Account Management</div>
<ul class="kb-links">
<li><a href="#kb">Updating account details</a></li>
<li><a href="#kb">Enabling two-factor auth</a></li>
<li><a href="#kb">Managing billing</a></li>
<li><a href="#kb">Viewing usage statistics</a></li>
<li><a href="#kb">Deleting your account</a></li>
</ul>
</div>
<div class="kb-category">
<div class="kb-category-title">File Management</div>
<ul class="kb-links">
<li><a href="#kb">Upload and download files</a></li>
<li><a href="#kb">File versioning</a></li>
<li><a href="#kb">Sharing files</a></li>
<li><a href="#kb">Search and filter</a></li>
<li><a href="#kb">Bulk operations</a></li>
</ul>
</div>
<div class="kb-category">
<div class="kb-category-title">WebDAV Setup</div>
<ul class="kb-links">
<li><a href="#kb">Windows setup</a></li>
<li><a href="#kb">macOS setup</a></li>
<li><a href="#kb">Linux setup</a></li>
<li><a href="#kb">Mobile setup</a></li>
<li><a href="#kb">Troubleshooting WebDAV</a></li>
</ul>
</div>
<div class="kb-category">
<div class="kb-category-title">Security & Privacy</div>
<ul class="kb-links">
<li><a href="#kb">Understanding encryption</a></li>
<li><a href="#kb">Two-factor authentication</a></li>
<li><a href="#kb">Data residency</a></li>
<li><a href="#kb">GDPR compliance</a></li>
<li><a href="#kb">Security best practices</a></li>
</ul>
</div>
<div class="kb-category">
<div class="kb-category-title">API & Integration</div>
<ul class="kb-links">
<li><a href="#kb">API documentation</a></li>
<li><a href="#kb">Authentication</a></li>
<li><a href="#kb">Code examples</a></li>
<li><a href="#kb">Rate limits</a></li>
<li><a href="#kb">Webhooks</a></li>
</ul>
</div>
<div class="kb-category">
<div class="kb-category-title">Billing & Pricing</div>
<ul class="kb-links">
<li><a href="#kb">How pricing works</a></li>
<li><a href="#kb">Reading your invoice</a></li>
<li><a href="#kb">Payment methods</a></li>
<li><a href="#kb">Free tier details</a></li>
<li><a href="#kb">Enterprise pricing</a></li>
</ul>
</div>
<div class="kb-category">
<div class="kb-category-title">Troubleshooting</div>
<ul class="kb-links">
<li><a href="#kb">Upload errors</a></li>
<li><a href="#kb">Connection issues</a></li>
<li><a href="#kb">Performance problems</a></li>
<li><a href="#kb">Login issues</a></li>
<li><a href="#kb">Common error messages</a></li>
</ul>
</div>
</div>
</div>
<div style="background: white; padding: 3rem; border-radius: 12px; border: 2px solid #e0e0e0; margin-top: 3rem; text-align: center;">
<h2 style="color: #333; margin-bottom: 1rem;">Response Times</h2>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem;">
<div>
<div style="font-size: 2rem; color: #d32f2f; font-weight: 700;">24 hours</div>
<div style="color: #666;">General Inquiries</div>
</div>
<div>
<div style="font-size: 2rem; color: #d32f2f; font-weight: 700;">4 hours</div>
<div style="color: #666;">Technical Issues</div>
</div>
<div>
<div style="font-size: 2rem; color: #d32f2f; font-weight: 700;">5 days</div>
<div style="color: #666;">Complaint Response</div>
</div>
<div>
<div style="font-size: 2rem; color: #d32f2f; font-weight: 700;">30 days</div>
<div style="color: #666;">GDPR Requests</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -32,7 +32,6 @@ ffmpeg-python = "*"
gunicorn = "*" gunicorn = "*"
aiosmtplib = "*" aiosmtplib = "*"
stripe = "*" stripe = "*"
jinja2 = "*"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
black = "*" black = "*"

View File

@ -118,4 +118,3 @@ websockets==15.0.1
yarl==1.22.0 yarl==1.22.0
zstandard==0.25.0 zstandard==0.25.0
aiosmtplib==5.0.0 aiosmtplib==5.0.0
jinja2

View File

@ -1,218 +0,0 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
background: #f5f5f5;
color: #333;
min-height: 100vh;
display: flex;
flex-direction: column;
}
.header {
background: white;
border-bottom: 2px solid #e0e0e0;
padding: 1rem 0;
}
.nav-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 2rem;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 1.5rem;
font-weight: 600;
}
.logo-icon {
color: #1976d2;
font-size: 1.8rem;
}
.logo-text {
color: #333;
}
.logo-webdav {
color: #d32f2f;
}
.nav-menu {
display: flex;
gap: 2rem;
list-style: none;
}
.nav-menu a {
color: #1976d2;
text-decoration: none;
font-weight: 500;
transition: color 0.2s;
}
.nav-menu a:hover {
color: #1565c0;
}
.hero-section {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding: 4rem 2rem;
gap: 4rem;
}
.hero-content {
flex: 1;
max-width: 600px;
}
.hero-title {
font-size: 3rem;
font-weight: 700;
color: #1565c0;
line-height: 1.2;
margin-bottom: 1rem;
}
.hero-price {
font-size: 4rem;
font-weight: 700;
color: #d32f2f;
margin-bottom: 1rem;
}
.hero-subtitle {
font-size: 1.125rem;
color: #555;
margin-bottom: 2rem;
}
.hero-actions {
display: flex;
gap: 1rem;
}
.btn {
padding: 0.875rem 2rem;
border-radius: 4px;
text-decoration: none;
font-weight: 600;
font-size: 1rem;
transition: all 0.2s;
display: inline-block;
border: none;
cursor: pointer;
}
.btn-primary {
background: #d32f2f;
color: white;
}
.btn-primary:hover {
background: #c62828;
transform: translateY(-1px);
box-shadow: 0 4px 8px rgba(211, 47, 47, 0.3);
}
.btn-secondary {
background: transparent;
color: #1976d2;
border: 2px solid #1976d2;
}
.btn-secondary:hover {
background: #1976d2;
color: white;
}
.hero-image {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
}
.cloud-icon {
width: 100%;
max-width: 400px;
height: auto;
}
.footer {
background: white;
border-top: 2px solid #e0e0e0;
padding: 2rem;
text-align: center;
}
.footer-links {
display: flex;
justify-content: center;
gap: 1.5rem;
margin-bottom: 1rem;
flex-wrap: wrap;
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
.footer-links a {
color: #1976d2;
text-decoration: none;
font-size: 0.875rem;
}
.footer-links a:hover {
text-decoration: underline;
}
.footer-copyright {
color: #666;
font-size: 0.875rem;
}
@media (max-width: 768px) {
.hero-section {
flex-direction: column;
text-align: center;
}
.hero-title {
font-size: 2rem;
}
.hero-price {
font-size: 3rem;
}
.hero-actions {
justify-content: center;
flex-wrap: wrap;
}
.nav-menu {
gap: 1rem;
}
.footer-links {
flex-direction: column;
gap: 0.5rem;
}
}