Add full SEO optimization for Spanglish social and language events

- Add comprehensive metadata to root layout with Open Graph, Twitter cards
- Create dynamic sitemap.ts for all pages and events
- Create robots.ts with proper allow/disallow rules
- Add JSON-LD Event structured data to event detail pages
- Add page-specific metadata to events, community, contact, FAQ pages
- Add FAQ structured data schema
- Update footer with local SEO text for Asunción, Paraguay
- Add web manifest for mobile SEO
- Create 404 page with proper noindex
- Optimize image alt text and add lazy loading
- Add NEXT_PUBLIC_SITE_URL env variable
- Add about/ folder to gitignore
This commit is contained in:
root
2026-01-30 21:05:25 +00:00
parent d0ea55dc5b
commit 47ba754f05
40 changed files with 2659 additions and 420 deletions
+23 -3
View File
@@ -8,11 +8,12 @@ import { useAuth } from '@/context/AuthContext';
import Card from '@/components/ui/Card';
import Button from '@/components/ui/Button';
import Input from '@/components/ui/Input';
import GoogleSignInButton from '@/components/GoogleSignInButton';
import toast from 'react-hot-toast';
export default function RegisterPage() {
const router = useRouter();
const { t } = useLanguage();
const { t, locale: language } = useLanguage();
const { register } = useAuth();
const [loading, setLoading] = useState(false);
const [formData, setFormData] = useState({
@@ -28,8 +29,8 @@ export default function RegisterPage() {
try {
await register(formData);
toast.success('Account created successfully!');
router.push('/');
toast.success(language === 'es' ? 'Cuenta creada exitosamente!' : 'Account created successfully!');
router.push('/dashboard');
} catch (error: any) {
toast.error(error.message || t('auth.errors.emailExists'));
} finally {
@@ -47,6 +48,25 @@ export default function RegisterPage() {
</div>
<Card className="p-8">
{/* Google Sign-In Button */}
<GoogleSignInButton
redirectTo="/dashboard"
text="signup_with"
className="mb-4"
/>
{/* Or Divider */}
<div className="relative my-6">
<div className="absolute inset-0 flex items-center">
<div className="w-full border-t border-gray-300"></div>
</div>
<div className="relative flex justify-center text-sm">
<span className="px-2 bg-white text-gray-500">
{language === 'es' ? 'o registrarse con email' : 'or register with email'}
</span>
</div>
</div>
<form onSubmit={handleSubmit} className="space-y-6">
<Input
id="name"