Escribe para buscar notas, herramientas y páginas...

Heftli

SaaS de facturación para autónomos y pymes suizas

Rol
Diseñador, ingeniero y operador único
Lanzamiento
Enero 2026
Stack
TypeScript, React, Supabase, Stripe, PostgreSQL
Heftli interface

El problema

Autónomos y pequeños negocios suizos tienen que emitir facturas QR-Bill, un estándar nacional con reglas de formato estrictas que la mayoría de herramientas internacionales no cubren o encajan mal. Las alternativas eran suites de contabilidad enterprise con un setup medido en días, o hojas de cálculo.

Quería algo que tratara QR-Bill de forma nativa, registrara tiempo contra clientes y no exigiera formación de contabilidad para usarlo.

Arquitectura

Multi-tenant desde el primer commit

Añadir el aislamiento entre tenants a posteriori es caro, así que el row-level security y el scoping por tenant entraron antes de la primera funcionalidad. Supabase aporta Postgres y auth. Cada query corre bajo una política RLS, para que un bug de tenancy en la aplicación no filtre datos entre cuentas. La aplicación empezó en Cloudflare Workers. La trasladé a DigitalOcean para no depender del entorno de ejecución de un único proveedor.

Stripe cubre las suscripciones con reconciliación por webhook. La aplicación deriva el estado de facturación de Stripe en lugar de replicarlo, y eso elimina toda una categoría de bugs de drift.

El generador QR-Bill es un módulo autónomo que produce partes de pago del estándar suizo, validado contra la especificación, no contra un output de muestra.

  • Aislamiento de tenants con row-level security en Postgres
  • Stripe como fuente de verdad del estado de facturación
  • Jobs en background para reconciliación y facturación programada
  • Migraciones en CI contra un dataset con forma de producción

Operarlo

Una persona, cada capa

No hay equipo. Escribo las migraciones, trato los casos límite de pagos fallidos, vigilo los workers, respondo el correo de soporte y publico el frontend.

Esa restricción marcó la arquitectura más que cualquier preferencia. Lo que pedía intervención manual rutinaria se automatizó o se quitó, porque no hay a quién pasárselo. El sistema tiene que ser lo bastante aburrido como para dejarlo una semana en paz.

Contacto

Ponte en contacto

Envíame un mensaje para iniciar una conversación o escríbeme directamente por email.

Contacto