JUEGO

import React, { useState, useEffect } from 'react'; import { LineChart, Line, XAxis, YAxis, Tooltip, ResponsiveContainer, CartesianGrid, BarChart, Bar } from 'recharts'; import { motion } from 'framer-motion'; import { DollarSign, PieChart, Settings, BookOpen, PlusCircle, Download } from 'lucide-react'; // LFNA - Single-file React app (Tailwind CSS styles expected) // Usage: paste into a React + Tailwind project (Vite, Create React App, Next.js). // Dependencies: recharts, framer-motion, lucide-react export default function LFNAApp() { // Sample data and state const [incomeStreams, setIncomeStreams] = useState([ { id: 1, name: 'Ventas digitales', amount: 350, frequency: 'mensual' }, { id: 2, name: 'Afiliados', amount: 150, frequency: 'mensual' }, { id: 3, name: 'Inversión (dividendos)', amount: 80, frequency: 'trimestral' }, ]); const [transactions, setTransactions] = useState([ { id: 1, date: '2025-09-01', desc: 'Venta curso', type: 'ingreso', amount: 120 }, { id: 2, date: '2025-09-03', desc: 'Pago hosting', type: 'gasto', amount: -20 }, { id: 3, date: '2025-09-05', desc: 'Cobro afiliado', type: 'ingreso', amount: 50 }, ]); const [goals, setGoals] = useState([ { id: 1, title: 'Fondo emergencia', target: 2000, saved: 450 }, { id: 2, title: 'Comprar equipo', target: 1200, saved: 200 }, ]); const [activeTab, setActiveTab] = useState('dashboard'); const [newStream, setNewStream] = useState({ name: '', amount: '' }); useEffect(() => { // Example: sync to localStorage (simple persistence) localStorage.setItem('lfna_income', JSON.stringify(incomeStreams)); }, [incomeStreams]); // Helpers const addIncomeStream = () => { if (!newStream.name || !newStream.amount) return; const next = { id: Date.now(), name: newStream.name, amount: Number(newStream.amount), frequency: 'mensual' }; setIncomeStreams(prev => [next, ...prev]); setNewStream({ name: '', amount: '' }); }; const addTransaction = (tx) => { setTransactions(prev => [tx, ...prev]); }; const exportCSV = () => { const rows = [['Fecha','Descripción','Tipo','Monto'], ...transactions.map(t => [t.date, t.desc, t.type, t.amount])]; const csv = rows.map(r => r.map(v => `"${v}"`).join(',')).join('\n'); const blob = new Blob([csv], { type: 'text/csv' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'lfna_transactions.csv'; a.click(); URL.revokeObjectURL(url); }; // Simple chart data: monthly income summary (derived) const chartData = (() => { // aggregate last 6 months with demo values return [ { month: 'Abr', income: 300 }, { month: 'May', income: 420 }, { month: 'Jun', income: 380 }, { month: 'Jul', income: 510 }, { month: 'Ago', income: 460 }, { month: 'Sep', income: incomeStreams.reduce((s,i)=>s+i.amount,0) }, ]; })(); const totalMonthlyIncome = incomeStreams.reduce((s, i) => s + i.amount, 0); const totalSaved = goals.reduce((s,g)=>s+g.saved,0); return (

LFNA — Libertad Financiera

Panel para gestionar ingresos pasivos, objetivos y educación financiera

{/* Sidebar */} {/* Main content */}
{activeTab === 'dashboard' && (

Ingreso mensual estimado

${totalMonthlyIncome.toFixed(2)}

Meta más próxima

{goals[0]?.title || 'Sin metas'}
Guardado ${goals[0]?.saved || 0} / ${goals[0]?.target || 0}

Transacciones

{transactions.length}

Evolución de ingresos (últimos meses)

Fuentes de ingreso

    {incomeStreams.map(s => (
  • {s.name}
    {s.frequency}
    ${s.amount}
  • ))}

Metas y progreso

{goals.map(g => (
{g.title}
${g.saved} / ${g.target}
))}
)} {activeTab === 'streams' && (

Añadir nueva fuente

setNewStream({...newStream, name: e.target.value})} className="flex-1 p-2 border rounded" placeholder="Nombre (ej. Canal YouTube)" /> setNewStream({...newStream, amount: e.target.value})} className="w-36 p-2 border rounded" placeholder="Monto estimado" />

Lista completa

{incomeStreams.map(s=> ( ))}
FuenteFrecuenciaMonto
{s.name}{s.frequency}${s.amount}
)} {activeTab === 'goals' && (

Gestión de metas

{goals.map(g=> (
{g.title}
Meta ${g.target}
${g.saved}
{Math.round((g.saved/g.target)*100)}%
))}

Añadir ahorro a meta (demo)

)} {activeTab === 'learn' && (

Módulos de aprendizaje

  1. Fundamentos: presupuesto y flujo de caja
  2. Crear fuentes de ingreso digital
  3. Inversión pasiva y diversificación
  4. Automatización y escalado
  5. Protección y fiscalidad

Cada módulo puede enlazar a cursos, PDFs o videos. Usa este espacio para centralizar lo que estudias.

Recursos rápidos

  • - Checklist para lanzar un producto digital
  • - Plantilla de presupuesto mensual
  • - Calendario de pagos y vencimientos
)} {activeTab === 'settings' && (

Ajustes

Configura moneda, sincronización con Google Sheets o Stripe (pendiente de integrar).

)}
LFNA • App demo — personalízala para tu flujo y fuentes de ingreso
); }