diff --git a/backend/celerybeat-schedule b/backend/celerybeat-schedule index f0620cb..d0ac02a 100644 Binary files a/backend/celerybeat-schedule and b/backend/celerybeat-schedule differ diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index b1ac10d..bf391e1 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -14,6 +14,7 @@ const AboutPage = lazy(() => import('@/pages/AboutPage')); const PrivacyPage = lazy(() => import('@/pages/PrivacyPage')); const NotFoundPage = lazy(() => import('@/pages/NotFoundPage')); const TermsPage = lazy(() => import('@/pages/TermsPage')); +const ContactPage = lazy(() => import('@/pages/ContactPage')); const AccountPage = lazy(() => import('@/pages/AccountPage')); const ForgotPasswordPage = lazy(() => import('@/pages/ForgotPasswordPage')); const ResetPasswordPage = lazy(() => import('@/pages/ResetPasswordPage')); @@ -90,6 +91,7 @@ export default function App() { } /> } /> } /> + } /> {/* PDF Tools */} } /> diff --git a/frontend/src/components/layout/Footer.tsx b/frontend/src/components/layout/Footer.tsx index 6ef160c..45a9fa2 100644 --- a/frontend/src/components/layout/Footer.tsx +++ b/frontend/src/components/layout/Footer.tsx @@ -93,6 +93,12 @@ export default function Footer() { > {t('common.about')} + + {t('common.contact')} + diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index b235fc0..ffe5f6b 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -24,6 +24,11 @@ "password": "كلمة المرور", "darkMode": "الوضع الداكن", "lightMode": "الوضع الفاتح", + "contact": "اتصل بنا", + "send": "إرسال", + "subject": "الموضوع", + "message": "الرسالة", + "name": "الاسم", "errors": { "fileTooLarge": "حجم الملف كبير جدًا. الحد الأقصى المسموح {{size}} ميجابايت.", "invalidFileType": "نوع الملف غير صالح. الأنواع المقبولة: {{types}}", @@ -86,6 +91,109 @@ "feature3Title": "أمان مدمج", "feature3Desc": "قم بالوصول إلى ملفاتك بأمان، محمية بتشفير تلقائي." }, + "pages": { + "about": { + "metaDescription": "تعرّف على SaaS-PDF — أدوات ملفات مجانية وسريعة وآمنة عبر الإنترنت لملفات PDF والصور والفيديو والنصوص. لا حاجة للتسجيل.", + "title": "عن SaaS-PDF", + "missionTitle": "مهمتنا", + "missionText": "تم بناء SaaS-PDF لجعل أدوات الملفات الاحترافية متاحة للجميع — مجاناً. نؤمن بأن تحويل المستندات وضغطها وتعديلها يجب أن يكون بسيطاً وسريعاً وخاصاً. لا تسجيل، لا رسوم خفية، لا برامج للتثبيت.", + "technologyTitle": "التقنية", + "technologyText": "منصتنا مدعومة ببنية تحتية سحابية حديثة مصممة للسرعة والموثوقية. تتم معالجة الملفات على الخادم باستخدام مكتبات مفتوحة المصدر رائدة في الصناعة، مما يضمن تحويلات دقيقة ومخرجات عالية الجودة في كل مرة. تستفيد أدواتنا المدعومة بالذكاء الاصطناعي من نماذج التعلم الآلي المتقدمة لتحليل المستندات والترجمة والتلخيص بذكاء.", + "securityTitle": "الأمان", + "securityText": "الأمان مدمج في كل طبقة من منصتنا. جميع عمليات نقل الملفات مشفرة عبر HTTPS. يتم التحقق من الملفات المرفوعة وتحديد حجمها ومعالجتها في بيئات معزولة. نستخدم تحديد المعدل وتعقيم المدخلات لمنع إساءة الاستخدام.", + "privacyTitle": "خصوصية الملفات", + "privacyText": "ملفاتك ملكك. لا نقرأ أو نشارك أو نبيع محتوى مستنداتك أبداً. يتم حذف جميع الملفات المرفوعة والمعالجة تلقائياً من خوادمنا خلال {{minutes}} دقيقة. لا عين بشرية ترى بياناتك — المعالجة آلية بالكامل.", + "toolsTitle": "ما نقدمه", + "toolCategories": [ + "أدوات PDF — تحويل، ضغط، دمج، تقسيم، تدوير، علامة مائية، حماية، فتح القفل، تعديل والمزيد", + "أدوات الصور — تحويل وتغيير الحجم وضغط وإزالة الخلفية بالذكاء الاصطناعي", + "أدوات المستندات بالذكاء الاصطناعي — التحدث مع PDF، التلخيص، الترجمة، استخراج الجداول", + "OCR — استخراج النص من الصور وملفات PDF الممسوحة ضوئياً بالعربية والإنجليزية والفرنسية", + "أدوات مساعدة — مولد QR، تحويل فيديو إلى GIF، عداد الكلمات، منظف النصوص" + ] + }, + "contact": { + "metaDescription": "تواصل مع فريق SaaS-PDF. أبلغ عن خطأ أو اطلب ميزة جديدة أو أرسل لنا رسالة.", + "title": "اتصل بنا", + "subtitle": "لديك سؤال أو وجدت خطأ أو تريد طلب ميزة جديدة؟ يسعدنا سماع رأيك.", + "formTitle": "أرسل لنا رسالة", + "categoryLabel": "نوع الرسالة", + "categories": { + "general": "استفسار عام", + "bug": "الإبلاغ عن خطأ", + "feature": "طلب ميزة جديدة" + }, + "bugPlaceholder": "يرجى وصف المشكلة: ماذا فعلت، ماذا توقعت، وماذا حدث بالفعل.", + "featurePlaceholder": "صف الميزة التي ترغب في رؤيتها وكيف ستساعدك.", + "generalPlaceholder": "اكتب رسالتك هنا...", + "namePlaceholder": "اسمك", + "emailPlaceholder": "your@email.com", + "subjectPlaceholder": "الموضوع", + "successMessage": "تم إرسال رسالتك! سنرد عليك قريباً.", + "directEmail": "أو راسلنا مباشرة على", + "responseTime": "نرد عادةً خلال 24-48 ساعة." + }, + "privacy": { + "metaDescription": "سياسة الخصوصية لـ SaaS-PDF. تعرّف على كيفية تعاملنا مع ملفاتك وبياناتك بشفافية كاملة.", + "title": "سياسة الخصوصية", + "lastUpdated": "آخر تحديث: {{date}}", + "dataCollectionTitle": "1. جمع البيانات", + "dataCollectionText": "نقوم فقط بمعالجة الملفات التي ترفعها عمداً. لا نطلب التسجيل ولا نجمع معلومات شخصية أثناء معالجة الملفات. إذا أنشأت حساباً، نخزن فقط بريدك الإلكتروني وكلمة المرور المشفرة.", + "fileHandlingTitle": "2. معالجة الملفات والتخزين", + "fileHandlingItems": [ + "تتم معالجة الملفات المرفوعة على خوادمنا الآمنة.", + "يتم حذف جميع الملفات المرفوعة والمخرجات تلقائياً خلال {{minutes}} دقيقة.", + "تُخزّن الملفات في تخزين سحابي مشفر أثناء المعالجة.", + "لا نقوم أبداً بالوصول إلى محتوى ملفاتك أو قراءته أو مشاركته.", + "المعالجة آلية بالكامل — لا يراجع أي شخص مستنداتك." + ], + "cookiesTitle": "3. ملفات تعريف الارتباط والتحليلات", + "cookiesText": "نستخدم ملفات تعريف الارتباط الأساسية لتذكر تفضيلات اللغة والمظهر. قد نستخدم Google Analytics وGoogle AdSense التي قد تضع ملفات تعريف ارتباط خاصة بها. يمكنك إدارة تفضيلات ملفات تعريف الارتباط من إعدادات متصفحك.", + "thirdPartyTitle": "4. خدمات الطرف الثالث", + "thirdPartyItems": [ + "Google AdSense — لعرض الإعلانات", + "Google Analytics — لإحصائيات الاستخدام المجهولة", + "التخزين السحابي — لتخزين الملفات المؤقت والمشفر" + ], + "securityTitle": "5. الأمان", + "securityText": "نستخدم إجراءات أمنية وفق معايير الصناعة تشمل تشفير HTTPS والتحقق من الملفات وتحديد المعدل وتعقيم المدخلات وتنظيف الملفات التلقائي. جميع البيانات أثناء النقل مشفرة وتتم معالجة الملفات في بيئات معزولة.", + "rightsTitle": "6. حقوقك", + "rightsText": "بما أننا لا نخزن بيانات شخصية بخلاف الحسابات الاختيارية، فإن البيانات المطلوب إدارتها محدودة. إذا كان لديك حساب، يمكنك حذفه في أي وقت. يتم تطهير جميع الملفات المعالجة تلقائياً خلال {{minutes}} دقيقة.", + "contactTitle": "7. الاتصال", + "contactText": "أسئلة حول هذه السياسة؟ تواصل معنا على" + }, + "terms": { + "metaDescription": "شروط استخدام SaaS-PDF. تعرّف على القواعد والإرشادات لاستخدام أدواتنا المجانية عبر الإنترنت.", + "title": "شروط الاستخدام", + "lastUpdated": "آخر تحديث: {{date}}", + "acceptanceTitle": "1. قبول الشروط", + "acceptanceText": "باستخدامك لموقع SaaS-PDF، فإنك توافق على الالتزام بشروط الاستخدام هذه. إذا كنت لا توافق، يرجى التوقف عن الاستخدام فوراً.", + "serviceTitle": "2. وصف الخدمة", + "serviceText": "يوفر SaaS-PDF أدوات مجانية عبر الإنترنت لتحويل الملفات وضغطها ومعالجتها. يتم تقديم الخدمة \"كما هي\" بدون ضمانات من أي نوع.", + "useTitle": "3. الاستخدام المقبول", + "useItems": [ + "يجب أن ترفع فقط ملفات لديك الحق في معالجتها.", + "يجب ألا ترفع محتوى ضاراً أو غير قانوني أو محمي بحقوق النشر بدون إذن.", + "يُحظر الاستخدام الآلي أو المفرط للخدمة.", + "يجب ألا تحاول تجاوز إجراءات الأمان أو حدود المعدل." + ], + "fileTitle": "4. معالجة الملفات", + "fileItems": [ + "يتم حذف جميع الملفات المرفوعة والمعالجة تلقائياً خلال {{minutes}} دقيقة.", + "لسنا مسؤولين عن أي فقدان بيانات أثناء المعالجة.", + "أنت مسؤول عن الاحتفاظ بنسخ احتياطية من ملفاتك.", + "لا نضمن الحفاظ على أي محتوى مرفوع بعد فترة المعالجة." + ], + "liabilityTitle": "5. تحديد المسؤولية", + "liabilityText": "لن يكون SaaS-PDF مسؤولاً عن أي أضرار مباشرة أو غير مباشرة أو عرضية أو تبعية ناتجة عن استخدام الخدمة أو عدم القدرة على استخدامها. استخدام الخدمة على مسؤوليتك.", + "ipTitle": "6. الملكية الفكرية", + "ipText": "جميع الأدوات والواجهات والمحتوى على SaaS-PDF هي ملكية فكرية لمشغلي الخدمة. تحتفظ بملكية كاملة لجميع الملفات التي ترفعها وتعالجها.", + "changesTitle": "7. التغييرات على الشروط", + "changesText": "نحتفظ بالحق في تعديل هذه الشروط في أي وقت. الاستمرار في استخدام الخدمة بعد التغييرات يعني قبول الشروط المحدثة.", + "contactTitle": "8. الاتصال", + "contactText": "أسئلة حول هذه الشروط؟ تواصل معنا على" + } + }, "tools": { "pdfToWord": { "title": "PDF إلى Word", diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 9ddaaf8..e418c90 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -24,6 +24,11 @@ "password": "Password", "darkMode": "Dark Mode", "lightMode": "Light Mode", + "contact": "Contact", + "send": "Send", + "subject": "Subject", + "message": "Message", + "name": "Name", "errors": { "fileTooLarge": "File is too large. Maximum size is {{size}}MB.", "invalidFileType": "Invalid file type. Accepted: {{types}}", @@ -86,6 +91,109 @@ "feature3Title": "Built-in security", "feature3Desc": "Access files securely, protected by automatic encryption." }, + "pages": { + "about": { + "metaDescription": "Learn about SaaS-PDF — free, fast, and secure online file tools for PDFs, images, video, and text. No registration required.", + "title": "About SaaS-PDF", + "missionTitle": "Our Mission", + "missionText": "SaaS-PDF was built to make professional-grade file tools accessible to everyone — for free. We believe that converting, compressing, and editing documents should be simple, fast, and private. No sign-ups, no hidden fees, no software to install.", + "technologyTitle": "Technology", + "technologyText": "Our platform is powered by modern cloud infrastructure designed for speed and reliability. Files are processed server-side using industry-leading open-source libraries, ensuring accurate conversions and high-quality output every time. Our AI-powered tools leverage advanced machine learning models for intelligent document analysis, translation, and summarization.", + "securityTitle": "Security", + "securityText": "Security is built into every layer of our platform. All file transfers are encrypted via HTTPS. Uploaded files are validated, size-limited, and processed in isolated environments. We employ rate limiting and input sanitization to prevent abuse.", + "privacyTitle": "File Privacy", + "privacyText": "Your files belong to you. We never read, share, or sell the content of your documents. All uploaded and processed files are automatically deleted from our servers within {{minutes}} minutes. No human eyes ever see your data — processing is fully automated.", + "toolsTitle": "What We Offer", + "toolCategories": [ + "PDF tools — convert, compress, merge, split, rotate, watermark, protect, unlock, edit, and more", + "Image tools — convert, resize, compress, remove backgrounds with AI", + "AI document tools — chat with PDFs, summarize, translate, extract tables", + "OCR — extract text from images and scanned PDFs in English, Arabic, and French", + "Utility tools — QR code generator, video to GIF, word counter, text cleaner" + ] + }, + "contact": { + "metaDescription": "Contact the SaaS-PDF team. Report bugs, request features, or send us a message.", + "title": "Contact Us", + "subtitle": "Have a question, found a bug, or want to request a feature? We'd love to hear from you.", + "formTitle": "Send Us a Message", + "categoryLabel": "Message Type", + "categories": { + "general": "General Inquiry", + "bug": "Bug Report", + "feature": "Feature Request" + }, + "bugPlaceholder": "Please describe the issue: what you did, what you expected, and what happened instead.", + "featurePlaceholder": "Describe the feature you'd like to see and how it would help you.", + "generalPlaceholder": "Write your message here...", + "namePlaceholder": "Your name", + "emailPlaceholder": "your@email.com", + "subjectPlaceholder": "Subject", + "successMessage": "Your message has been sent! We'll get back to you soon.", + "directEmail": "Or email us directly at", + "responseTime": "We typically respond within 24–48 hours." + }, + "privacy": { + "metaDescription": "Privacy policy for SaaS-PDF. Learn how we handle your files and data with full transparency.", + "title": "Privacy Policy", + "lastUpdated": "Last updated: {{date}}", + "dataCollectionTitle": "1. Data Collection", + "dataCollectionText": "We only process files you intentionally upload. We do not require registration, and no personal information is collected during file processing. If you create an account, we store only your email address and hashed password.", + "fileHandlingTitle": "2. File Processing & Storage", + "fileHandlingItems": [ + "Uploaded files are processed on our secure servers.", + "All uploaded and output files are automatically deleted within {{minutes}} minutes.", + "Files are stored in encrypted cloud storage during processing.", + "We never access, read, or share the content of your files.", + "Processing is fully automated — no human reviews your documents." + ], + "cookiesTitle": "3. Cookies & Analytics", + "cookiesText": "We use essential cookies to remember your language preference and theme. We may use Google Analytics and Google AdSense, which may place their own cookies. You can manage cookie preferences in your browser settings.", + "thirdPartyTitle": "4. Third-Party Services", + "thirdPartyItems": [ + "Google AdSense — for displaying advertisements", + "Google Analytics — for anonymous usage statistics", + "Cloud storage — for temporary encrypted file storage" + ], + "securityTitle": "5. Security", + "securityText": "We employ industry-standard security measures including HTTPS encryption, file validation, rate limiting, input sanitization, and automatic file cleanup. All data in transit is encrypted, and files are processed in isolated environments.", + "rightsTitle": "6. Your Rights", + "rightsText": "Since we don't store personal data beyond optional accounts, there is minimal data to manage. If you have an account, you can delete it at any time. All processed files are automatically purged within {{minutes}} minutes.", + "contactTitle": "7. Contact", + "contactText": "Questions about this policy? Contact us at" + }, + "terms": { + "metaDescription": "Terms of service for SaaS-PDF. Understand the rules and guidelines for using our free online tools.", + "title": "Terms of Service", + "lastUpdated": "Last updated: {{date}}", + "acceptanceTitle": "1. Acceptance of Terms", + "acceptanceText": "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.", + "serviceTitle": "2. Service Description", + "serviceText": "SaaS-PDF provides free online tools for file conversion, compression, and transformation. The service is provided \"as is\" without warranties of any kind.", + "useTitle": "3. Acceptable Use", + "useItems": [ + "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.", + "You must not attempt to bypass security measures or rate limits." + ], + "fileTitle": "4. File Handling", + "fileItems": [ + "All uploaded and processed files are automatically deleted within {{minutes}} minutes.", + "We are not responsible for any data loss during processing.", + "You are responsible for maintaining your own file backups.", + "We do not guarantee the preservation of any uploaded content beyond the processing window." + ], + "liabilityTitle": "5. Limitation of Liability", + "liabilityText": "SaaS-PDF shall not be liable for any direct, indirect, incidental, or consequential damages resulting from the use or inability to use the service. Use of the service is at your own risk.", + "ipTitle": "6. Intellectual Property", + "ipText": "All tools, interfaces, and content on SaaS-PDF are the intellectual property of the service operators. You retain full ownership of all files you upload and process.", + "changesTitle": "7. Changes to Terms", + "changesText": "We reserve the right to modify these terms at any time. Continued use of the service after changes constitutes acceptance of the updated terms.", + "contactTitle": "8. Contact", + "contactText": "Questions about these terms? Contact us at" + } + }, "tools": { "pdfToWord": { "title": "PDF to Word", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 5b3477b..8db163d 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -24,6 +24,11 @@ "password": "Mot de passe", "darkMode": "Mode sombre", "lightMode": "Mode clair", + "contact": "Contact", + "send": "Envoyer", + "subject": "Sujet", + "message": "Message", + "name": "Nom", "errors": { "fileTooLarge": "Fichier trop volumineux. Taille maximale autorisée : {{size}} Mo.", "invalidFileType": "Type de fichier non valide. Formats acceptés : {{types}}", @@ -86,6 +91,109 @@ "feature3Title": "Sécurité intégrée", "feature3Desc": "Accédez aux fichiers en toute sécurité, protégés par un cryptage automatique." }, + "pages": { + "about": { + "metaDescription": "Découvrez SaaS-PDF — outils en ligne gratuits, rapides et sécurisés pour les PDF, images, vidéos et textes. Aucune inscription requise.", + "title": "À propos de SaaS-PDF", + "missionTitle": "Notre mission", + "missionText": "SaaS-PDF a été créé pour rendre les outils de fichiers professionnels accessibles à tous — gratuitement. Nous croyons que la conversion, la compression et l'édition de documents doivent être simples, rapides et privées. Pas d'inscription, pas de frais cachés, pas de logiciel à installer.", + "technologyTitle": "Technologie", + "technologyText": "Notre plateforme est alimentée par une infrastructure cloud moderne conçue pour la vitesse et la fiabilité. Les fichiers sont traités côté serveur à l'aide de bibliothèques open source de référence, garantissant des conversions précises et des résultats de haute qualité à chaque fois. Nos outils alimentés par l'IA exploitent des modèles d'apprentissage automatique avancés pour l'analyse, la traduction et le résumé intelligents de documents.", + "securityTitle": "Sécurité", + "securityText": "La sécurité est intégrée à chaque couche de notre plateforme. Tous les transferts de fichiers sont chiffrés via HTTPS. Les fichiers téléchargés sont validés, limités en taille et traités dans des environnements isolés. Nous utilisons la limitation de débit et l'assainissement des entrées pour prévenir les abus.", + "privacyTitle": "Confidentialité des fichiers", + "privacyText": "Vos fichiers vous appartiennent. Nous ne lisons, ne partageons ni ne vendons jamais le contenu de vos documents. Tous les fichiers téléchargés et traités sont automatiquement supprimés de nos serveurs dans les {{minutes}} minutes. Aucun regard humain ne voit vos données — le traitement est entièrement automatisé.", + "toolsTitle": "Ce que nous offrons", + "toolCategories": [ + "Outils PDF — convertir, compresser, fusionner, diviser, pivoter, filigraner, protéger, déverrouiller, éditer et plus", + "Outils d'images — convertir, redimensionner, compresser, supprimer l'arrière-plan avec l'IA", + "Outils documentaires IA — discuter avec des PDF, résumer, traduire, extraire des tableaux", + "OCR — extraire du texte d'images et de PDF numérisés en anglais, arabe et français", + "Outils utilitaires — générateur de QR code, vidéo vers GIF, compteur de mots, nettoyeur de texte" + ] + }, + "contact": { + "metaDescription": "Contactez l'équipe SaaS-PDF. Signalez un bug, demandez une fonctionnalité ou envoyez-nous un message.", + "title": "Nous contacter", + "subtitle": "Vous avez une question, trouvé un bug ou souhaitez demander une fonctionnalité ? Nous serions ravis de vous entendre.", + "formTitle": "Envoyez-nous un message", + "categoryLabel": "Type de message", + "categories": { + "general": "Demande générale", + "bug": "Signalement de bug", + "feature": "Demande de fonctionnalité" + }, + "bugPlaceholder": "Veuillez décrire le problème : ce que vous avez fait, ce que vous attendiez et ce qui s'est passé.", + "featurePlaceholder": "Décrivez la fonctionnalité souhaitée et comment elle vous aiderait.", + "generalPlaceholder": "Écrivez votre message ici...", + "namePlaceholder": "Votre nom", + "emailPlaceholder": "votre@email.com", + "subjectPlaceholder": "Sujet", + "successMessage": "Votre message a été envoyé ! Nous vous répondrons bientôt.", + "directEmail": "Ou contactez-nous directement à", + "responseTime": "Nous répondons généralement sous 24 à 48 heures." + }, + "privacy": { + "metaDescription": "Politique de confidentialité de SaaS-PDF. Découvrez comment nous gérons vos fichiers et données en toute transparence.", + "title": "Politique de confidentialité", + "lastUpdated": "Dernière mise à jour : {{date}}", + "dataCollectionTitle": "1. Collecte de données", + "dataCollectionText": "Nous ne traitons que les fichiers que vous téléchargez intentionnellement. Nous n'exigeons pas d'inscription et aucune information personnelle n'est collectée lors du traitement des fichiers. Si vous créez un compte, nous ne stockons que votre adresse e-mail et votre mot de passe chiffré.", + "fileHandlingTitle": "2. Traitement et stockage des fichiers", + "fileHandlingItems": [ + "Les fichiers téléchargés sont traités sur nos serveurs sécurisés.", + "Tous les fichiers téléchargés et générés sont automatiquement supprimés dans les {{minutes}} minutes.", + "Les fichiers sont stockés dans un stockage cloud chiffré pendant le traitement.", + "Nous n'accédons, ne lisons ni ne partageons jamais le contenu de vos fichiers.", + "Le traitement est entièrement automatisé — personne ne consulte vos documents." + ], + "cookiesTitle": "3. Cookies et analyses", + "cookiesText": "Nous utilisons des cookies essentiels pour mémoriser vos préférences de langue et de thème. Nous pouvons utiliser Google Analytics et Google AdSense, qui peuvent placer leurs propres cookies. Vous pouvez gérer les préférences de cookies dans les paramètres de votre navigateur.", + "thirdPartyTitle": "4. Services tiers", + "thirdPartyItems": [ + "Google AdSense — pour l'affichage de publicités", + "Google Analytics — pour les statistiques d'utilisation anonymes", + "Stockage cloud — pour le stockage temporaire chiffré des fichiers" + ], + "securityTitle": "5. Sécurité", + "securityText": "Nous employons des mesures de sécurité conformes aux normes de l'industrie, incluant le chiffrement HTTPS, la validation des fichiers, la limitation de débit, l'assainissement des entrées et le nettoyage automatique des fichiers. Toutes les données en transit sont chiffrées et les fichiers sont traités dans des environnements isolés.", + "rightsTitle": "6. Vos droits", + "rightsText": "Puisque nous ne stockons pas de données personnelles au-delà des comptes optionnels, les données à gérer sont minimales. Si vous avez un compte, vous pouvez le supprimer à tout moment. Tous les fichiers traités sont automatiquement purgés dans les {{minutes}} minutes.", + "contactTitle": "7. Contact", + "contactText": "Des questions sur cette politique ? Contactez-nous à" + }, + "terms": { + "metaDescription": "Conditions d'utilisation de SaaS-PDF. Comprenez les règles et directives pour utiliser nos outils gratuits en ligne.", + "title": "Conditions d'utilisation", + "lastUpdated": "Dernière mise à jour : {{date}}", + "acceptanceTitle": "1. Acceptation des conditions", + "acceptanceText": "En accédant et en utilisant SaaS-PDF, vous acceptez d'être lié par ces conditions d'utilisation. Si vous n'êtes pas d'accord, veuillez cesser d'utiliser le service immédiatement.", + "serviceTitle": "2. Description du service", + "serviceText": "SaaS-PDF fournit des outils gratuits en ligne pour la conversion, la compression et la transformation de fichiers. Le service est fourni \"tel quel\" sans garantie d'aucune sorte.", + "useTitle": "3. Utilisation acceptable", + "useItems": [ + "Vous ne pouvez télécharger que des fichiers que vous avez le droit de traiter.", + "Vous ne devez pas télécharger de contenu malveillant, illégal ou protégé par des droits d'auteur sans autorisation.", + "L'utilisation automatisée ou excessive du service est interdite.", + "Vous ne devez pas tenter de contourner les mesures de sécurité ou les limites de débit." + ], + "fileTitle": "4. Gestion des fichiers", + "fileItems": [ + "Tous les fichiers téléchargés et traités sont automatiquement supprimés dans les {{minutes}} minutes.", + "Nous ne sommes pas responsables de toute perte de données pendant le traitement.", + "Vous êtes responsable de la conservation de vos propres sauvegardes.", + "Nous ne garantissons pas la préservation du contenu téléchargé au-delà de la fenêtre de traitement." + ], + "liabilityTitle": "5. Limitation de responsabilité", + "liabilityText": "SaaS-PDF ne sera pas responsable des dommages directs, indirects, accessoires ou consécutifs résultant de l'utilisation ou de l'impossibilité d'utiliser le service. L'utilisation du service est à vos propres risques.", + "ipTitle": "6. Propriété intellectuelle", + "ipText": "Tous les outils, interfaces et contenus de SaaS-PDF sont la propriété intellectuelle des opérateurs du service. Vous conservez la pleine propriété de tous les fichiers que vous téléchargez et traitez.", + "changesTitle": "7. Modifications des conditions", + "changesText": "Nous nous réservons le droit de modifier ces conditions à tout moment. L'utilisation continue du service après les modifications constitue l'acceptation des conditions mises à jour.", + "contactTitle": "8. Contact", + "contactText": "Des questions sur ces conditions ? Contactez-nous à" + } + }, "tools": { "pdfToWord": { "title": "PDF vers Word", diff --git a/frontend/src/pages/AboutPage.tsx b/frontend/src/pages/AboutPage.tsx index df477fa..2215fb1 100644 --- a/frontend/src/pages/AboutPage.tsx +++ b/frontend/src/pages/AboutPage.tsx @@ -1,50 +1,103 @@ import { useTranslation } from 'react-i18next'; import { Helmet } from 'react-helmet-async'; +import { Link } from 'react-router-dom'; +import { Target, Cpu, Shield, Lock, Wrench } from 'lucide-react'; import { FILE_RETENTION_MINUTES } from '@/config/toolLimits'; export default function AboutPage() { const { t } = useTranslation(); + const toolCategories = t('pages.about.toolCategories', { returnObjects: true }) as string[]; return ( <> - {t('common.about')} — {t('common.appName')} - + {t('pages.about.title')} — {t('common.appName')} + + -
-

{t('common.about')}

+
+

+ {t('pages.about.title')} +

-

- We provide free, fast, and secure online tools for converting, compressing, - and processing files — PDFs, images, videos, and text. -

+ {/* Mission */} +
+
+ +

+ {t('pages.about.missionTitle')} +

+
+

+ {t('pages.about.missionText')} +

+
-

Why use our tools?

-
    -
  • 100% Free — No hidden charges, no sign-up required.
  • -
  • Private & Secure — Files are auto-deleted within {FILE_RETENTION_MINUTES} minutes.
  • -
  • Fast Processing — Server-side processing for reliable results.
  • -
  • Works Everywhere — Desktop, tablet, or mobile.
  • -
+ {/* Technology */} +
+
+ +

+ {t('pages.about.technologyTitle')} +

+
+

+ {t('pages.about.technologyText')} +

+
-

Available Tools

-
    -
  • PDF conversion tools (PDF↔Word)
  • -
  • PDF optimization and utility tools (compress, merge, split, rotate, page numbers)
  • -
  • PDF security tools (watermark, protect, unlock)
  • -
  • PDF/image conversion tools (PDF→Images, Images→PDF)
  • -
  • Image processing tools (convert, resize)
  • -
  • Video to GIF tool
  • -
  • Text tools (word counter, cleaner)
  • -
  • PDF to flowchart extraction tool
  • -
+ {/* Security */} +
+
+ +

+ {t('pages.about.securityTitle')} +

+
+

+ {t('pages.about.securityText')} +

+
-

Contact

-

- Have feedback or feature requests? Reach out at{' '} - support@example.com. -

+ {/* File Privacy */} +
+
+ +

+ {t('pages.about.privacyTitle')} +

+
+

+ {t('pages.about.privacyText', { minutes: FILE_RETENTION_MINUTES })} +

+
+ + {/* What We Offer */} +
+
+ +

+ {t('pages.about.toolsTitle')} +

+
+ {Array.isArray(toolCategories) && ( +
    + {toolCategories.map((cat, idx) => ( +
  • {cat}
  • + ))} +
+ )} +
+ + {/* CTA */} +
+

+ + {t('common.contact')} + +

+
); diff --git a/frontend/src/pages/ContactPage.tsx b/frontend/src/pages/ContactPage.tsx new file mode 100644 index 0000000..ef9e7c0 --- /dev/null +++ b/frontend/src/pages/ContactPage.tsx @@ -0,0 +1,179 @@ +import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Helmet } from 'react-helmet-async'; +import { Mail, Send, CheckCircle } from 'lucide-react'; + +const CONTACT_EMAIL = 'support@saas-pdf.com'; + +type Category = 'general' | 'bug' | 'feature'; + +export default function ContactPage() { + const { t } = useTranslation(); + const [category, setCategory] = useState('general'); + const [submitted, setSubmitted] = useState(false); + + const placeholderKey = `pages.contact.${category}Placeholder` as const; + + function handleSubmit(e: React.FormEvent) { + e.preventDefault(); + const form = e.currentTarget; + const data = new FormData(form); + const subject = data.get('subject') as string; + const body = data.get('message') as string; + const name = data.get('name') as string; + + // Open user's email client with pre-filled fields + const mailto = `mailto:${CONTACT_EMAIL}?subject=${encodeURIComponent(`[${category}] ${subject}`)}&body=${encodeURIComponent(`From: ${name}\n\n${body}`)}`; + window.location.href = mailto; + setSubmitted(true); + } + + if (submitted) { + return ( + <> + + {t('pages.contact.title')} — {t('common.appName')} + +
+ +

+ {t('pages.contact.successMessage')} +

+ +
+ + ); + } + + return ( + <> + + {t('pages.contact.title')} — {t('common.appName')} + + + + +
+
+

+ {t('pages.contact.title')} +

+

+ {t('pages.contact.subtitle')} +

+
+ +
+

+ {t('pages.contact.formTitle')} +

+ + {/* Category */} +
+ + +
+ + {/* Name */} +
+ + +
+ + {/* Email */} +
+ + +
+ + {/* Subject */} +
+ + +
+ + {/* Message */} +
+ +