The transaction tracking system is the core of BudgetView, allowing you to record every financial movement with detailed categorization, multi-currency support, and flexible date filtering.
Dual Currency Input
Enter amounts in USD or VES with automatic BCV conversion
Category Assignment
Organize transactions by custom income and expense categories
Period Filtering
Filter by 7 days, this month, last month, or custom date ranges
Real-Time Editing
Edit transaction details directly from the transaction history
const handleEditSubmit = async (event: React.FormEvent) => { event.preventDefault() const parsedAmount = parseFloat(editMonto) if (Number.isNaN(parsedAmount) || parsedAmount <= 0) { setEditError("El monto debe ser mayor a 0.") return } if (!editCategoriaId) { setEditError("Selecciona una categoría válida.") return } if (!editFecha) { setEditError("Selecciona una fecha para la transacción.") return } // Update transaction in Supabase}
const handleMontoChange = (value: string) => { setFormMonto(value) if (!value) { setAmountError("Ingresa un monto mayor a 0.") return } const parsed = parseFloat(value) if (Number.isNaN(parsed) || parsed <= 0) { setAmountError("El monto debe ser mayor a 0.") return } if (amountCurrency === "VES" && !canUseVesInput) { setAmountError("Necesitamos la tasa BCV para convertir tu monto.") return } setAmountError(null)}
CREATE TABLE transacciones ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), monto DECIMAL(12,2) NOT NULL, tipo VARCHAR(10) NOT NULL CHECK (tipo IN ('gasto', 'ingreso')), descripcion TEXT, fecha_transaccion TIMESTAMP WITH TIME ZONE NOT NULL, categoria_id UUID REFERENCES categorias(id), billetera_id UUID NOT NULL REFERENCES billeteras(id), usuario_id UUID NOT NULL REFERENCES auth.users(id), created_at TIMESTAMP WITH TIME ZONE DEFAULT now());
All monetary amounts are stored in USD for consistency, with VES conversion calculated on display.