Merge pull request #53 from christianlouis/52-add-gdpr-compliant-privacy-notice-to-docuelevate-ui-and-public-landing-page
52 add gdpr compliant privacy notice to docuelevate UI and public landing page
This commit is contained in:
+10
@@ -21,6 +21,16 @@ COPY ./frontend /app/frontend
|
||||
COPY ./VERSION /app/VERSION
|
||||
COPY ./LICENSE /app/LICENSE
|
||||
|
||||
# Copy build script and generate build date
|
||||
COPY ./docker/build-scripts/save-build-date.sh /tmp/
|
||||
RUN mkdir -p /app/docker/build-scripts/ && \
|
||||
cp /tmp/save-build-date.sh /app/docker/build-scripts/ && \
|
||||
chmod +x /tmp/save-build-date.sh && \
|
||||
/tmp/save-build-date.sh
|
||||
|
||||
# Set build date as environment variable
|
||||
#ENV BUILD_DATE=$(cat /app/BUILD_DATE)
|
||||
|
||||
# Set Python path explicitly
|
||||
ENV PYTHONPATH=/app
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
from pydantic_settings import BaseSettings
|
||||
from typing import Optional, List, Dict, Any
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
class Settings(BaseSettings):
|
||||
database_url: str
|
||||
@@ -121,6 +122,29 @@ class Settings(BaseSettings):
|
||||
# Feature flags
|
||||
allow_file_delete: bool = True # Default to allowing file deletion from database
|
||||
|
||||
# Get build date from environment or file
|
||||
@property
|
||||
def build_date(self) -> str:
|
||||
# First try to get build date from environment
|
||||
env_build_date = os.environ.get("BUILD_DATE")
|
||||
if env_build_date:
|
||||
return env_build_date
|
||||
|
||||
# Then try to get build date from BUILD_DATE file
|
||||
build_date_file = os.path.join(os.path.dirname(os.path.dirname(__file__)), "BUILD_DATE")
|
||||
if os.path.exists(build_date_file):
|
||||
with open(build_date_file, "r") as f:
|
||||
return f.read().strip()
|
||||
|
||||
# If a timestamp file doesn't exist, try to get the app.py creation/modification time
|
||||
app_file = os.path.join(os.path.dirname(__file__), "app.py")
|
||||
if os.path.exists(app_file):
|
||||
timestamp = os.path.getmtime(app_file)
|
||||
return datetime.fromtimestamp(timestamp).strftime("%B %d, %Y")
|
||||
|
||||
# Default to current date if not found elsewhere
|
||||
return datetime.now().strftime("%B %d, %Y")
|
||||
|
||||
# Get version from file or environment
|
||||
@property
|
||||
def version(self) -> str:
|
||||
|
||||
+49
-3
@@ -4,21 +4,55 @@ General routes for the application homepage and basic pages.
|
||||
from fastapi import Request, HTTPException
|
||||
from fastapi.responses import FileResponse
|
||||
from pathlib import Path
|
||||
from datetime import date
|
||||
|
||||
from app.views.base import APIRouter, templates, require_login
|
||||
from app.utils.config_validator import get_provider_status, validate_storage_configs
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.get("/", include_in_schema=False)
|
||||
async def serve_index(request: Request):
|
||||
"""Serve the index/home page."""
|
||||
return templates.TemplateResponse("index.html", {"request": request})
|
||||
# Get provider information from config validator
|
||||
providers = get_provider_status()
|
||||
|
||||
# Count configured providers
|
||||
configured_providers = sum(1 for provider in providers.values() if provider['configured'])
|
||||
|
||||
# Count different types of storage targets
|
||||
storage_issues = validate_storage_configs()
|
||||
configured_storage_targets = sum(1 for provider, issues in storage_issues.items()
|
||||
if not issues and provider in ['dropbox', 'nextcloud', 'sftp',
|
||||
's3', 'ftp', 'webdav',
|
||||
'google_drive', 'onedrive'])
|
||||
|
||||
# Create stats object to pass to the template
|
||||
stats = {
|
||||
"processed_files": 0, # Placeholder - would need actual DB query
|
||||
"active_integrations": configured_providers,
|
||||
"storage_targets": configured_storage_targets
|
||||
}
|
||||
|
||||
return templates.TemplateResponse("index.html", {"request": request, "stats": stats})
|
||||
|
||||
@router.get("/about", include_in_schema=False)
|
||||
async def serve_about(request: Request):
|
||||
"""Serve the about page."""
|
||||
return templates.TemplateResponse("about.html", {"request": request})
|
||||
|
||||
@router.get("/privacy", include_in_schema=False)
|
||||
async def serve_privacy(request: Request):
|
||||
"""Serve the privacy policy page."""
|
||||
# Pass the current date for the "Last Updated" field
|
||||
current_date = date.today().strftime("%B %d, %Y")
|
||||
return templates.TemplateResponse("privacy.html", {"request": request, "current_date": current_date})
|
||||
|
||||
@router.get("/imprint", include_in_schema=False)
|
||||
async def serve_imprint(request: Request):
|
||||
"""Serve the imprint/impressum page."""
|
||||
return templates.TemplateResponse("imprint.html", {"request": request})
|
||||
|
||||
@router.get("/upload", include_in_schema=False)
|
||||
@require_login
|
||||
async def serve_upload(request: Request):
|
||||
@@ -43,7 +77,7 @@ async def serve_license(request: Request):
|
||||
Path("/app/LICENSE"), # Docker container path
|
||||
Path.home() / "LICENSE", # Home directory (fallback)
|
||||
]
|
||||
|
||||
|
||||
license_text = None
|
||||
|
||||
# Try to read from any of the possible locations
|
||||
@@ -66,7 +100,7 @@ This software is licensed under the Apache License 2.0.
|
||||
The full license text could not be located on this system.
|
||||
Please visit http://www.apache.org/licenses/LICENSE-2.0 for the complete license text.
|
||||
"""
|
||||
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"license.html",
|
||||
{
|
||||
@@ -74,3 +108,15 @@ Please visit http://www.apache.org/licenses/LICENSE-2.0 for the complete license
|
||||
"license_text": license_text
|
||||
}
|
||||
)
|
||||
|
||||
@router.get("/cookies", include_in_schema=False)
|
||||
async def serve_cookies(request: Request):
|
||||
"""Serve the cookie policy page."""
|
||||
current_date = date.today().strftime("%B %d, %Y")
|
||||
return templates.TemplateResponse("cookies.html", {"request": request, "current_date": current_date})
|
||||
|
||||
@router.get("/terms", include_in_schema=False)
|
||||
async def serve_terms(request: Request):
|
||||
"""Serve the terms of service page."""
|
||||
current_date = date.today().strftime("%B %d, %Y")
|
||||
return templates.TemplateResponse("terms.html", {"request": request, "current_date": current_date})
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Get current date in Month DD, YYYY format (e.g., May 15, 2024)
|
||||
BUILD_DATE=$(date +"%B %d, %Y")
|
||||
|
||||
# Save it to the BUILD_DATE file
|
||||
echo $BUILD_DATE > /app/BUILD_DATE
|
||||
|
||||
# Also set it as an environment variable
|
||||
echo "Setting BUILD_DATE=$BUILD_DATE"
|
||||
export BUILD_DATE
|
||||
@@ -15,7 +15,7 @@
|
||||
<h2 class="text-2xl font-semibold mb-2">Our Story</h2>
|
||||
<p class="text-gray-600 mb-4">
|
||||
DocuElevate was created with one goal in mind: to simplify and streamline document management
|
||||
for everyone, whether you’re a small startup or a large enterprise.
|
||||
for everyone, whether you're a small startup or a large enterprise.
|
||||
</p>
|
||||
<p class="text-gray-600">
|
||||
We harness the power of OpenAI for metadata extraction and text refinement, integrate seamlessly
|
||||
@@ -24,18 +24,48 @@
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<!-- Key Features Section -->
|
||||
<!-- Key Features Section - Updated with more comprehensive features -->
|
||||
<section class="bg-white shadow rounded p-6 mb-8">
|
||||
<h2 class="text-2xl font-semibold mb-2">Key Features</h2>
|
||||
<ul class="list-disc list-inside text-gray-600">
|
||||
<li>Simple and secure file uploads with drag & drop support</li>
|
||||
<li>Automated metadata extraction, indexing, and version control</li>
|
||||
<li>Integration with popular cloud services and storage platforms</li>
|
||||
<li>OCR and intelligent document processing powered by AI</li>
|
||||
<li>IMAP integration for automated document fetching</li>
|
||||
<li>Highly configurable via environment variables</li>
|
||||
<li>Docker-ready for easy deployment</li>
|
||||
</ul>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<h3 class="font-medium text-lg text-gray-800">Document Processing</h3>
|
||||
<ul class="list-disc list-inside text-gray-600 ml-2">
|
||||
<li>Simple and secure file uploads with drag & drop support</li>
|
||||
<li>OCR powered by Azure Document Intelligence</li>
|
||||
<li>Automated metadata extraction using OpenAI</li>
|
||||
<li>PDF conversion for various file formats via Gotenberg</li>
|
||||
<li>Intelligent document classification and date extraction</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-medium text-lg text-gray-800">Integration & Storage</h3>
|
||||
<ul class="list-disc list-inside text-gray-600 ml-2">
|
||||
<li>Multi-destination support (store documents in multiple locations)</li>
|
||||
<li>Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3</li>
|
||||
<li>Self-hosted options: Nextcloud, Paperless NGX, WebDAV</li>
|
||||
<li>Transfer protocols: FTP, SFTP, Email forwarding</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-medium text-lg text-gray-800">Automation</h3>
|
||||
<ul class="list-disc list-inside text-gray-600 ml-2">
|
||||
<li>IMAP inbox polling from multiple sources</li>
|
||||
<li>Gmail and generic email account integration</li>
|
||||
<li>Automated document ingestion from various inputs</li>
|
||||
<li>Background processing with Redis and Celery</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-medium text-lg text-gray-800">Administration</h3>
|
||||
<ul class="list-disc list-inside text-gray-600 ml-2">
|
||||
<li>Powerful REST API for programmatic access</li>
|
||||
<li>OAuth2 authentication support with Authentik</li>
|
||||
<li>Highly configurable via environment variables</li>
|
||||
<li>Docker-ready for easy deployment and scaling</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Meet the Creator Section -->
|
||||
@@ -47,17 +77,38 @@
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<!-- GitHub Link Section -->
|
||||
<!-- Privacy & Legal Section -->
|
||||
<section class="bg-white shadow rounded p-6 mb-8">
|
||||
<h2 class="text-2xl font-semibold mb-2">Privacy & Legal</h2>
|
||||
<p class="text-gray-600 mb-4">
|
||||
We care about your privacy and data security. Please review our:
|
||||
</p>
|
||||
<div class="flex space-x-4">
|
||||
<a href="/privacy" class="text-blue-600 hover:underline">Privacy Notice</a>
|
||||
<a href="/license" class="text-blue-600 hover:underline">License Information</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Links Section -->
|
||||
<section class="bg-white shadow rounded p-6">
|
||||
<h2 class="text-2xl font-semibold mb-2">Get Involved</h2>
|
||||
<p class="text-gray-600 mb-4">
|
||||
Want to dive into the code, contribute ideas, or simply check out the magic behind DocuElevate?
|
||||
Visit our GitHub repository!
|
||||
Want to dive into the code, contribute ideas, or learn more about DocuElevate?
|
||||
</p>
|
||||
<a href="https://github.com/christianlouis/document-processor" target="_blank" class="flex items-center space-x-2 text-blue-600 hover:text-blue-800">
|
||||
<img src="https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" alt="GitHub Logo" class="h-6 w-6" />
|
||||
<span>View DocuElevate on GitHub</span>
|
||||
</a>
|
||||
<div class="flex flex-col space-y-3">
|
||||
<a href="https://github.com/christianlouis/DocuElevate" target="_blank" class="flex items-center space-x-2 text-blue-600 hover:text-blue-800">
|
||||
<img src="https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" alt="GitHub Logo" class="h-6 w-6" />
|
||||
<span>View DocuElevate on GitHub</span>
|
||||
</a>
|
||||
<a href="https://www.docuelevate.org" target="_blank" class="flex items-center space-x-2 text-blue-600 hover:text-blue-800">
|
||||
<i class="fas fa-globe h-6 w-6"></i>
|
||||
<span>Visit DocuElevate Website</span>
|
||||
</a>
|
||||
<a href="https://docuelevate.readthedocs.io" target="_blank" class="flex items-center space-x-2 text-blue-600 hover:text-blue-800">
|
||||
<i class="fas fa-book h-6 w-6"></i>
|
||||
<span>Read the Documentation</span>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -54,19 +54,17 @@
|
||||
</div>
|
||||
|
||||
<!-- Mobile menu button -->
|
||||
<div class="md:hidden">
|
||||
<button
|
||||
@click="mobileMenuOpen = !mobileMenuOpen"
|
||||
type="button"
|
||||
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500"
|
||||
:aria-expanded="mobileMenuOpen"
|
||||
>
|
||||
<span class="sr-only">Open main menu</span>
|
||||
<svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<button
|
||||
@click="mobileMenuOpen = !mobileMenuOpen"
|
||||
type="button"
|
||||
class="md:hidden inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500"
|
||||
:aria-expanded="mobileMenuOpen"
|
||||
>
|
||||
<span class="sr-only">Open main menu</span>
|
||||
<svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<!-- Mobile menu, show/hide based on menu state -->
|
||||
<div
|
||||
@@ -104,7 +102,12 @@
|
||||
<!-- Footer -->
|
||||
<footer class="bg-white shadow">
|
||||
<div class="max-w-7xl mx-auto px-4 py-4 text-center text-gray-600">
|
||||
DocuElevate 2025 - Licensed under <a href="/license" class="text-blue-500 hover:underline">Apache License 2.0</a> -
|
||||
DocuElevate 2025 -
|
||||
<a href="/privacy" class="text-blue-500 hover:underline">Privacy</a> -
|
||||
<a href="/imprint" class="text-blue-500 hover:underline">Imprint</a> -
|
||||
<a href="/terms" class="text-blue-500 hover:underline">Terms</a> -
|
||||
<a href="/cookies" class="text-blue-500 hover:underline">Cookies</a> -
|
||||
<a href="/license" class="text-blue-500 hover:underline">License</a> -
|
||||
<span class="text-xs">Version {{ app_version|default(version, true) }}</span>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Cookie Policy - DocuElevate{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container mx-auto px-4 py-8 max-w-4xl">
|
||||
<h1 class="text-4xl font-bold mb-6">Cookie Policy</h1>
|
||||
<p class="text-sm text-gray-500 mb-8">Last Updated: {{ build_date|default(current_date|default('May 14, 2024')) }}</p>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">What Are Cookies</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
Cookies are small text files that are stored on your computer or mobile device when you visit a website. They are widely used to make websites work more efficiently and provide information to the website owners.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">How We Use Cookies</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
DocuElevate only uses essential session cookies for the following purpose:
|
||||
</p>
|
||||
<ul class="list-disc list-inside text-gray-700 ml-4 mb-3">
|
||||
<li>Authentication & Session Management: To identify you when you sign in and maintain your session while you use the application</li>
|
||||
</ul>
|
||||
<p class="text-gray-700 mb-3">
|
||||
These cookies are mandatory for the proper functioning of our service. Without these cookies, you would be required to log in repeatedly during your browsing session.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Duration of Cookies</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
The session cookies we use are temporary and are deleted when you close your browser.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">No Third-Party Cookies</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
DocuElevate does not use any third-party cookies, tracking cookies, advertising cookies, or analytics cookies. We respect your privacy and only implement the minimum cookies required for our service to function.
|
||||
</p>
|
||||
<p class="text-gray-700">
|
||||
For more information about how we handle your data, please see our <a href="/privacy" class="text-blue-600 hover:underline">Privacy Policy</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Managing Cookies</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
While most web browsers allow you to control cookies through their settings, please note that blocking or deleting our session cookies will prevent DocuElevate from functioning properly, as user authentication relies on these cookies.
|
||||
</p>
|
||||
<p class="text-gray-700">
|
||||
By using DocuElevate, you consent to our use of cookies as described in this policy. This Cookie Policy is part of and incorporated into our <a href="/terms" class="text-blue-600 hover:underline">Terms of Service</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,80 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Imprint - DocuElevate{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container mx-auto px-4 py-8 max-w-4xl">
|
||||
<h1 class="text-4xl font-bold mb-6">Imprint</h1>
|
||||
<p class="text-sm text-gray-500 mb-8">Information according to § 5 TMG (German Telemedia Act)</p>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Service Provider</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
<strong>Christian Louis IT Beratung</strong><br>
|
||||
Alter Steinweg 3<br>
|
||||
20459 Hamburg<br>
|
||||
Germany
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Contact Information</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
Fax: +49 40 97074609<br>
|
||||
Email: christianlouis@gmail.com<br>
|
||||
Website: www.docuelevate.com
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Business Registration</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
VAT Identification Number according to §27a Value Added Tax Act: DE202899017
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Responsible for Content</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
According to § 55 Abs. 2 RStV:<br>
|
||||
Christian Krakau-Louis<br>
|
||||
Alter Steinweg 3<br>
|
||||
20459 Hamburg<br>
|
||||
Germany
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Legal Notices</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content.
|
||||
</p>
|
||||
<p class="text-gray-700 mb-3">
|
||||
All content on this website is protected by copyright. Any use outside the limits of copyright law requires the written consent of the respective author or creator.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Online Dispute Resolution</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
The European Commission provides a platform for online dispute resolution (OS):
|
||||
<a href="https://ec.europa.eu/consumers/odr/" target="_blank" rel="noopener noreferrer" class="text-blue-600 hover:underline">https://ec.europa.eu/consumers/odr/</a>
|
||||
</p>
|
||||
<p class="text-gray-700 mb-3">
|
||||
We are not willing or obligated to participate in dispute resolution proceedings before a consumer arbitration board.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Related Policies</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
Our service is governed by the following policies:
|
||||
</p>
|
||||
<ul class="list-disc list-inside text-gray-700 ml-4 mb-3">
|
||||
<li><a href="/terms" class="text-blue-600 hover:underline">Terms of Service</a> - Rules for using DocuElevate</li>
|
||||
<li><a href="/privacy" class="text-blue-600 hover:underline">Privacy Policy</a> - How we handle your data</li>
|
||||
<li><a href="/cookies" class="text-blue-600 hover:underline">Cookie Policy</a> - Information about cookies we use</li>
|
||||
<li><a href="/license" class="text-blue-600 hover:underline">License Information</a> - How our software is licensed</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
+123
-19
@@ -3,28 +3,132 @@
|
||||
|
||||
{% block content %}
|
||||
<div class="container mx-auto px-4 py-8">
|
||||
<h1 class="text-4xl font-bold mb-4">Welcome to DocuElevate</h1>
|
||||
<p class="text-gray-700 mb-8">
|
||||
Your intelligent solution for processing, managing, and organizing documents effortlessly.
|
||||
</p>
|
||||
<!-- Sample sections -->
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||
<div class="bg-white shadow rounded p-6">
|
||||
<h2 class="text-2xl font-semibold mb-2">Upload Documents</h2>
|
||||
<p class="text-gray-600">
|
||||
Quickly upload and process your files with our user-friendly interface.
|
||||
</p>
|
||||
<a href="/upload" class="mt-4 inline-block text-blue-600 hover:text-blue-800">
|
||||
Get Started →
|
||||
<!-- Hero Section -->
|
||||
<div class="bg-gradient-to-r from-blue-500 to-indigo-600 rounded-lg shadow-lg text-white p-8 mb-8">
|
||||
<h1 class="text-4xl font-bold mb-4">Welcome to DocuElevate</h1>
|
||||
<p class="text-xl mb-6">
|
||||
Your intelligent solution for processing, managing, and organizing documents effortlessly.
|
||||
</p>
|
||||
<div class="flex flex-wrap gap-4">
|
||||
<a href="/upload" class="bg-white text-blue-600 hover:bg-gray-100 font-bold py-2 px-4 rounded-lg transition duration-300 flex items-center">
|
||||
<i class="fas fa-upload mr-2"></i> Upload Document
|
||||
</a>
|
||||
<a href="/status" class="bg-transparent border border-white text-white hover:bg-white hover:text-blue-600 font-bold py-2 px-4 rounded-lg transition duration-300 flex items-center">
|
||||
<i class="fas fa-cog mr-2"></i> System Status
|
||||
</a>
|
||||
</div>
|
||||
<div class="bg-white shadow rounded p-6">
|
||||
<h2 class="text-2xl font-semibold mb-2">Manage Your Files</h2>
|
||||
<p class="text-gray-600">
|
||||
View, organize, and collaborate on your processed files in one central hub.
|
||||
</div>
|
||||
|
||||
<!-- Stats Section -->
|
||||
<div class="bg-white rounded-lg shadow p-6 mb-8">
|
||||
<h2 class="text-2xl font-semibold mb-4">System Overview</h2>
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||
<div class="border-r border-gray-200 px-4">
|
||||
<p class="text-4xl font-bold text-blue-600">{{ stats.processed_files|default('0') }}</p>
|
||||
<p class="text-gray-600">Documents Processed</p>
|
||||
</div>
|
||||
<div class="border-r border-gray-200 px-4">
|
||||
<p class="text-4xl font-bold text-green-600">{{ stats.active_integrations|default('0') }}</p>
|
||||
<p class="text-gray-600">Active Integrations</p>
|
||||
</div>
|
||||
<div class="px-4">
|
||||
<p class="text-4xl font-bold text-indigo-600">{{ stats.storage_targets|default('0') }}</p>
|
||||
<p class="text-gray-600">Storage Targets</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Features Section -->
|
||||
<h2 class="text-3xl font-semibold mb-6">Core Features</h2>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-10">
|
||||
<div class="bg-white shadow rounded-lg p-6 hover:shadow-lg transition duration-300">
|
||||
<div class="text-blue-600 mb-4">
|
||||
<i class="fas fa-file-alt fa-2x"></i>
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-2">Document Processing</h3>
|
||||
<p class="text-gray-600 mb-4">
|
||||
Upload and process documents with OCR, metadata extraction, and intelligent classification.
|
||||
</p>
|
||||
<a href="/files" class="mt-4 inline-block text-blue-600 hover:text-blue-800">
|
||||
View Files →
|
||||
<a href="/upload" class="text-blue-600 hover:text-blue-800 font-medium">
|
||||
Start processing →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 hover:shadow-lg transition duration-300">
|
||||
<div class="text-blue-600 mb-4">
|
||||
<i class="fas fa-cloud fa-2x"></i>
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-2">Multiple Storage Options</h3>
|
||||
<p class="text-gray-600 mb-4">
|
||||
Connect to Dropbox, NextCloud, OneDrive and other storage solutions seamlessly.
|
||||
</p>
|
||||
<a href="/status" class="text-blue-600 hover:text-blue-800 font-medium">
|
||||
Configure storage →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 hover:shadow-lg transition duration-300">
|
||||
<div class="text-blue-600 mb-4">
|
||||
<i class="fas fa-robot fa-2x"></i>
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-2">AI-Powered Analysis</h3>
|
||||
<p class="text-gray-600 mb-4">
|
||||
Leverage AI to extract metadata, classify documents, and organize your information.
|
||||
</p>
|
||||
<a href="/files" class="text-blue-600 hover:text-blue-800 font-medium">
|
||||
View processed files →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 hover:shadow-lg transition duration-300">
|
||||
<div class="text-blue-600 mb-4">
|
||||
<i class="fas fa-envelope fa-2x"></i>
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-2">Email Integration</h3>
|
||||
<p class="text-gray-600 mb-4">
|
||||
Auto-process documents received via email with our IMAP polling capabilities.
|
||||
</p>
|
||||
<a href="/status" class="text-blue-600 hover:text-blue-800 font-medium">
|
||||
Set up email →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 hover:shadow-lg transition duration-300">
|
||||
<div class="text-blue-600 mb-4">
|
||||
<i class="fas fa-cogs fa-2x"></i>
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-2">Workflow Automation</h3>
|
||||
<p class="text-gray-600 mb-4">
|
||||
Create workflows to automatically process and route documents based on content.
|
||||
</p>
|
||||
<a href="/about" class="text-blue-600 hover:text-blue-800 font-medium">
|
||||
Learn more →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 hover:shadow-lg transition duration-300">
|
||||
<div class="text-blue-600 mb-4">
|
||||
<i class="fas fa-shield-alt fa-2x"></i>
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-2">Secure & Private</h3>
|
||||
<p class="text-gray-600 mb-4">
|
||||
Your documents are processed securely with privacy-focused design principles.
|
||||
</p>
|
||||
<a href="/privacy" class="text-blue-600 hover:text-blue-800 font-medium">
|
||||
Privacy policy →
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Getting Started Section -->
|
||||
<div class="bg-gray-50 rounded-lg border border-gray-200 p-8">
|
||||
<div class="flex flex-col md:flex-row md:items-center justify-between">
|
||||
<div class="mb-6 md:mb-0">
|
||||
<h2 class="text-2xl font-bold mb-2">Ready to get started?</h2>
|
||||
<p class="text-gray-600">Upload your first document and see DocuElevate in action.</p>
|
||||
</div>
|
||||
<a href="/upload" class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 px-6 rounded-lg transition duration-300">
|
||||
Try it now
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="container mx-auto px-4 py-8">
|
||||
<h1 class="text-2xl font-bold mb-4">License Information</h1>
|
||||
|
||||
<div class="bg-white shadow-md rounded-lg p-6">
|
||||
<div class="bg-white shadow-md rounded-lg p-6 mb-6">
|
||||
<h2 class="text-xl font-semibold mb-4">Apache License 2.0</h2>
|
||||
|
||||
<div class="prose">
|
||||
@@ -19,5 +19,19 @@
|
||||
contribute to the project.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow-md rounded-lg p-6">
|
||||
<h2 class="text-xl font-semibold mb-4">Related Information</h2>
|
||||
<p class="mb-3 text-gray-600">
|
||||
While this license governs the use of our software, please also review our
|
||||
<a href="/terms" class="text-blue-600 hover:underline">Terms of Service</a> and
|
||||
<a href="/privacy" class="text-blue-600 hover:underline">Privacy Policy</a> for
|
||||
information about using the DocuElevate service.
|
||||
</p>
|
||||
<p class="text-gray-600">
|
||||
For more information about DocuElevate, please visit the
|
||||
<a href="/about" class="text-blue-600 hover:underline">About page</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Privacy Notice - DocuElevate{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container mx-auto px-4 py-8 max-w-4xl">
|
||||
<h1 class="text-4xl font-bold mb-6">DocuElevate – Privacy Notice</h1>
|
||||
<p class="text-sm text-gray-500 mb-8">Last Updated: {{ build_date|default(current_date|default('April 7, 2024')) }}</p>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Data Controller</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
The controller responsible for processing your personal data under the EU General Data Protection Regulation (GDPR) is DocuElevate.
|
||||
</p>
|
||||
<p class="text-gray-700 mb-3">
|
||||
Contact Email: <a href="mailto:docuelevate@christian-louis.de" class="text-blue-600 hover:underline">docuelevate@christian-louis.de</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Scope of this Privacy Notice</h2>
|
||||
<p class="text-gray-700">
|
||||
This notice applies to the DocuElevate web application, hosted at <a href="{{ request.url.scheme }}://{{ request.url.netloc }}/" class="text-blue-600 hover:underline" target="_blank">{{ request.url.scheme }}://{{ request.url.netloc }}/</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Data Collection & Purposes</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
<strong>User Authentication:</strong> We use Google, Dropbox, and Microsoft OAuth for sign-in. Through these services, we may receive information such as your name, email address, and profile picture.
|
||||
</p>
|
||||
<p class="text-gray-700 mb-3">
|
||||
<strong>Purpose:</strong> We use this information to authenticate you, personalize your experience, and provide the core functionality of DocuElevate.
|
||||
</p>
|
||||
<p class="text-gray-700 mb-3">
|
||||
<strong>Legal Basis (GDPR Art. 6):</strong> Our primary legal bases for processing are:
|
||||
</p>
|
||||
<ul class="list-disc list-inside text-gray-700 ml-4 mb-3">
|
||||
<li>(1)(b) Performance of a contract: to provide the DocuElevate service.</li>
|
||||
<li>(1)(f) Legitimate interests: ensuring the security of the service and preventing fraud.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Use of Cookies & Similar Technologies</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
We may use cookies or similar technologies to maintain your session, remember your preferences, and enhance your user experience.
|
||||
</p>
|
||||
<p class="text-gray-700">
|
||||
For more information about our use of cookies, please visit our <a href="/cookies" class="text-blue-600 hover:underline">Cookie Policy</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Third-Party Services</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
<strong>OAuth Providers:</strong> Google, Dropbox, and Microsoft. These providers may process your personal data according to their own privacy policies.
|
||||
</p>
|
||||
<p class="text-gray-700">
|
||||
<strong>No Additional Sharing:</strong> We do not share, sell, or otherwise disclose your personal data to third parties for advertising or marketing purposes.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Data Retention</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
We retain your personal data only as long as necessary to provide the DocuElevate service or to comply with legal obligations.
|
||||
</p>
|
||||
<p class="text-gray-700">
|
||||
If you wish to have your data deleted or your account removed, please contact us at <a href="mailto:docuelevate@christian-louis.de" class="text-blue-600 hover:underline">docuelevate@christian-louis.de</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Data Security</h2>
|
||||
<p class="text-gray-700">
|
||||
We implement appropriate technical and organizational measures to protect your personal data against unauthorized access, alteration, disclosure, or destruction.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Your Rights under GDPR</h2>
|
||||
<ul class="list-disc list-inside text-gray-700 ml-4">
|
||||
<li class="mb-2"><strong>Access & Rectification:</strong> You can request to see the data we hold about you and ask for corrections if necessary.</li>
|
||||
<li class="mb-2"><strong>Erasure (Right to be Forgotten):</strong> You can request deletion of your data where there is no legitimate reason for us to continue processing it.</li>
|
||||
<li class="mb-2"><strong>Restriction of Processing:</strong> In certain circumstances, you can request a temporary block on processing your personal data.</li>
|
||||
<li class="mb-2"><strong>Data Portability:</strong> You can request a copy of your data in a commonly used, machine-readable format.</li>
|
||||
<li class="mb-2"><strong>Objection:</strong> You have the right to object to data processing, especially where processing is based on legitimate interests.</li>
|
||||
<li class="mb-2"><strong>Withdrawal of Consent:</strong> If processing is based on your consent, you have the right to withdraw that consent at any time.</li>
|
||||
<li><strong>Complaint:</strong> If you believe your rights have been violated, you have the right to lodge a complaint with a supervisory authority in the EU Member State of your residence or workplace.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">Updates to this Privacy Notice</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
We may update this notice from time to time to reflect changes in our practices or applicable laws. Any changes will be posted at <a href="{{ request.url.scheme }}://{{ request.url.netloc }}/" class="text-blue-600 hover:underline" target="_blank">{{ request.url.scheme }}://{{ request.url.netloc }}/</a>, and where appropriate, we will notify you via email or other channels.
|
||||
</p>
|
||||
<p class="text-gray-700 mb-3">
|
||||
If you have any questions or concerns about this Privacy Notice or your personal data, please contact us at <a href="mailto:docuelevate@christian-louis.de" class="text-blue-600 hover:underline">docuelevate@christian-louis.de</a>.
|
||||
</p>
|
||||
<p class="text-gray-700">
|
||||
Please also review our <a href="/terms" class="text-blue-600 hover:underline">Terms of Service</a> and <a href="/license" class="text-blue-600 hover:underline">License Information</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,66 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Terms of Service - DocuElevate{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container mx-auto px-4 py-8 max-w-4xl">
|
||||
<h1 class="text-4xl font-bold mb-6">Terms of Service</h1>
|
||||
<p class="text-sm text-gray-500 mb-8">Last Updated: {{ current_date|default('May 14, 2024') }}</p>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">1. Acceptance of Terms</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
By accessing or using DocuElevate, you agree to be bound by these Terms of Service. If you do not agree to these terms, please do not use this service.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">2. Description of Service</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
DocuElevate provides document processing, OCR, metadata extraction, and storage services. We reserve the right to modify or discontinue any aspect of the service at any time.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">3. User Responsibilities</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
You are responsible for:
|
||||
</p>
|
||||
<ul class="list-disc list-inside text-gray-700 ml-4 mb-3">
|
||||
<li>All content you upload to DocuElevate</li>
|
||||
<li>Ensuring you have proper rights to upload and process documents</li>
|
||||
<li>Maintaining the confidentiality of your account credentials</li>
|
||||
<li>Any activity that occurs under your account</li>
|
||||
</ul>
|
||||
<p class="text-gray-700 mb-3">
|
||||
By using our service, you also agree to our <a href="/privacy" class="text-blue-600 hover:underline">Privacy Policy</a> and <a href="/cookies" class="text-blue-600 hover:underline">Cookie Policy</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">4. Intellectual Property Rights</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
DocuElevate respects intellectual property rights. Users may not upload content that infringes on the intellectual property rights of others.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6 mb-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">5. Limitation of Liability</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
DocuElevate provides the service "as is" without warranties of any kind. We shall not be liable for any direct, indirect, incidental, special, consequential, or punitive damages resulting from your use of or inability to use the service.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow rounded-lg p-6">
|
||||
<h2 class="text-2xl font-semibold mb-4">6. Governing Law</h2>
|
||||
<p class="text-gray-700 mb-3">
|
||||
These Terms shall be governed by the laws of Germany, without regard to its conflict of law provisions.
|
||||
</p>
|
||||
<p class="text-gray-700 mb-3">
|
||||
If you have any questions about these Terms, please contact us at <a href="mailto:docuelevate@christian-louis.de" class="text-blue-600 hover:underline">docuelevate@christian-louis.de</a>.
|
||||
</p>
|
||||
<p class="text-gray-700">
|
||||
For information about how we use cookies, please see our <a href="/cookies" class="text-blue-600 hover:underline">Cookie Policy</a>. For licensing information, please refer to our <a href="/license" class="text-blue-600 hover:underline">License Information</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user