feat: Грибы Крыма — полная энциклопедия и справочник грибника

- Энциклопедия 20 видов грибов Крыма с детальными описаниями
- Интерактивный календарь грибника по месяцам
- Справочник: правила сбора, первая помощь, кулинария
- Поиск и фильтрация по съедобности и сезону
- Адаптивный дизайн, природная цветовая палитра
- Docker-конфигурация для деплоя

Tech: Next.js 15, TypeScript, Tailwind CSS 4, React 19
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Денис Шкабатур
2026-02-11 13:05:24 +03:00
parent 08263135dd
commit 72e07dad3d
28 changed files with 2598 additions and 104 deletions

View File

@@ -1,20 +1,31 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import type { Metadata } from 'next';
import { Inter } from 'next/font/google';
import { Header } from '@/components/Header';
import { Footer } from '@/components/Footer';
import './globals.css';
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
const inter = Inter({
subsets: ['latin', 'cyrillic'],
variable: '--font-inter',
});
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
title: {
default: 'Грибы Крыма — Энциклопедия грибника',
template: '%s | Грибы Крыма',
},
description:
'Полная энциклопедия грибов Крымского полуострова. Описания, фотографии, календарь сбора, справочник грибника. Съедобные и ядовитые грибы Крыма.',
keywords: [
'грибы Крыма',
'энциклопедия грибов',
'съедобные грибы',
'ядовитые грибы',
'грибной календарь',
'тихая охота',
'мышата',
'белый гриб',
],
};
export default function RootLayout({
@@ -23,11 +34,11 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
{children}
<html lang="ru" className={inter.variable}>
<body className="min-h-screen flex flex-col antialiased">
<Header />
<main className="flex-1">{children}</main>
<Footer />
</body>
</html>
);