Sistema de Inventario para Obsidian
Tu taller, totalmente bajo control: Obsidian como sistema de gestión de inventario y proyectos
O cómo dejar de mantener "hojas de cálculo importantes" y saber realmente qué tienes en stock.
El problema
Todo maker, aficionado a la electrónica o propietario de un pequeño taller conoce la situación. Decenas de cajones pequeños con componentes, proyectos a medias, un estante de pegamentos y pinturas "sé que lo tengo en algún sitio", una caja de tornillos "...del tamaño correcto, creo". Y por supuesto ese momento crítico: te sientas a montar algo y falta la resistencia que necesitas — o peor aún, la pediste hace tres meses pero no recuerdas dónde la pusiste.
Las hojas de cálculo funcionan durante un tiempo. Hasta que dejan de funcionar. No se enlazan entre sí, no tienen contexto, no saben que "este componente también está en otros tres proyectos" — e inevitablemente se abandonan.
En mi caso, dirijo el Teatro de Bailarines de Fuego Arta Foc. Construyo mucho equipamiento y utilizo una gran variedad de técnicas — desde electrónica, pasando por la impresión 3D, hasta la soldadura. Por eso necesitaba un seguimiento de inventario para mis proyectos (piezas, filamentos) más los materiales consumibles para los espectáculos (combustibles, materiales pirotécnicos).
¿Por qué Obsidian?
Obsidian es, en esencia, un editor de notas en markdown local. Pero con el plugin Dataview se convierte en algo mucho más potente: una base de datos donde las notas son registros y el frontmatter YAML son los campos.
Las ventajas clave:
- Local y sin conexión — todos los datos permanecen en archivos en tu disco
- Formato libre — tú decides qué campos tiene una nota
- Enlaces bidireccionales — los wikilinks <span class="text-amber-500/50" title="Nieznany link">[[...]]</span> crean conexiones entre notas
- DataviewJS — consultas JavaScript que pueden renderizar tablas interactivas, filtrar, ordenar y agregar datos
Arquitectura del sistema
El Sistema de Inventario para Obsidian consta de cinco tipos de notas y quince scripts DataviewJS que los conectan todos.
Componentes ──┐
Consumibles ──┤──→ Proyectos ──→ Inventario (artículos construidos)
Ubicaciones ──┘
└──→ Tipos de Evento ──→ Eventos (calendario)
Tipos de nota
Componentes — piezas individuales: resistencias, tornillos, módulos PCB, láminas de madera. Cada uno tiene un YAML con type, category, price_per_unit y locations (lista de enlaces de ubicación con cantidades).
Materiales Consumibles — materiales que se gastan durante el trabajo: pegamentos, pinturas, lija. Similar a los componentes pero con un campo plano stock y unit (ml, g, hoja, etc.).
Ubicaciones — jerarquía de tres niveles: Habitación → Armario/Estante → Contenedor/Caja. Cada nivel tiene su propia plantilla con listas de contenidos pobladas automáticamente.
Proyectos — el corazón del sistema. Cada proyecto contiene una lista de components (enlaces YAML con cantidades) y opcionalmente subprojects (módulos reutilizables). El script components_table.js recorre recursivamente todo el árbol y genera una Lista de Materiales completa.
Artículos de Inventario — instancias físicas de objetos construidos. Vinculados al proyecto de origen (source_project), su ubicación y estado (working, needs_repair, damaged, retired). Cada artículo tiene un registro de historial de reparaciones.
Tipos de Evento + Eventos — recetas para talleres o presentaciones (qué y cuánto necesitas por evento) + un calendario de fechas específicas. El script upcoming_events.js combina todos los eventos planificados en un único balance de materiales.
BOM recursivo — el mecanismo central
La característica más potente del sistema es el cálculo automático de la Lista de Materiales con soporte de subproyectos.
Considera esta estructura:
Lámpara de Ambiente
├── Controlador LED (subproyecto × 1)
│ ├── ATtiny85 × 1
│ ├── Resistencia 220Ω × 3
│ └── LED Rojo 5mm × 3
├── Carcasa Impresión 3D × 1
├── Contrachapado 3mm A4 × 2
└── Tornillo M3×10 × 4
El script resolve_komponenty.js recorre este árbol recursivamente (hasta 5 niveles de profundidad), acumula las cantidades y compara el resultado con el stock actual. Si luego dices "quiero construir 3 lámparas", el script shopping_list.js calcula exactamente cuántas unidades de cada componente necesitas pedir.
Paneles de control
El sistema incluye cinco paneles principales:
- Panel_Inventario.md — todos los artículos construidos con filtrado por categoría y estado
- Almacen_Materiales.md — consumibles con niveles de stock y ubicaciones
- Eventos_Proximos.md — calendario de eventos planificados + balance automático combinado de materiales
- Proyectos_Activos.md — lista de proyectos en curso
- Lista_Compras.md — lista de compras configurable: define proyectos y cantidades deseadas, la tabla aparece automáticamente
Cada panel es una nota markdown ordinaria que carga scripts DataviewJS. Las notas en sí no contienen datos — todo proviene de los archivos de componentes.
Cómo funciona en la práctica
Añadir un nuevo componente
Creo una nueva nota en Componentes/Electrónica/ desde una plantilla. Relleno: tipo, dónde está, cuántos tengo, cuánto cuesta. Una nota, dos minutos.
Desde ese momento, el componente es "visible" para todo el sistema: aparecerá en la tabla de demanda cuando un proyecto lo utilice, en el inventario de ubicaciones del Taller, y en el perfil de cualquier proyecto que lo contenga.
Construir un proyecto
En el YAML del proyecto enlazo los componentes. Para un proyecto complejo con módulos — creo subproyectos, los conecto con enlaces, establezco multiplicadores. Al abrir la vista del proyecto se muestra automáticamente la lista BOM completamente calculada, teniendo en cuenta toda la jerarquía.
Para cada componente veo cuánto tengo en stock y si es suficiente. Un icono rojo ⚠️ señala la falta de material.
Planificar compras
Abro Lista_Compras.md y en el YAML especifico cuántas unidades quiero construir:
objetivos_produccion:
- proyecto: "<span class="text-amber-500/50" title="Nieznany link">[[Lampara_Ambiente]]</span>"
unidades: 5
La tabla de abajo calcula automáticamente la demanda total, la compara con el stock actual y muestra lo que falta — con un enlace a la tienda.
Eso es literalmente un cambio en un archivo. Sin fórmulas, sin cálculos manuales.
Planificar talleres
Creo un "tipo de evento" — una receta que indica qué materiales se necesitan para una sesión. Luego creo un evento concreto con fecha y enlace al tipo. Abrir Eventos_Proximos.md muestra un calendario de todos los eventos próximos y un balance combinado — cuántos materiales necesitas en total para todos ellos.
Qué hay en la plantilla
El repositorio contiene un conjunto listo para usar:
15 scripts DataviewJS — la lógica del sistema: recursión BOM, tablas interactivas con filtrado y ordenación, balances de materiales, inventario de ubicaciones.
10 plantillas Markdown — patrones listos para cada tipo de nota, con claves YAML ya completadas y llamadas a scripts integradas.
14 notas de ejemplo — un ejemplo completo: un taller con estantes y contenedores, varios componentes electrónicos y mecánicos, un proyecto de lámpara LED con un subproyecto de controlador, talleres planificados con balance de materiales.
5 paneles de control — vistas listas que agregan información de todo el vault.
Instalación en 3 pasos
- Copiar la carpeta
obsidian-inventario-esa tu vault - Reemplazar
Artacon el nombre de tu vault (un comandosedo fragmento de PowerShell — ver README) - Activar DataviewJS en la configuración del plugin
Eso es todo. Empieza con los archivos de ejemplo y luego adáptalos a tus propios componentes y proyectos.
Limitaciones y cuándo NO usarlo
El sistema basado en Obsidian y Dataview tiene sus límites:
- No es un sistema ERP — sin historial de transacciones, contabilidad ni facturación.
- Sin sincronización en la nube — a menos que uses Obsidian Sync o, como yo, Dropbox.
- Los scripts solo funcionan dentro de Obsidian — la exportación a HTML no renderiza DataviewJS.
- Con un número muy grande de notas (miles), Dataview puede ralentizarse — aunque yo todavía no lo he experimentado.
Si gestionas un almacén con miles de SKU y necesitas un sistema de facturación — esta no es la herramienta adecuada. Si llevas un taller, hobby o pequeño estudio — el sistema funciona realmente bien.
Primeros pasos
- Descarga o clona el repositorio.
- Copia la carpeta
obsidian-inventario-esa tu vault. - Reemplaza
Artacon el nombre de tu vault (unsedo find-replace). - Abre las notas de ejemplo y explora cómo están estructuradas.
- Crea tu primer componente desde la plantilla, añádelo a un proyecto, comprueba Lista_Compras.md.
Toda la configuración lleva unos 10 minutos. El resto es añadir tus propias notas al ritmo que te convenga.
¿Para qué sirve?
El sistema es perfectamente adecuado para:
- Aficionados a la electrónica — seguimiento de componentes, BOM para proyectos PCB
- Makers de impresión 3D / corte láser — seguimiento de filamento, materiales en lámina, tornillería
- Pequeño taller / tienda de reparaciones — inventario de herramientas, stock de materiales, planificación de pedidos de clientes
- Organizadores de eventos (talleres, clases) — materiales por evento, balance de próximos talleres
Conclusiones
La belleza de este enfoque es que no hay servidor de base de datos, sin suscripción SaaS complicada, sin preocupaciones de sincronización. Todo está en archivos de texto plano, versionado por git si lo deseas, legible sin Obsidian.
El frontmatter YAML resulta ser sorprendentemente expresivo como modelo de datos: los enlaces entre notas reemplazan las claves foráneas, Dataview reemplaza SQL, y DataviewJS te da toda la flexibilidad de JavaScript cuando la necesitas.
Si dedicas aunque sea 30 minutos a la semana a gestionar el stock de componentes o a preparar eventos de taller — este sistema amortizará el tiempo de configuración en un mes.
La plantilla está disponible como código abierto. Ver README.md para instrucciones de instalación.
¡También he creado versiones en polaco e inglés! Están disponibles en mi proyecto enlace a Inventory.
Licencia: MIT