Skip to content

Instantly share code, notes, and snippets.

View codigoconjuan's full-sized avatar

Juan Pablo De la torre Valdez codigoconjuan

View GitHub Profile
@codigoconjuan
codigoconjuan / SearchExpenses.php
Created May 1, 2026 23:21
SearchExpense Tool
public function handle(Request $request): Stringable|string
{
$query = Expense::where('budget_id', $this->budgetId);
if ($request['name'] ?? null) {
$query->where('name', 'ilike', '%' . $request['name'] . '%');
}
if ($request['category'] ?? null) {
$query->where('category', 'ilike', '%' . $request['category'] . '%');
@codigoconjuan
codigoconjuan / BudgetAssistant.php
Created May 1, 2026 19:44
System Prompt para Asistente CashTrackr
public function instructions(): string
{
return <<<PROMPT
Eres un asistente financiero personal para un presupuesto específico.
Tu función es responder preguntas sobre los gastos y también agregar nuevos gastos.
{$this->budgetContext}
Reglas para consultar gastos:
@codigoconjuan
codigoconjuan / BudgetChatController.php
Created May 1, 2026 19:38
Contexto para LLM CashTrackr
if ($budget->isGoal()) {
$agent->budgetContext = "Este presupuesto es de tipo Meta/Objetivo llamado '{$budget->name}' con un monto total de \${$budget->amount}. Los gastos NO tienen categorías, solo nombre y monto.";
} else {
$agent->budgetContext = "Este presupuesto es de tipo General llamado '{$budget->name}' con un monto total de \${$budget->amount}. Los gastos tienen nombre, monto y categoría.";
}
@codigoconjuan
codigoconjuan / CashTrackrAgent.tsx
Last active May 13, 2026 22:38
Base para Chat de CashTrackr impulsado por Laravel AI SDK y React AI SDK
import { useState } from 'react';
type Props = {
budgetId: number
}
export default function CashTrackrAgent({budgetId}: Props) {
const [input, setInput] = useState('');
@codigoconjuan
codigoconjuan / DeleteExpenseTest.php
Created April 30, 2026 22:26
Base para Pruebas de Eliminar Gastos CashTrackr
it('allows the expense owner to delete an expense', function () {
$user = User::factory()->create([
'email_verified_at' => now(),
]);
$budget = Budget::factory()->for($user)->create([
'type' => 'general',
]);
@codigoconjuan
codigoconjuan / UpdateExpenseTest.php
Created April 30, 2026 19:43
Base para Pruebas de editar gasto CashTrackr
it('allows the expense owner to update an expense', function () {
$user = User::factory()->create([
'email_verified_at' => now(),
]);
$budget = Budget::factory()->for($user)->create([
'type' => 'general',
]);
$expense = Expense::factory()->for($budget)->create([
@codigoconjuan
codigoconjuan / CreateExpenseTest.php
Created April 29, 2026 23:54
Base para pruebas de Creación de Gastos en CashTrackr
<?php
it('allows the budget owner to create an expense in a general budget', function () {
$user = User::factory()->create([
'email_verified_at' => now(),
]);
});
@codigoconjuan
codigoconjuan / DeleteExpenseModal.tsx
Last active May 13, 2026 20:02
Store y Modal para Borrar Gastos CashTrackr
import { Dialog, DialogPanel, DialogTitle, DialogBackdrop } from '@headlessui/react'
import { useDeleteExpenseStore } from '@/stores/expense-delete-store'
export default function DeleteExpenseModal() {
const open = useDeleteExpenseStore(state => state.open)
const expense = useDeleteExpenseStore(state => state.expense)
const closeModal = useDeleteExpenseStore(state => state.closeModal)
return (
<Dialog open={open} onClose={closeModal} className="relative z-10">
@codigoconjuan
codigoconjuan / ExpenseDropdown.tsx
Created April 29, 2026 16:50
Dropdown para Gastos CashTrackr Laravel
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'
export default function ExpenseDropdown() {
return (
<Menu as="div" className="relative inline-block ">
<MenuButton className="inline-flex w-full justify-center gap-x-1.5 rounded-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 shadow-xs inset-ring-1 inset-ring-gray-300 hover:bg-gray-50 dark:bg-white/10 dark:text-white dark:shadow-none dark:inset-ring-white/5 dark:hover:bg-white/20">
Opciones
</MenuButton>
@codigoconjuan
codigoconjuan / expense.ts
Created April 28, 2026 17:56
Type para Gasto de CashTrackr
type CategoryValue =
| 'food'
| 'transportation'
| 'health'
| 'entertainment'
| 'subscriptions'
| 'beauty'
| 'clothing'
| 'home'
| 'education'