feat: initialize project with Vite + React + TypeScript + Tailwind CSS

- Set up Vite 7 + React 19 + TypeScript 5 + Tailwind CSS 4
- Configure path aliases (@/ -> src/)
- Create Layout with Header and Footer components
- Create HomePage with hero section and feature highlights
- Set up cursor rules for agent-driven development
- Create PLAN.md and LESSONS.md for progress tracking

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Денис Шкабатур
2026-02-11 12:21:03 +03:00
commit 673760f9da
25 changed files with 3080 additions and 0 deletions

83
src/pages/HomePage.tsx Normal file
View File

@@ -0,0 +1,83 @@
import { Link } from "react-router-dom";
const highlights = [
{
icon: "\u{1F4D6}",
title: "Подробные описания",
text: "Каждая методика с научным обоснованием, плюсами и минусами",
},
{
icon: "\u{1F50D}",
title: "Удобный поиск",
text: "Быстрый поиск и фильтрация по категориям и параметрам",
},
{
icon: "\u{1F4CA}",
title: "Калькулятор BMI",
text: "Рассчитайте индекс массы тела и получите рекомендации",
},
{
icon: "\u{2696}\u{FE0F}",
title: "Сравнение методик",
text: "Сравните до 3 методик бок о бок для выбора подходящей",
},
] as const;
export function HomePage() {
return (
<>
{/* Hero Section */}
<section className="bg-gradient-to-br from-primary-50 via-white to-accent-50 py-20 dark:from-gray-900 dark:via-gray-950 dark:to-gray-900">
<div className="container mx-auto px-4 text-center">
<h1 className="text-4xl font-extrabold tracking-tight text-gray-900 sm:text-5xl lg:text-6xl dark:text-white">
Методики похудения
<span className="block text-primary-600 dark:text-primary-400">и здорового веса</span>
</h1>
<p className="mx-auto mt-6 max-w-2xl text-lg text-gray-600 dark:text-gray-300">
Полный справочник научно обоснованных методик от диет до физической активности.
Найдите подход, который подойдёт именно вам.
</p>
<div className="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row">
<Link
to="/methods"
className="rounded-xl bg-primary-600 px-8 py-3.5 text-base font-semibold text-white shadow-lg shadow-primary-500/25 transition hover:bg-primary-700 hover:shadow-xl"
>
Смотреть методики
</Link>
<Link
to="/calculator"
className="rounded-xl border-2 border-gray-300 bg-white px-8 py-3.5 text-base font-semibold text-gray-700 transition hover:border-primary-300 hover:text-primary-700 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-200 dark:hover:border-primary-600"
>
Рассчитать BMI
</Link>
</div>
</div>
</section>
{/* Highlights */}
<section className="py-20">
<div className="container mx-auto px-4">
<h2 className="text-center text-3xl font-bold text-gray-900 dark:text-white">
Что вас ждёт
</h2>
<div className="mt-12 grid gap-8 sm:grid-cols-2 lg:grid-cols-4">
{highlights.map(({ icon, title, text }) => (
<div
key={title}
className="rounded-2xl border border-gray-200 bg-white p-6 text-center transition-shadow hover:shadow-lg dark:border-gray-800 dark:bg-gray-900"
>
<div className="text-4xl" aria-hidden="true">{icon}</div>
<h3 className="mt-4 text-lg font-semibold text-gray-900 dark:text-white">
{title}
</h3>
<p className="mt-2 text-sm text-gray-500 dark:text-gray-400">
{text}
</p>
</div>
))}
</div>
</div>
</section>
</>
);
}