import React, { useState } from 'react'; import { Calculator, ShoppingCart, PiggyBank, BookOpen, CheckCircle } from 'lucide-react'; const FinanceBot = () => { const [activeSection, setActiveSection] = useState('main'); const [calculatorType, setCalculatorType] = useState('budget'); const [income, setIncome] = useState(''); const [expenses, setExpenses] = useState({ housing: '', food: '', transport: '', entertainment: '', savings: '' }); const [shoppingList, setShoppingList] = useState([]); const [completedTasks, setCompletedTasks] = useState(new Set()); const [householdList, setHouseholdList] = useState([]); const [householdBudget, setHouseholdBudget] = useState({ essential: 0, future: 0 }); const [selectedEarningType, setSelectedEarningType] = useState('immediate'); const budgetCalculation = () => { const totalIncome = parseFloat(income) || 0; return { needs: Math.round(totalIncome * 0.5), wants: Math.round(totalIncome * 0.3), savings: Math.round(totalIncome * 0.2) }; }; const expenseSum = () => { return Object.values(expenses).reduce((sum, val) => sum + (parseFloat(val) || 0), 0); }; const toggleTask = (taskId) => { const newCompleted = new Set(completedTasks); if (newCompleted.has(taskId)) { newCompleted.delete(taskId); } else { newCompleted.add(taskId); } setCompletedTasks(newCompleted); }; const addToShoppingList = (item) => { setShoppingList([...shoppingList, { id: Date.now(), name: item, price: 0, bought: false }]); }; const addToHouseholdList = (item, type) => { const newItem = { ...item, id: Date.now(), type: type, bought: false }; setHouseholdList([...householdList, newItem]); if (type === 'essential') { setHouseholdBudget(prev => ({ ...prev, essential: prev.essential + item.price })); } else { setHouseholdBudget(prev => ({ ...prev, future: prev.future + item.price })); } }; const baseProducts = [ { name: 'Гречка 1кг', price: 80 }, { name: 'Рис 1кг', price: 70 }, { name: 'Макароны 500г', price: 50 }, { name: 'Яйца 10шт', price: 80 }, { name: 'Курица 1кг', price: 200 }, { name: 'Молоко 1л', price: 70 }, { name: 'Хлеб', price: 40 }, { name: 'Картошка 2кг', price: 100 } ]; const essentialItems = [ { name: 'Матрас', price: 3000, category: 'Спальня' }, { name: 'Подушка', price: 800, category: 'Спальня' }, { name: 'Одеяло', price: 1500, category: 'Спальня' }, { name: 'Постельное белье (комплект)', price: 1200, category: 'Спальня' }, { name: 'Кастрюля средняя', price: 1000, category: 'Кухня' }, { name: 'Сковорода', price: 800, category: 'Кухня' }, { name: 'Тарелки (4 шт)', price: 400, category: 'Кухня' }, { name: 'Кружки (4 шт)', price: 300, category: 'Кухня' }, { name: 'Ложки, вилки, ножи', price: 500, category: 'Кухня' }, { name: 'Полотенце банное', price: 600, category: 'Ванная' }, { name: 'Полотенце для рук', price: 300, category: 'Ванная' }, { name: 'Мыло/гель для душа', price: 200, category: 'Ванная' }, { name: 'Зубная щетка и паста', price: 150, category: 'Ванная' }, { name: 'Шампунь', price: 250, category: 'Ванная' }, { name: 'Туалетная бумага (8 рул)', price: 400, category: 'Ванная' }, { name: 'Стиральный порошок', price: 300, category: 'Уборка' }, { name: 'Моющее средство', price: 150, category: 'Уборка' } ]; const futureItems = [ { name: 'Стол письменный', price: 4000, category: 'Мебель', priority: 'высокий' }, { name: 'Стул', price: 2000, category: 'Мебель', priority: 'высокий' }, { name: 'Шкаф для одежды', price: 8000, category: 'Мебель', priority: 'высокий' }, { name: 'Холодильник', price: 15000, category: 'Техника', priority: 'высокий' }, { name: 'Стиральная машина', price: 20000, category: 'Техника', priority: 'высокий' }, { name: 'Микроволновка', price: 4000, category: 'Техника', priority: 'средний' }, { name: 'Чайник электрический', price: 1500, category: 'Техника', priority: 'средний' }, { name: 'Утюг', price: 2000, category: 'Техника', priority: 'средний' }, { name: 'Пылесос', price: 6000, category: 'Техника', priority: 'средний' }, { name: 'Телевизор', price: 12000, category: 'Техника', priority: 'низкий' }, { name: 'Диван', price: 15000, category: 'Мебель', priority: 'средний' }, { name: 'Журнальный столик', price: 3000, category: 'Мебель', priority: 'низкий' }, { name: 'Зеркало', price: 1500, category: 'Мебель', priority: 'средний' }, { name: 'Шторы', price: 2000, category: 'Декор', priority: 'средний' }, { name: 'Лампа настольная', price: 1200, category: 'Декор', priority: 'средний' } ]; const immediateEarning = [ { name: 'Курьер доставки', income: '150-300₽/час', requirements: 'Велосипед/машина', effort: 'высокий' }, { name: 'Уборка квартир', income: '500-1500₽/уборка', requirements: 'Минимальные', effort: 'высокий' }, { name: 'Промоутер/раздача листовок', income: '120-200₽/час', requirements: 'Коммуникабельность', effort: 'средний' }, { name: 'Грузчик', income: '200-400₽/час', requirements: 'Физическая сила', effort: 'высокий' }, { name: 'Помощник на мероприятиях', income: '150-250₽/час', requirements: 'Ответственность', effort: 'средний' }, { name: 'Репетиторство (если есть знания)', income: '300-800₽/час', requirements: 'Знания предмета', effort: 'низкий' }, { name: 'Выгул собак', income: '200-500₽/прогулка', requirements: 'Любовь к животным', effort: 'низкий' }, { name: 'Мытье машин', income: '300-600₽/машина', requirements: 'Минимальные', effort: 'средний' } ]; const skillEarning = [ { name: 'Фриланс (дизайн, тексты)', income: '500-3000₽/заказ', time: '1-3 месяца обучения', platform: 'Freelance.ru, FL.ru' }, { name: 'Видеомонтаж', income: '1000-5000₽/видео', time: '2-4 месяца обучения', platform: 'YouTube, Kwork' }, { name: 'SMM (ведение соцсетей)', income: '15000-40000₽/месяц', time: '1-2 месяца обучения', platform: 'Telegram, Instagram' }, { name: 'Программирование', income: '2000-8000₽/час', time: '6-12 месяцев обучения', platform: 'Upwork, Хабр Фриланс' }, { name: 'Онлайн-репетиторство', income: '400-1200₽/час', time: '1 месяц подготовки', platform: 'Preply, Тетрика' }, { name: 'Переводы', income: '300-800₽/страница', time: '2-3 месяца изучения', platform: 'Translators-cafe' }, { name: 'Создание сайтов', income: '10000-50000₽/сайт', time: '3-6 месяцев обучения', platform: 'Freelance.ru' } ]; const passiveEarning = [ { name: 'Сдача вещей в аренду', income: '500-2000₽/месяц', description: 'Инструменты, техника, одежда' }, { name: 'Кэшбек от покупок', income: '1-15% от трат', description: 'Банковские карты, приложения' }, { name: 'Реферальные программы', income: '100-1000₽/человек', description: 'Приведи друга в банк/сервис' }, { name: 'Продажа ненужных вещей', income: '1000-10000₽', description: 'Avito, Youla, группы ВК' }, { name: 'Фотостоки (если умеешь фотографировать)', income: '50-500₽/фото', description: 'Shutterstock, Adobe Stock' }, { name: 'Депозиты в банке', income: '8-16% годовых', description: 'На сбережения свыше 50000₽' } ]; const weeklyTasks = [ { id: 1, week: 1, task: 'Изучить цены в 3 магазинах на основные продукты' }, { id: 2, week: 1, task: 'Найти дни скидок в ближайших магазинах' }, { id: 3, week: 2, task: 'Составить меню на 3 дня' }, { id: 4, week: 2, task: 'Рассчитать количество продуктов для меню' }, { id: 5, week: 3, task: 'Сделать покупки по списку и записать результат' }, { id: 6, week: 3, task: 'Готовить по плану 3 дня' }, { id: 7, week: 4, task: 'Составить улучшенный список покупок' }, { id: 8, week: 4, task: 'Сэкономить 200₽ от базового бюджета' } ]; return (
{activeSection !== 'main' && ( )} {activeSection === 'main' && (

Финансовый помощник

Ваш персональный гид по финансам и покупкам

)} {activeSection === 'basics' && (

Основы финансов

Правило 50/30/20

  • • 50% - обязательные расходы (жилье, еда, транспорт)
  • • 30% - желания (развлечения, одежда)
  • • 20% - сбережения и долги

Приоритеты расходов

  1. 1. Жилье и коммунальные (до 35% дохода)
  2. 2. Еда (готовьте дома)
  3. 3. Транспорт
  4. 4. Подушка безопасности

Лайфхаки экономии

  • • Составляйте список покупок заранее
  • • Покупайте после еды, не на голодный желудок
  • • Ищите товары на нижних полках
  • • Замораживайте хлеб порциями
)} {activeSection === 'calculator' && (

Финансовый калькулятор

{calculatorType === 'budget' && (
setIncome(e.target.value)} placeholder="Введите доход" className="w-full p-3 border rounded-lg focus:ring-2 focus:ring-green-500" />
{income && (

Распределение по правилу 50/30/20:

Обязательные расходы (50%): {budgetCalculation().needs}₽
Желания (30%): {budgetCalculation().wants}₽
Сбережения (20%): {budgetCalculation().savings}₽
)}
)} {calculatorType === 'expenses' && (
{Object.entries({ housing: 'Жилье', food: 'Еда', transport: 'Транспорт', entertainment: 'Развлечения', savings: 'Сбережения' }).map(([key, label]) => (
setExpenses({...expenses, [key]: e.target.value})} placeholder="0" className="w-full p-2 border rounded-lg focus:ring-2 focus:ring-green-500" />
))}
Общие расходы: {expenseSum()}₽
{income && (
Остается от дохода: = 0 ? 'text-green-600' : 'text-red-600'}> {parseFloat(income) - expenseSum()}₽
)}
)}
)} {activeSection === 'shopping' && (

Список покупок

Базовые продукты на неделю (1500-2000₽)

{baseProducts.map((product, index) => (
{product.name}
{product.price}₽
))}
Общая стоимость: {baseProducts.reduce((sum, p) => sum + p.price, 0)}₽
{shoppingList.length > 0 && (

Ваш список покупок

{shoppingList.map((item) => (
{item.name}
))}
)}
)} {activeSection === 'household' && (

Бытовые предметы

???? ПЕРВООЧЕРЕДНЫЕ ПОКУПКИ

Без этого сложно жить с первого дня

{['Спальня', 'Кухня', 'Ванная', 'Уборка'].map(category => (
{category}
{essentialItems.filter(item => item.category === category).map((item, index) => (
{item.name}
{item.price}₽
))}
))}
Общая стоимость первоочередных: {essentialItems.reduce((sum, item) => sum + item.price, 0)}₽

???? Многое можно купить б/у со скидкой 50-70%

???? ПОКУПКИ НА БУДУЩЕЕ

Планируйте по приоритетам и доходам

{['высокий', 'средний', 'низкий'].map(priority => (
{priority === 'высокий' ? '???? Высокий приоритет' : priority === 'средний' ? '???? Средний приоритет' : '???? Низкий приоритет'}
{futureItems.filter(item => item.priority === priority).map((item, index) => (
{item.name} ({item.category})
{item.price}₽
))}
))}
{householdList.length > 0 && (

Ваш список бытовых покупок

Первоочередные
{householdBudget.essential}₽
Будущие
{householdBudget.future}₽
{householdList.map((item) => (
{item.name} {item.price}₽
))}
Общая стоимость: {householdBudget.essential + householdBudget.future}₽
)}

???? Советы по экономии

  • • Ищите б/у мебель и технику - экономия до 70%
  • • Покупайте постепенно по приоритетам
  • • Проверяйте Авито, группы ВК, барахолки
  • • Базовые предметы важнее дорогих
  • • Можно временно обойтись матрасом на полу
)} {activeSection === 'earning' && (

Возможности заработка

{selectedEarningType === 'immediate' && (

???? БЫСТРЫЙ ЗАРАБОТОК

Деньги уже сегодня-завтра, без опыта

{immediateEarning.map((job, index) => (
{job.name} {job.income}
Требования: {job.requirements}
Нагрузка: {job.effort}
))}
???? Где искать:
  • • Авито (работа)
  • • HeadHunter, SuperJob
  • • Яндекс.Еда, Delivery Club (курьер)
  • • Telegram-каналы "Работа [ваш город]"
  • • Группы ВК по подработке
)} {selectedEarningType === 'skill' && (

???? ЗАРАБОТОК НА НАВЫКАХ

Долгосрочный доход через обучение

{skillEarning.map((skill, index) => (
{skill.name} {skill.income}
Время обучения: {skill.time}
Платформы: {skill.platform}
))}
???? Бесплатное обучение:
  • • YouTube каналы по профессиям
  • • Skillbox, GeekBrains (бесплатные курсы)
  • • HTML Academy
  • • Stepik, Coursera
  • • Нетология (базовые курсы)
)} {selectedEarningType === 'passive' && (

???? ПАССИВНЫЙ ДОХОД

Деньги без постоянной работы

{passiveEarning.map((option, index) => (
{option.name} {option.income}
{option.description}
))}
⚠️ Важно помнить:
  • • Начинайте с малого
  • • Не верьте обещаниям "легких денег"
  • • Изучайте каждую возможность
  • • Диверсифицируйте доходы
)}

???? Общие советы

  • • Начинайте с того, что можете делать уже сейчас
  • • Совмещайте быстрый заработок с изучением навыков
  • • Ведите учет доходов и расходов
  • • Откладывайте часть заработка на развитие
  • • Не стесняйтесь малых сумм - опыт важнее
)} {activeSection === 'tasks' && (

Задания для развития навыков

{[1, 2, 3, 4].map(week => (

Неделя {week}

{weeklyTasks.filter(task => task.week === week).map(task => (
{task.task}
))}
))}

Прогресс

Выполнено заданий: {completedTasks.size} из {weeklyTasks.length}
)}
Финансовый бот-помощник
Развивайте финансовые навыки пошагово
); }; export default FinanceBot;
Made on
Tilda