chore: update project branding from SaaS-PDF to Dociva

- Updated robots.txt to reflect new site name and sitemap URL.
- Modified sitemap.xml to change all URLs from saas-pdf.com to dociva.io.
- Changed storage key for site assistant in SiteAssistant.tsx.
- Updated SEOHead.tsx to change site name in meta tags.
- Translated app name and related text in Arabic, English, and French JSON files.
- Updated contact email in ContactPage.tsx, PrivacyPage.tsx, and TermsPage.tsx.
- Changed internal admin page title to reflect new branding.
- Updated pricing page meta description to reference Dociva.
- Adjusted Nginx configuration for new domain.
- Modified deployment script to reflect new branding.
- Updated sitemap generation script to use new domain.
This commit is contained in:
Your Name
2026-03-16 21:51:12 +02:00
parent 957d37838c
commit f933ffa8a0
40 changed files with 213 additions and 167 deletions

View File

@@ -9,6 +9,6 @@ def health_check():
"""Simple health check — returns 200 if the service is running."""
return jsonify({
"status": "healthy",
"service": "SaaS-PDF API",
"service": "Dociva API",
"version": "1.0.0",
})

View File

@@ -63,11 +63,11 @@ def save_message(name: str, email: str, category: str, subject: str, message: st
conn.close()
# Send notification email to admin
admin_email = current_app.config.get("SMTP_FROM", "noreply@saas-pdf.com")
admin_email = current_app.config.get("SMTP_FROM", "noreply@dociva.io")
try:
send_email(
to=admin_email,
subject=f"[SaaS-PDF Contact] [{category}] {subject}",
subject=f"[Dociva Contact] [{category}] {subject}",
html_body=f"""
<h2>New Contact Message</h2>
<p><strong>From:</strong> {name} &lt;{email}&gt;</p>

View File

@@ -16,7 +16,7 @@ def _get_smtp_config() -> dict:
"port": current_app.config.get("SMTP_PORT", 587),
"user": current_app.config.get("SMTP_USER", ""),
"password": current_app.config.get("SMTP_PASSWORD", ""),
"from_addr": current_app.config.get("SMTP_FROM", "noreply@saas-pdf.com"),
"from_addr": current_app.config.get("SMTP_FROM", "noreply@dociva.io"),
"use_tls": current_app.config.get("SMTP_USE_TLS", True),
}
@@ -62,11 +62,11 @@ def send_password_reset_email(to: str, token: str) -> bool:
html = f"""
<div style="font-family: sans-serif; max-width: 480px; margin: auto;">
<h2>Password Reset</h2>
<p>You requested a password reset for your SaaS-PDF account.</p>
<p>You requested a password reset for your Dociva account.</p>
<p><a href="{reset_link}" style="display:inline-block;padding:12px 24px;background:#4f46e5;color:#fff;border-radius:8px;text-decoration:none;">
Reset Password
</a></p>
<p style="color:#666;font-size:14px;">This link expires in 1 hour. If you didn't request this, you can safely ignore this email.</p>
</div>
"""
return send_email(to, "Reset your SaaS-PDF password", html)
return send_email(to, "Reset your Dociva password", html)

View File

@@ -52,7 +52,7 @@ TOOL_CATALOG = [
{"slug": "text-cleaner", "label": "Text Cleaner", "summary": "clean up text spacing and formatting"},
]
SYSTEM_PROMPT = """You are the SaaS-PDF site assistant.
SYSTEM_PROMPT = """You are the Dociva site assistant.
You help users choose the right tool, understand how to use the current tool, and explain site capabilities.
Rules:
- Reply in the same language as the user.

Binary file not shown.

View File

@@ -29,7 +29,7 @@ class BaseConfig:
OUTPUT_FOLDER = os.getenv("OUTPUT_FOLDER", "/tmp/outputs")
FILE_EXPIRY_SECONDS = int(os.getenv("FILE_EXPIRY_SECONDS", 1800))
DATABASE_PATH = os.getenv(
"DATABASE_PATH", os.path.join(BASE_DIR, "data", "saas_pdf.db")
"DATABASE_PATH", os.path.join(BASE_DIR, "data", "dociva.db")
)
PERMANENT_SESSION_LIFETIME = timedelta(days=30)
SESSION_COOKIE_HTTPONLY = True
@@ -94,7 +94,7 @@ class BaseConfig:
# AWS S3
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")
AWS_S3_BUCKET = os.getenv("AWS_S3_BUCKET", "saas-pdf-temp-files")
AWS_S3_BUCKET = os.getenv("AWS_S3_BUCKET", "dociva-temp-files")
AWS_S3_REGION = os.getenv("AWS_S3_REGION", "eu-west-1")
# CORS
@@ -116,7 +116,7 @@ class BaseConfig:
SMTP_PORT = int(os.getenv("SMTP_PORT", 587))
SMTP_USER = os.getenv("SMTP_USER", "")
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD", "")
SMTP_FROM = os.getenv("SMTP_FROM", "noreply@saas-pdf.com")
SMTP_FROM = os.getenv("SMTP_FROM", "noreply@dociva.io")
SMTP_USE_TLS = os.getenv("SMTP_USE_TLS", "true").lower() == "true"
FRONTEND_URL = os.getenv("FRONTEND_URL", "http://localhost:5173")
@@ -131,7 +131,7 @@ class BaseConfig:
SENTRY_ENVIRONMENT = os.getenv("SENTRY_ENVIRONMENT", "development")
# Site domain
SITE_DOMAIN = os.getenv("SITE_DOMAIN", "https://saas-pdf.com")
SITE_DOMAIN = os.getenv("SITE_DOMAIN", "https://dociva.io")
# PostgreSQL (production) — set DATABASE_URL to use PG instead of SQLite
DATABASE_URL = os.getenv("DATABASE_URL", "")
@@ -153,6 +153,7 @@ class ProductionConfig(BaseConfig):
DEBUG = False
TESTING = False
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = "Lax"
# Stricter rate limits in production
RATELIMIT_DEFAULT = "60/hour"
@@ -163,7 +164,7 @@ class TestingConfig(BaseConfig):
TESTING = True
UPLOAD_FOLDER = "/tmp/test_uploads"
OUTPUT_FOLDER = "/tmp/test_outputs"
DATABASE_PATH = "/tmp/test_saas_pdf.db"
DATABASE_PATH = "/tmp/test_dociva.db"
FEATURE_EDITOR = False
FEATURE_OCR = False
FEATURE_REMOVEBG = False

View File

@@ -17,8 +17,8 @@ from app.services.stripe_service import init_stripe_db
def app():
"""Create application for testing."""
os.environ['FLASK_ENV'] = 'testing'
test_root = tempfile.mkdtemp(prefix='saas-pdf-tests-')
db_path = os.path.join(test_root, 'test_saas_pdf.db')
test_root = tempfile.mkdtemp(prefix='dociva-tests-')
db_path = os.path.join(test_root, 'test_dociva.db')
upload_folder = os.path.join(test_root, 'uploads')
output_folder = os.path.join(test_root, 'outputs')
os.environ['DATABASE_PATH'] = db_path