+
+
+ {t('pages.contact.title')}
+
+
+ {t('pages.contact.subtitle')}
+
+
+
+
+
+ {/* Direct email fallback */}
+
+
+ {t('pages.contact.directEmail')}{' '}
+
+
+ {CONTACT_EMAIL}
+
+
+
{t('pages.contact.responseTime')}
+
+
+ >
+ );
+}
diff --git a/frontend/src/pages/PrivacyPage.tsx b/frontend/src/pages/PrivacyPage.tsx
index 3ca792c..4217118 100644
--- a/frontend/src/pages/PrivacyPage.tsx
+++ b/frontend/src/pages/PrivacyPage.tsx
@@ -3,58 +3,55 @@ import { Helmet } from 'react-helmet-async';
import { FILE_RETENTION_MINUTES } from '@/config/toolLimits';
const LAST_UPDATED = '2026-03-06';
+const CONTACT_EMAIL = 'support@saas-pdf.com';
export default function PrivacyPage() {
const { t } = useTranslation();
+ const fileItems = t('pages.privacy.fileHandlingItems', { minutes: FILE_RETENTION_MINUTES, returnObjects: true }) as string[];
+ const thirdPartyItems = t('pages.privacy.thirdPartyItems', { returnObjects: true }) as string[];
return (
<>
-
{t('common.privacy')}
-
Last updated: {LAST_UPDATED}
+
{t('pages.privacy.title')}
+
{t('pages.privacy.lastUpdated', { date: LAST_UPDATED })}
-
1. Data Collection
+
{t('pages.privacy.dataCollectionTitle')}
+
{t('pages.privacy.dataCollectionText')}
+
+
{t('pages.privacy.fileHandlingTitle')}
+ {Array.isArray(fileItems) && (
+
+ {fileItems.map((item, idx) => - {item}
)}
+
+ )}
+
+
{t('pages.privacy.cookiesTitle')}
+
{t('pages.privacy.cookiesText')}
+
+
{t('pages.privacy.thirdPartyTitle')}
+ {Array.isArray(thirdPartyItems) && (
+
+ {thirdPartyItems.map((item, idx) => - {item}
)}
+
+ )}
+
+
{t('pages.privacy.securityTitle')}
+
{t('pages.privacy.securityText')}
+
+
{t('pages.privacy.rightsTitle')}
+
{t('pages.privacy.rightsText', { minutes: FILE_RETENTION_MINUTES })}
+
+
{t('pages.privacy.contactTitle')}
- We only collect files you intentionally upload for processing. We do not
- require registration, and we do not store personal information.
-
-
-
2. File Processing & Storage
-
- - Uploaded files are processed on our secure servers.
- - All uploaded and output files are automatically deleted within {FILE_RETENTION_MINUTES} minutes.
- - Files are stored in encrypted cloud storage during processing.
- - We do not access, read, or share the content of your files.
-
-
-
3. Cookies & Analytics
-
- We use essential cookies to remember your language preference. We may use
- Google Analytics and Google AdSense, which may place their own cookies.
- You can manage cookie preferences in your browser settings.
-
-
-
4. Third-Party Services
-
- - Google AdSense — for displaying advertisements.
- - AWS S3 — for temporary file storage.
-
-
-
5. Security
-
- We employ industry-standard security measures including HTTPS encryption,
- file validation, rate limiting, and automatic file cleanup.
-
-
-
6. Contact
-
- Questions about this policy? Contact us at{' '}
- support@example.com.
+ {t('pages.privacy.contactText')}{' '}
+ {CONTACT_EMAIL}.
>
diff --git a/frontend/src/pages/TermsPage.tsx b/frontend/src/pages/TermsPage.tsx
index 6cf0939..f1c8da3 100644
--- a/frontend/src/pages/TermsPage.tsx
+++ b/frontend/src/pages/TermsPage.tsx
@@ -3,65 +3,58 @@ import { Helmet } from 'react-helmet-async';
import { FILE_RETENTION_MINUTES } from '@/config/toolLimits';
const LAST_UPDATED = '2026-03-06';
+const CONTACT_EMAIL = 'support@saas-pdf.com';
export default function TermsPage() {
const { t } = useTranslation();
+ const useItems = t('pages.terms.useItems', { returnObjects: true }) as string[];
+ const fileItems = t('pages.terms.fileItems', { minutes: FILE_RETENTION_MINUTES, returnObjects: true }) as string[];
return (
<>
-
{t('common.terms')}
-
Last updated: {LAST_UPDATED}
+
{t('pages.terms.title')}
+
{t('pages.terms.lastUpdated', { date: LAST_UPDATED })}
-
1. Acceptance of Terms
+
{t('pages.terms.acceptanceTitle')}
+
{t('pages.terms.acceptanceText')}
+
+
{t('pages.terms.serviceTitle')}
+
{t('pages.terms.serviceText')}
+
+
{t('pages.terms.useTitle')}
+ {Array.isArray(useItems) && (
+
+ {useItems.map((item, idx) => - {item}
)}
+
+ )}
+
+
{t('pages.terms.fileTitle')}
+ {Array.isArray(fileItems) && (
+
+ {fileItems.map((item, idx) => - {item}
)}
+
+ )}
+
+
{t('pages.terms.liabilityTitle')}
+
{t('pages.terms.liabilityText')}
+
+
{t('pages.terms.ipTitle')}
+
{t('pages.terms.ipText')}
+
+
{t('pages.terms.changesTitle')}
+
{t('pages.terms.changesText')}
+
+
{t('pages.terms.contactTitle')}
- By accessing and using SaaS-PDF, you agree to be bound by these Terms of
- Service. If you do not agree, please discontinue use immediately.
-
-
-
2. Service Description
-
- SaaS-PDF provides free online tools for file conversion, compression,
- and transformation. The service is provided “as is” without
- warranties of any kind.
-
-
-
3. Acceptable Use
-
- - You may only upload files that you have the right to process.
- - You must not upload malicious, illegal, or copyrighted content without authorization.
- - Automated or excessive use of the service is prohibited.
-
-
-
4. File Handling
-
- - All uploaded and processed files are automatically deleted within {FILE_RETENTION_MINUTES} minutes.
- - We are not responsible for any data loss during processing.
- - You are responsible for maintaining your own file backups.
-
-
-
5. Limitation of Liability
-
- SaaS-PDF shall not be liable for any direct, indirect, incidental, or
- consequential damages resulting from the use or inability to use the
- service.
-
-
-
6. Changes to Terms
-
- We reserve the right to modify these terms at any time. Continued use of
- the service after changes constitutes acceptance of the updated terms.
-
-
-
7. Contact
-
- Questions about these terms? Contact us at{' '}
- support@example.com.
+ {t('pages.terms.contactText')}{' '}
+ {CONTACT_EMAIL}.
>