Ir al contenido

Stack técnico

SmartTab Organizer es una extensión de navegador multinavegador (Chromium MV3 y Firefox MV2), escrita íntegramente en TypeScript. Ninguna parte de la aplicación depende de un servidor o de un servicio de terceros: todo el código se ejecuta en el navegador.

CapaTecnología
Build y empaquetadoWXT (framework de extensiones multi-objetivo)
UIReact 19, Radix Themes y Radix Primitives
Tipos y validaciónTypeScript estricto, Zod para los esquemas en runtime
Tests unitariosVitest y Testing Library
Tests E2EPlaywright (Chrome MV3)
StorybookStorybook 8 con addon-a11y y test-runner usando axe-core
DocumentaciónAstro Starlight (este sitio)
Lint y formatoESLint, Prettier
NavegadorManifestEstado
ChromeMV3Objetivo principal
Edge, Brave, Arc, Opera (basados en Chromium)MV3Compatible (mismo artefacto que Chrome)
VivaldiMV3Parcial: la agrupación nativa no es compatible. La deduplicación y las sesiones funcionan.
FirefoxMV2Compatible (objetivos pnpm build:firefox, pnpm zip:firefox)

Las API del navegador se acceden mediante wxt/browser, que normaliza las diferencias entre chrome.* y browser.*. La extensión usa un subconjunto presente en ambos: browser.tabs, browser.tabGroups, browser.storage, browser.action / browser.browserAction, browser.notifications, browser.scripting.

BackendContenido
browser.storage.localReglas de dominio, ajustes, sesiones (pinned, active, archived), espacios de trabajo, categorías, preferencias de UI (estado expandido, etc.)
browser.storage.sessionMapa perfil-ventana, borradores de sesión, guarda anti-reentrada de edición

Sin cookies. Sin solicitudes de red más allá de las que hace el propio navegador.

Consulta Arquitectura para una guía sobre los entry points, los módulos background y los hooks centrales.

El repositorio recibe contribuciones. Las convenciones del proyecto (logger, accesibilidad, i18n, Storybook, estilo de escritura) se describen en CLAUDE.md. Las pautas para añadir un pack o un preset viven en src/data/packs/README.md y public/data/presets.json.