feat: Initialize frontend with React, Vite, and Tailwind CSS

- Set up main entry point for React application.
- Create About, Home, NotFound, Privacy, and Terms pages with SEO support.
- Implement API service for file uploads and task management.
- Add global styles using Tailwind CSS.
- Create utility functions for SEO and text processing.
- Configure Vite for development and production builds.
- Set up Nginx configuration for serving frontend and backend.
- Add scripts for cleanup of expired files and sitemap generation.
- Implement deployment script for production environment.
This commit is contained in:
Your Name
2026-02-28 23:31:19 +02:00
parent 3b84ebb916
commit 85d98381df
93 changed files with 5940 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { FileText } from 'lucide-react';
export default function Footer() {
const { t } = useTranslation();
return (
<footer className="border-t border-slate-200 bg-slate-50">
<div className="mx-auto max-w-7xl px-4 py-8 sm:px-6 lg:px-8">
<div className="flex flex-col items-center justify-between gap-4 sm:flex-row">
{/* Brand */}
<div className="flex items-center gap-2 text-slate-600">
<FileText className="h-5 w-5" />
<span className="text-sm font-medium">
© {new Date().getFullYear()} {t('common.appName')}
</span>
</div>
{/* Links */}
<div className="flex items-center gap-6">
<Link
to="/privacy"
className="text-sm text-slate-500 transition-colors hover:text-primary-600"
>
{t('common.privacy')}
</Link>
<Link
to="/terms"
className="text-sm text-slate-500 transition-colors hover:text-primary-600"
>
{t('common.terms')}
</Link>
<Link
to="/about"
className="text-sm text-slate-500 transition-colors hover:text-primary-600"
>
{t('common.about')}
</Link>
</div>
</div>
</div>
</footer>
);
}