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:
34
frontend/src/pages/NotFoundPage.tsx
Normal file
34
frontend/src/pages/NotFoundPage.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Helmet } from 'react-helmet-async';
|
||||
import { Home } from 'lucide-react';
|
||||
|
||||
export default function NotFoundPage() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<>
|
||||
<Helmet>
|
||||
<title>404 — {t('common.appName')}</title>
|
||||
<meta name="robots" content="noindex" />
|
||||
</Helmet>
|
||||
|
||||
<div className="flex flex-col items-center justify-center py-24 text-center">
|
||||
<p className="text-7xl font-bold text-primary-600">404</p>
|
||||
<h1 className="mt-4 text-2xl font-semibold text-slate-900">
|
||||
Page Not Found
|
||||
</h1>
|
||||
<p className="mt-2 text-slate-500">
|
||||
The page you're looking for doesn't exist or has been moved.
|
||||
</p>
|
||||
<Link
|
||||
to="/"
|
||||
className="btn-primary mt-8 inline-flex items-center gap-2"
|
||||
>
|
||||
<Home className="h-4 w-4" />
|
||||
{t('common.home')}
|
||||
</Link>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user