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. Жилье и коммунальные (до 35% дохода)
- 2. Еда (готовьте дома)
- 3. Транспорт
- 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;