Copiados Norte
Landing, backoffice y app de pedidos para una copiadora y gestoría de trámites en Villa Gesell.

El local hace copias, trámites de ANSES y AFIP, pagos de impuestos y librería. Pedidos, turnos, stock, impresoras y caja necesitan seguimiento. El cliente tiene que poder pedir y cotizar sin llamar. El dueño necesita números que el mostrador no tiene que ver.
Tres decisiones que lo definieron.
- 01
Un paquete core para precios, tipos y máquinas de estado
Por qué. El cotizador de la landing, el POS del mostrador y la app leen la misma tabla de precios. Un pedido sigue el mismo flujo en todos lados.
El costo. Compartir código no es compartir datos. Sin backend, la app tiene su propia copia del seed y sus pedidos no llegan al backoffice.
- 02
Un único reducer, guardado en una clave versionada de localStorage
Por qué. Toda acción del backoffice pasa por un reducer, así que sumar una base solo cambia el origen de los datos. Lo guardado se lee después de montar para no romper la hidratación.
El costo. Cada navegador tiene sus propios datos. Subir la versión de la clave descarta lo guardado antes.
- 03
El reporte mensual es HTML imprimible, no una librería de PDF
Por qué. Tres hojas A4 con @page conservan las tipografías de marca, el texto vectorial y las tramas que hacen legibles los gráficos en blanco y negro.
El costo. El PDF sale del diálogo de impresión. El dueño tiene que elegir "Guardar como PDF" y el resultado puede variar según el navegador.




Copiados Norte
Landing, backoffice y app de pedidos para una copiadora y gestoría de trámites en Villa Gesell.
- Rol
- Único desarrollador: landing, backoffice, app cliente y núcleo compartido
- Stack
- Next.js 16, React 19, TypeScript, Tailwind CSS 4, Recharts, Expo
- En vivo
- copiados-norte.vercel.app ↗

El local hace copias, trámites de ANSES y AFIP, pagos de impuestos y librería. Pedidos, turnos, stock, impresoras y caja necesitan seguimiento. El cliente tiene que poder pedir y cotizar sin llamar. El dueño necesita números que el mostrador no tiene que ver.
Tres decisiones que lo definieron.
Un paquete core para precios, tipos y máquinas de estado
Por qué. El cotizador de la landing, el POS del mostrador y la app leen la misma tabla de precios. Un pedido sigue el mismo flujo en todos lados.
El costo. Compartir código no es compartir datos. Sin backend, la app tiene su propia copia del seed y sus pedidos no llegan al backoffice.
Un único reducer, guardado en una clave versionada de localStorage
Por qué. Toda acción del backoffice pasa por un reducer, así que sumar una base solo cambia el origen de los datos. Lo guardado se lee después de montar para no romper la hidratación.
El costo. Cada navegador tiene sus propios datos. Subir la versión de la clave descarta lo guardado antes.
El reporte mensual es HTML imprimible, no una librería de PDF
Por qué. Tres hojas A4 con @page conservan las tipografías de marca, el texto vectorial y las tramas que hacen legibles los gráficos en blanco y negro.
El costo. El PDF sale del diálogo de impresión. El dueño tiene que elegir "Guardar como PDF" y el resultado puede variar según el navegador.



