← Volver← Back

Gestor de cotizacionesQuote manager

En producciónIn production
Portada del proyecto
Captura 1 del proyectoCaptura 2 del proyecto

App web permite crear, listar y exportar cotizaciones comerciales a partir de un catálogo de servicios y productos, con plantillas reutilizables y roles de usuario (admin, editor, empleado) que filtran el menú de configuración. La persistencia y la autenticación corren sobre Supabase: Postgres almacena cotizaciones, servicios y plantillas, y Row Level Security aplica el control de acceso por rol directamente en la base de datos en lugar de confiar solo en la UI. Supabase también resuelve el envío de correos para restablecer contraseñas e invitar nuevos usuarios, sin necesidad de un servicio de correo aparte. Cada cotización se puede exportar a un documento de Word para que el equipo la ajuste según lo que pida cada cliente. Lo que se muestra acá es una demo: las cotizaciones, el catálogo y los usuarios son datos de ejemplo, no información real de ningún cliente, para poder exhibir el funcionamiento completo del sistema sin exponer datos sensibles de la empresa.Quote Manager creates, lists, and exports commercial quotes built from a catalog of services and products, with reusable templates and user roles (admin, editor, employee) that filter the settings menu. Persistence and authentication run on Supabase: Postgres stores quotes, services, and templates, and Row Level Security enforces role-based access directly at the database level instead of relying only on the UI. Supabase also handles password-reset and user-invitation emails, without needing a separate email service. Each quote can be exported to a Word document so the team can adjust it to whatever the client needs. What's shown here is a demo: the quotes, catalog, and users are sample data, not real information from any client, so the system's full functionality can be demonstrated without exposing sensitive company data.

Stack tecnológicoTech stack

  • React
  • TypeScript
  • Vite
  • Tailwind
  • Supabase
  • PostgreSQL

ArquitecturaArchitecture

Gestor de cotizaciones

Decisiones claveKey decisions

  • Supabase como backend completo: persistencia, RLS y correo transaccionalSupabase as the full backend: persistence, RLS, and transactional email

    El negocio necesita persistir cotizaciones reales, controlar el acceso por rol a nivel de base de datos y enviar correos para restablecer contraseñas e invitar usuarios; Supabase cubre las tres necesidades sin construir un backend a medida, evitando levantar y mantener infraestructura propia para funcionalidades que ya vienen resueltas.The business needs to persist real quotes, control role-based access at the database level, and send emails for password resets and user invitations; Supabase covers all three needs without building a custom backend, avoiding the cost of standing up and maintaining infrastructure for functionality it already provides.

  • Exportación a Word en lugar de PDFWord export over PDF

    Los empleados necesitan poder editar la cotización generada según lo que pida cada cliente; un documento de Word es editable directamente, mientras que un PDF exigiría volver a la app o a otra herramienta para cualquier ajuste posterior.Employees need to be able to edit the generated quote based on each client's request; a Word document is directly editable, while a PDF would require going back to the app or another tool for any later adjustment.

  • Menú de configuración filtrado por rol mediante datos declarativosRole-filtered settings menu driven by declarative data

    Distintos roles necesitan ver secciones distintas del panel; declarar el menú como un arreglo con los roles permitidos evita esparcir esa lógica por cada componente.Different roles need to see different panel sections; declaring the menu as an array with allowed roles avoids spreading that logic across every component.