From 99bf2d86ed1d8e6e423ac5499ba4d568ca71105e Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:37:02 +0200 Subject: [PATCH 01/29] Add landing trust signals --- landing/components/trust-signals.tsx | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 landing/components/trust-signals.tsx diff --git a/landing/components/trust-signals.tsx b/landing/components/trust-signals.tsx new file mode 100644 index 0000000..03d9fc2 --- /dev/null +++ b/landing/components/trust-signals.tsx @@ -0,0 +1,36 @@ +const signals = [ + { + title: "Gratis y sin cuotas", + description: "Sin suscripciones, pagos mensuales ni funciones bloqueadas por pago.", + }, + { + title: "Funciona en local", + description: "Los datos se guardan en el equipo del negocio y no necesitas internet para vender.", + }, + { + title: "Código abierto MIT", + description: "El proyecto es público en GitHub y se puede revisar, adaptar o mejorar.", + }, +]; + +export function TrustSignals() { + return ( +
+
+ +
+
+ ); +} From f63408a4cef152b81773f43f08673617d951b6f3 Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:37:28 +0200 Subject: [PATCH 02/29] Show trust signals on landing --- landing/app/page.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/landing/app/page.tsx b/landing/app/page.tsx index ba0ba07..c4c6177 100644 --- a/landing/app/page.tsx +++ b/landing/app/page.tsx @@ -1,5 +1,6 @@ import { Header } from "@/components/header"; import { Hero } from "@/components/hero"; +import { TrustSignals } from "@/components/trust-signals"; import { Features } from "@/components/features"; import { Screenshots } from "@/components/screenshots"; import { FAQ } from "@/components/faq"; @@ -12,6 +13,7 @@ export default function Home() {
+ From 4a13e010a6855e86786e6082585de820bdb87409 Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:40:37 +0200 Subject: [PATCH 03/29] Update hero download CTA --- landing/components/hero.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/landing/components/hero.tsx b/landing/components/hero.tsx index 4fdc515..3a84b8b 100644 --- a/landing/components/hero.tsx +++ b/landing/components/hero.tsx @@ -39,13 +39,13 @@ export function Hero() {
- Descargar para Windows + Descargar última versión para Windows

- MIT · Windows 10/11 · Java 25 + MIT · Windows 10/11 · Java 25 incluido en el instalador

From 38189f91fc5b5c779c2d1532e178172d811b6ebf Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:41:43 +0200 Subject: [PATCH 04/29] Improve landing FAQ copy --- landing/components/faq.tsx | 55 ++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/landing/components/faq.tsx b/landing/components/faq.tsx index a029483..8a3a8cf 100644 --- a/landing/components/faq.tsx +++ b/landing/components/faq.tsx @@ -6,14 +6,19 @@ import { useState } from "react"; const faqs: { question: string; answer: ReactNode }[] = [ { question: "¿FreeTPV es gratis?", - answer: <>Sí. FreeTPV es gratuito y de código abierto bajo licencia MIT., + answer: ( + <> + Sí. No hay planes de pago, cuotas mensuales ni funciones bloqueadas. El código se + publica bajo licencia MIT para que puedas revisarlo o adaptarlo. + + ), }, { question: "¿Para qué negocios está pensado?", answer: ( <> - Está pensado para bares, restaurantes, cafeterías y pequeños negocios de hostelería - que necesitan un TPV sencillo y sin cuotas. + Para bares, cafeterías, restaurantes pequeños y negocios de hostelería que necesitan + vender rápido, gestionar productos y sacar tickets sin depender de un sistema complejo. ), }, @@ -21,21 +26,44 @@ const faqs: { question: string; answer: ReactNode }[] = [ question: "¿Funciona sin conexión a internet?", answer: ( <> - Sí. FreeTPV es una aplicación de escritorio y guarda los datos localmente en el equipo - donde se instala. + Sí. FreeTPV es una aplicación de escritorio: los productos, usuarios y ajustes se guardan + en una base de datos local en el equipo donde se instala. ), }, { question: "¿Qué sistema operativo soporta?", - answer: <>La versión principal está pensada para Windows 10 y Windows 11., + answer: ( + <> + La versión principal está pensada para Windows 10 y Windows 11. El instalador incluye + Java, así que no necesitas instalarlo aparte para usar la aplicación. + + ), + }, + { + question: "¿Necesito configurar algo para imprimir tickets?", + answer: ( + <> + Normalmente sí. Debes tener instalada la impresora térmica en Windows y seleccionarla en + los ajustes de FreeTPV. La impresión está pensada para tickets ESC/POS. + + ), + }, + { + question: "¿Puedo tener varios usuarios?", + answer: ( + <> + Sí. Puedes crear usuarios para el equipo y separar el acceso por roles, por ejemplo + administrador y camarero. + + ), }, { - question: "¿Permite gestionar productos, usuarios y ventas?", + question: "¿Permite gestionar productos, ventas y copias de seguridad?", answer: ( <> - Sí. Incluye gestión de productos, categorías, usuarios, permisos, ventas, cobros y - copias de seguridad. + Sí. Incluye productos y categorías, pantalla de ventas, cobro en efectivo o tarjeta, + ajustes del negocio y copias de seguridad de los datos. ), }, @@ -43,17 +71,16 @@ const faqs: { question: string; answer: ReactNode }[] = [ question: "¿Tiene virus?", answer: ( <> - No. FreeTPV es código abierto, por lo que cualquiera puede revisar el código. Las - descargas oficiales se publican desde{" "} + No. Las descargas oficiales se publican desde{" "} GitHub Releases - . + , y el código es público para que cualquiera pueda revisarlo. ), }, @@ -84,7 +111,7 @@ export function FAQ() { Preguntas frecuentes

- Respuestas rápidas sobre el funcionamiento, la licencia y la instalación de FreeTPV. + Respuestas prácticas sobre instalación, impresión, usuarios y funcionamiento local.

From b6dffadd551e468d16cd8012b9fb5aa1ff339c03 Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:42:18 +0200 Subject: [PATCH 05/29] Update landing footer links --- landing/components/footer.tsx | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/landing/components/footer.tsx b/landing/components/footer.tsx index e3de2ac..f912bff 100644 --- a/landing/components/footer.tsx +++ b/landing/components/footer.tsx @@ -6,6 +6,14 @@ function GithubIcon({ className }: { className?: string }) { ); } +function DiscordIcon({ className }: { className?: string }) { + return ( + + ); +} + export function Footer() { return ( From e25feb44cd653e35a4a0dd252a10cf21639276cf Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:50:28 +0200 Subject: [PATCH 08/29] =?UTF-8?q?A=C3=B1adir=20html=20de=20google=20para?= =?UTF-8?q?=20verificar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- googlec799a0bae7f48338.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 googlec799a0bae7f48338.html diff --git a/googlec799a0bae7f48338.html b/googlec799a0bae7f48338.html new file mode 100644 index 0000000..ac53893 --- /dev/null +++ b/googlec799a0bae7f48338.html @@ -0,0 +1 @@ +google-site-verification: googlec799a0bae7f48338.html \ No newline at end of file From e96e43519c07011017eb086b6121359ac2b72d15 Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:51:08 +0200 Subject: [PATCH 09/29] Eliminar html --- googlec799a0bae7f48338.html | 1 - 1 file changed, 1 deletion(-) delete mode 100644 googlec799a0bae7f48338.html diff --git a/googlec799a0bae7f48338.html b/googlec799a0bae7f48338.html deleted file mode 100644 index ac53893..0000000 --- a/googlec799a0bae7f48338.html +++ /dev/null @@ -1 +0,0 @@ -google-site-verification: googlec799a0bae7f48338.html \ No newline at end of file From 576e1b7e3ce4466d3a0d7df93e74021b31b4263b Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:51:52 +0200 Subject: [PATCH 10/29] =?UTF-8?q?A=C3=B1adir=20html=20de=20google=20para?= =?UTF-8?q?=20verificacion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ahora donde tiene que ir --- landing/public/googlec799a0bae7f48338.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 landing/public/googlec799a0bae7f48338.html diff --git a/landing/public/googlec799a0bae7f48338.html b/landing/public/googlec799a0bae7f48338.html new file mode 100644 index 0000000..ac53893 --- /dev/null +++ b/landing/public/googlec799a0bae7f48338.html @@ -0,0 +1 @@ +google-site-verification: googlec799a0bae7f48338.html \ No newline at end of file From ec4c8936d3493d89aa16d19b7156025b973fe40c Mon Sep 17 00:00:00 2001 From: 2844 <95580589+2844dev@users.noreply.github.com> Date: Tue, 26 May 2026 08:52:00 +0200 Subject: [PATCH 11/29] Refine trust signal dividers --- landing/components/trust-signals.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/landing/components/trust-signals.tsx b/landing/components/trust-signals.tsx index 133c265..fa0c673 100644 --- a/landing/components/trust-signals.tsx +++ b/landing/components/trust-signals.tsx @@ -15,11 +15,11 @@ const signals = [ export function TrustSignals() { return ( -
+
-