Complete CRUD todo list application with filters
Add todos, mark them complete, filter them - watch stats update automatically!
import { useSignal, createComputed, useSignalValue } from 'signalforge/react';
import { useState } from 'react';
const [todos, setTodos] = useSignal<Todo[]>([]);
const [filter, setFilter] = useSignal<'all' | 'active' | 'completed'>('all');
// Computed filtered list
const [filteredTodos] = useState(() => createComputed(() => {
switch (filter) {
case 'active': return todos.filter(t => !t.completed);
case 'completed': return todos.filter(t => t.completed);
default: return todos;
}
}));
// Add todo
const addTodo = (text: string) => {
setTodos([...todos, { id: Date.now(), text, completed: false }]);
};Date.now() or UUID for reliable item tracking.
Filter lists with computed signals for efficiency.
Let SignalForge calculate totals and counts.