Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions core/controllers/IndexController.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,31 @@ public function getTigerAction()
// view: index/get-tiger.phtml
}

/**
* Locale-aware marketing views. The shipped marketing pages are long-form content the view owns, so
* they're not string-keyed (I18N.md) — instead a whole translated view ships alongside the English one:
* `index/<action>.<lang>.phtml`. When the active locale has such a variant, render it instead of the
* English default — so `/es/vibe` serves `index/vibe.es.phtml`. English (or a missing variant) falls
* through to `index/<action>.phtml` unchanged. Runs before the ViewRenderer's auto-render.
*
* @return void
*/
public function postDispatch()
{
$lang = defined('LANG') ? (string) LANG : 'en';
if ($lang === '' || $lang === 'en') { return; }

$action = $this->getRequest()->getActionName();
$variant = 'index/' . $action . '.' . $lang . '.phtml';
if ($this->view->getScriptPath($variant)) {
// Render the exact script — NOT setScriptAction(): ZF1's inflector rewrites a dotted action
// ("vibe.es" → "vibe-es"), so the auto-render would look for the wrong file and 500.
$vr = $this->_helper->getHelper('viewRenderer');
$vr->setNoRender(true);
$vr->renderScript($variant);
}
}

/** The configured home-page id (tiger.site.home_page), or '' for the built-in landing. */
protected function _homePageId()
{
Expand Down
114 changes: 114 additions & 0 deletions core/views/scripts/index/agency.es.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<?php
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) 2026 WebTigers. Tiger™ and WebTigers™ are trademarks of WebTigers.
/**
* /agency — the agency story: one client or a hundred, run from a single back office. Rendered
* inside the PUMA public layout; Bootstrap + --bs-* tokens (restyles live with theme + skin).
* Shipped marketing.
*/
$this->title = 'Ideal para agencias — aloja cientos de sitios de clientes | Tiger';

$benefits = [
['fa-diagram-project', 'Una instalación, muchos clientes', 'Cada cliente es una organización sobre la misma plataforma: datos aislados, sus propios usuarios y roles, su propio tema y contenido. Sumas un cliente, no un servidor.'],
['fa-gauge-high', 'Arranca cada proyecto al instante', 'Cliente nuevo el lunes, un sitio multiinquilino funcionando ese mismo día. Sáltate todo el andamiaje de autenticación, roles y CMS que rehaces en cada proyecto y ve directo a lo que el cliente te pidió.'],
['fa-palette', 'Marca blanca por cliente', 'El tema y el skin se resuelven por organización, así que cada cliente ve su marca, no la tuya ni una plantilla genérica. Cambia el look en vivo, sin volver a desplegar.'],
['fa-user-shield', 'Acceso acotado, sin riesgos', 'ACL con denegación por defecto y roles en la membresía. Le das a un cliente acceso a su organización y a nada más; sumas a un compañero como manager aquí, como viewer allá.'],
['fa-server', 'Corre donde tú alojas', 'cPanel, un VPS de $5 o una flota detrás de un balanceador de carga: cero paso de compilación, huella mínima. Aloja cientos de sitios sin que la factura del hosting se coma el margen.'],
['fa-sliders', 'Config en vivo, sin despliegues', 'Cambia la configuración, los textos o la marca de un cliente desde el admin: las capas de config y traducción se sobreescriben en tiempo de solicitud, así que los ajustes llegan sin necesidad de una nueva versión.'],
];
?>
<!-- Hero -->
<section class="py-5">
<div class="container text-center py-lg-5">
<span class="badge rounded-pill text-bg-primary-subtle text-primary-emphasis mb-3 px-3 py-2">
<i class="fa-solid fa-people-group me-1"></i> Para agencias y freelancers
</span>
<h1 class="display-4 fw-bold mb-3">Un cliente, o cien.</h1>
<p class="lead text-secondary mx-auto mb-4" style="max-width: 720px;">
Tiger es multiinquilino hasta la médula, así que una sola instalación corre todos los sitios
de tus clientes: cada uno aislado, con marca blanca y gestionado desde una misma oficina
central. Arranca cada proyecto al instante y quédate con el margen que antes se comía el hosting.
</p>
<div class="d-flex flex-wrap gap-2 justify-content-center">
<a href="/signup" class="btn btn-primary btn-lg px-4"><i class="fa-solid fa-arrow-right-to-bracket me-2"></i>Comienza ya</a>
<a href="/docs" class="btn btn-outline-secondary btn-lg px-4">Lee la documentación</a>
</div>
</div>
</section>

<!-- One client / many clients framing -->
<section class="pb-2">
<div class="container">
<div class="row g-4 justify-content-center">
<div class="col-md-5">
<div class="card h-100 border-0 border-top border-primary border-3 shadow-sm">
<div class="card-body text-center p-4">
<i class="fa-solid fa-user text-primary fs-2 mb-3"></i>
<h2 class="h5 fw-bold">En solitario y un solo cliente</h2>
<p class="text-secondary small mb-0">
Levanta un sitio pulido y seguro para un cliente sin cablear autenticación, roles
y un CMS desde cero. Todo viene incluido: te enfocas en su proyecto, no en el andamiaje.
</p>
</div>
</div>
</div>
<div class="col-md-5">
<div class="card h-100 border-0 border-top border-primary border-3 shadow-sm">
<div class="card-body text-center p-4">
<i class="fa-solid fa-city text-primary fs-2 mb-3"></i>
<h2 class="h5 fw-bold">Muchos clientes, a escala</h2>
<p class="text-secondary small mb-0">
Corre toda tu cartera sobre una sola plataforma: cada cliente es un inquilino aislado
con sus propios usuarios, roles, tema y contenido, todo desde un mismo admin. Sumas al
siguiente cliente en minutos.
</p>
</div>
</div>
</div>
</div>
</div>
</section>

<!-- Benefits grid -->
<section id="features" class="py-5 mt-4" style="background: var(--bs-tertiary-bg);">
<div class="container">
<div class="text-center mb-5">
<h2 class="fw-bold">Hecho para la forma en que las agencias trabajan de verdad</h2>
<p class="text-secondary mb-0">Inquilinos aislados, marca blanca, config en vivo: sin rehacer nada por cada cliente.</p>
</div>
<div class="row g-4">
<?php foreach ($benefits as $b): ?>
<div class="col-md-6 col-lg-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body">
<div class="d-inline-flex align-items-center justify-content-center rounded-3 bg-primary-subtle text-primary-emphasis mb-3" style="width:48px;height:48px;">
<i class="fa-solid <?= $b[0] ?> fs-5"></i>
</div>
<h3 class="h6 fw-semibold"><?= $this->escape($b[1]) ?></h3>
<p class="small text-secondary mb-0"><?= $this->escape($b[2]) ?></p>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</section>

<!-- CTA -->
<section class="py-5">
<div class="container">
<div class="card border-0 shadow-sm text-center">
<div class="card-body p-4 p-lg-5">
<h2 class="fw-bold mb-3">Convierte a tu próximo cliente en un inquilino</h2>
<p class="text-secondary mb-4">Un solo comando levanta una plataforma multiinquilino funcionando, con tema y lista para crecer.</p>
<div class="bg-body-tertiary border rounded-3 d-inline-block px-4 py-3 mb-4 text-start font-monospace small">
<span class="text-secondary">$</span> composer create-project webtigers/tiger my-agency<br>
<span class="text-secondary">$</span> cd my-agency &amp;&amp; vendor/bin/tiger install:admin
</div>
<div>
<a href="/signup" class="btn btn-primary btn-lg px-4"><i class="fa-solid fa-arrow-right-to-bracket me-2"></i>Crea tu cuenta</a>
</div>
</div>
</div>
</div>
</section>
74 changes: 74 additions & 0 deletions core/views/scripts/index/creators.es.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?php
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) 2026 WebTigers. Tiger™ and WebTigers™ are trademarks of WebTigers.
/**
* /creators — the plugin & theme creator story: build for Tiger, ship on your own terms.
* Rendered inside the PUMA public layout; Bootstrap + --bs-* tokens (restyles live with theme + skin).
*/
$this->title = 'Crea para Tiger — tu código, tus reglas | Tiger';

$points = [
['fa-scale-balanced', 'Es tuyo lo que construyes', 'Publica tus módulos y temas bajo los términos que tú elijas: cerrado, comercial o abierto. Tiger es BSD; lo que construyas encima sigue siendo tuyo.'],
['fa-sack-dollar', 'Bajo tus propias reglas', 'Ponle precio, licéncialo y dale soporte a tu manera: tu propiedad intelectual sigue siendo tuya.'],
['fa-store', 'Hecho para compartirse', 'Un camino de instalación limpio y de un clic —el mismo que usan los módulos oficiales— para que lo que crees llegue a cada sitio Tiger.'],
['fa-plug', 'Una base limpia para construir','Módulos, temas, bloques y una /api basada en mensajes: extiendes agregando, nunca parchando. Convenciones predecibles significan menos pegamento y más producto.'],
];
?>
<!-- Hero -->
<section class="py-5">
<div class="container text-center py-lg-5">
<span class="badge rounded-pill text-bg-primary-subtle text-primary-emphasis mb-3 px-3 py-2">
<i class="fa-solid fa-puzzle-piece me-1"></i> Para creadores de plugins y temas
</span>
<h1 class="display-4 fw-bold mb-3">Tu código. Tus reglas.</h1>
<p class="lead text-secondary mx-auto mb-4" style="max-width: 720px;">
Crea módulos y temas para Tiger y compártelos como tú quieras. Tu trabajo sigue siendo tuyo
&mdash; cómo lo licencias lo decides tú.
</p>
<div class="d-flex flex-wrap gap-2 justify-content-center">
<a href="/docs" class="btn btn-primary btn-lg px-4"><i class="fa-solid fa-book me-2"></i>Empieza a crear</a>
<a href="/developers" class="btn btn-outline-secondary btn-lg px-4">La historia para desarrolladores</a>
</div>
</div>
</section>

<!-- Points -->
<section class="pb-2">
<div class="container">
<div class="row g-4">
<?php foreach ($points as $p): ?>
<div class="col-md-6">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body d-flex gap-3 p-4">
<div class="flex-shrink-0 d-inline-flex align-items-center justify-content-center rounded-3 bg-primary-subtle text-primary-emphasis" style="width:48px;height:48px;">
<i class="fa-solid <?= $p[0] ?> fs-5"></i>
</div>
<div>
<h2 class="h6 fw-semibold mb-1"><?= $this->escape($p[1]) ?></h2>
<p class="small text-secondary mb-0"><?= $this->escape($p[2]) ?></p>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</section>

<!-- CTA -->
<section class="py-5">
<div class="container">
<div class="card border-0 shadow-sm text-center">
<div class="card-body p-4 p-lg-5">
<h2 class="fw-bold mb-3">Constrúyelo una vez. Compártelo a tu manera.</h2>
<p class="text-secondary mb-4">Genera el esqueleto de un módulo en segundos y compártelo cuando estés listo.</p>
<div class="bg-body-tertiary border rounded-3 d-inline-block px-4 py-3 mb-4 text-start font-monospace small">
<span class="text-secondary">$</span> vendor/bin/tiger make:module my-plugin
</div>
<div>
<a href="/docs" class="btn btn-primary btn-lg px-4"><i class="fa-solid fa-book me-2"></i>Lee la documentación</a>
</div>
</div>
</div>
</div>
</section>
131 changes: 131 additions & 0 deletions core/views/scripts/index/developers.es.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
<?php
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) 2026 WebTigers. Tiger™ and WebTigers™ are trademarks of WebTigers.
/**
* /developers — the open-source / builder story: free, BSD-licensed, extend via modules. Rendered
* inside the PUMA public layout; Bootstrap + --bs-* tokens (restyles live with theme + skin).
*/
$this->title = 'Desarrolladores y código abierto — libre, con licencia BSD, tuyo para extender | Tiger';

$build = [
['fa-cubes', 'Todo es un módulo', 'Suelta una carpeta en application/modules y se conecta solo: controladores, un servicio /api, modelos, migraciones, vistas, ACL, rutas. Sin tocar el core, nunca.'],
['fa-arrows-to-dot', 'Un solo /api por mensajes', 'Nada de zoológicos REST-por-URL. El mensaje nombra un servicio + método; agregas un método y ya está en vivo. El patrón hasta se describe a sí mismo como OpenAPI.'],
['fa-terminal', 'Una CLI de verdad', 'make:module te arma una función viva; migrate, install:admin y la rotación de crypto/secretos vienen incluidos. Sin magia oculta que tengas que descifrar.'],
['fa-book-open', 'La documentación va en el código', 'Los docblocks generan la referencia de la API; un AGENTS.md documenta las convenciones. El código está escrito para leerse: por humanos y por IAs.'],
];
?>
<!-- Hero -->
<section class="py-5">
<div class="container text-center py-lg-5">
<span class="badge rounded-pill text-bg-primary-subtle text-primary-emphasis mb-3 px-3 py-2">
<i class="fa-solid fa-scale-balanced me-1"></i> BSD-3-Clause · código abierto
</span>
<h1 class="display-4 fw-bold mb-3">Libre, abierto y tuyo para extender.</h1>
<p class="lead text-secondary mx-auto mb-4" style="max-width: 720px;">
Tiger tiene licencia BSD y está construido sobre TigerZF (ZendFramework 1, modernizado para PHP 8.1&ndash;8.5).
Sin cuota de licencia, sin ataduras, sin cajas negras: clónalo, extiéndelo con módulos y adueñate de tu stack
de arriba a abajo.
</p>
<div class="d-flex flex-wrap gap-2 justify-content-center">
<a href="https://github.com/WebTigers/Tiger" class="btn btn-primary btn-lg px-4" target="_blank" rel="noopener">
<i class="fa-brands fa-github me-2"></i>Danos una estrella en GitHub
</a>
<a href="/docs" class="btn btn-outline-secondary btn-lg px-4">Lee la documentación</a>
</div>
</div>
</section>

<!-- Build on it -->
<section class="pb-2">
<div class="container">
<div class="text-center mb-5">
<h2 class="fw-bold">Hecho para construir sobre él</h2>
<p class="text-secondary mx-auto mb-0" style="max-width:640px;">
Extiende <em>agregando</em>, nunca parcheando. Tu código vive fuera del framework, así que
<code>composer update</code> jamás puede pisártelo.
</p>
</div>
<div class="row g-4">
<?php foreach ($build as $b): ?>
<div class="col-md-6">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body d-flex gap-3 p-4">
<div class="flex-shrink-0 d-inline-flex align-items-center justify-content-center rounded-3 bg-primary-subtle text-primary-emphasis" style="width:48px;height:48px;">
<i class="fa-solid <?= $b[0] ?> fs-5"></i>
</div>
<div>
<h3 class="h6 fw-semibold mb-1"><?= $b[1] ?></h3>
<p class="small text-secondary mb-0"><?= $b[2] ?></p>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</section>

<!-- Own your stack -->
<section class="py-5 mt-4" style="background: var(--bs-tertiary-bg);">
<div class="container">
<div class="row g-4">
<div class="col-md-4">
<div class="card h-100 border-0 border-top border-primary border-3 shadow-sm">
<div class="card-body text-center p-4">
<i class="fa-solid fa-scale-balanced text-primary fs-2 mb-3"></i>
<h3 class="h5 fw-bold">Licencia permisiva</h3>
<p class="text-secondary small mb-0">
BSD-3-Clause: crea productos comerciales sobre él, publica módulos de código cerrado, sin ataduras
copyleft. El framework es una dependencia en <code>vendor/</code>, nunca se copia dentro de tu app.
</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 border-0 border-top border-primary border-3 shadow-sm">
<div class="card-body text-center p-4">
<i class="fa-solid fa-server text-primary fs-2 mb-3"></i>
<h3 class="h5 fw-bold">Hospédalo donde quieras</h3>
<p class="text-secondary small mb-0">
cPanel, un VPS de 5 dólares o una flota detrás de un balanceador de carga: cero paso de compilación,
sin nube de proveedor obligatoria. Tus datos y tu despliegue siguen siendo tuyos.
</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 border-0 border-top border-primary border-3 shadow-sm">
<div class="card-body text-center p-4">
<i class="fa-solid fa-code-branch text-primary fs-2 mb-3"></i>
<h3 class="h5 fw-bold">Contribuye y comparte</h3>
<p class="text-secondary small mb-0">
Abre issues y PRs en GitHub, o publica tus propios módulos y temas: el mismo registro
y el Administrador de Módulos de un clic desde el que instala todo el mundo.
</p>
</div>
</div>
</div>
</div>
</div>
</section>

<!-- CTA -->
<section class="py-5">
<div class="container">
<div class="card border-0 shadow-sm text-center">
<div class="card-body p-4 p-lg-5">
<h2 class="fw-bold mb-3">Clónalo y hazlo tuyo</h2>
<p class="text-secondary mb-4">Un solo comando te arma una app corriendo que controlas por completo; luego extiéndela con un módulo.</p>
<div class="bg-body-tertiary border rounded-3 d-inline-block px-4 py-3 mb-4 text-start font-monospace small">
<span class="text-secondary">$</span> composer create-project webtigers/tiger my-app<br>
<span class="text-secondary">$</span> cd my-app &amp;&amp; vendor/bin/tiger make:module hello
</div>
<div>
<a href="https://github.com/WebTigers/Tiger" class="btn btn-primary btn-lg px-4" target="_blank" rel="noopener">
<i class="fa-brands fa-github me-2"></i>Míralo en GitHub
</a>
</div>
</div>
</div>
</div>
</section>
Loading
Loading