From bf26c0f54c1ab545112c74c1083bab1217468ffe Mon Sep 17 00:00:00 2001 From: Labstream Date: Wed, 14 Oct 2026 22:06:32 -0500 Subject: [PATCH] Catalogo de apps de Labstream, licencia y logo --- LICENCIA-ES.md | 40 +++++++++++++++++++++++++++++ LICENSE | 21 +++++++++++++++ README.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ logo.png | Bin 0 -> 15988 bytes 4 files changed, 129 insertions(+) create mode 100644 LICENCIA-ES.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 logo.png diff --git a/LICENCIA-ES.md b/LICENCIA-ES.md new file mode 100644 index 0000000..3d97b0a --- /dev/null +++ b/LICENCIA-ES.md @@ -0,0 +1,40 @@ +# Licencia de las apps públicas de Labstream (resumen en español) + +Las apps marcadas como **públicas** en el catálogo se distribuyen bajo la **Licencia MIT**. +El texto legal que vale es el de `LICENSE` (en inglés, como es habitual en esta licencia); +esto es una explicación. + +## Qué puedes hacer + +- **Descargarlas, instalarlas y usarlas** gratis, para lo que quieras, también en trabajos + comerciales. +- **Copiarlas, modificarlas y redistribuirlas**, enteras o en parte, con o sin cambios. +- Incluirlas en otros programas, incluso de pago. + +## Única condición + +- Conservar el aviso de copyright y el texto de la licencia (`LICENSE`) en cualquier copia o + parte sustancial del programa. + +## Sin garantía + +Los programas se entregan **tal cual**, sin garantía de ningún tipo. Labstream S.A.S. no +responde por daños derivados de su uso. + +## Lo que la licencia no cubre + +- La **marca Labstream** y su logotipo: puedes usar el código, no presentar otro producto como + si fuera de Labstream. +- Las **apps privadas** y las **apps de clientes**: tienen las condiciones del contrato de cada + proyecto. +- Los **componentes de terceros** que cada app incluye: tienen su propia licencia, listada en + el `TERCEROS.md` de cada repositorio. + +## Datos personales + +Las apps de escritorio públicas no envían datos a internet ni a Labstream. Las apps web +guardan los datos en servidores de Labstream en Colombia y se rigen por la política de +tratamiento de datos personales de Labstream S.A.S. (Ley 1581 de 2012 y Decreto 1377 de 2013). +Consultas: hola@labstreamsas.com. + +Labstream S.A.S. · NIT 900.665.024-5 · Bogotá, Colombia diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7203e7f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Labstream S.A.S. (NIT 900.665.024-5), Bogotá, Colombia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..6281cba --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +

Labstream

+ +# Apps de Labstream + +Este es el servidor de código de **Labstream S.A.S.** (Bogotá): aquí están todas las apps que +hacemos, con su código, sus instaladores y sus condiciones de uso. Funciona como GitHub, pero +en nuestro NAS: `https://git.labstreamsas.com`. + +- Para **descargar** una app de escritorio: entra al repositorio y mira la pestaña **Releases** + (versiones): ahí está el instalador o el ejecutable. +- Para **usar** una app web: el enlace está en la tabla. +- Para **ver o cambiar el código**: clona el repositorio (`git clone https://git.labstreamsas.com/Labstream/.git`). + Los repositorios públicos no piden cuenta; los privados sí (la crea el administrador). + +## Catálogo + +| App | Esto hace | Dónde corre | Cómo se consigue | Repositorio | +|---|---|---|---|---| +| **Labmagic** | Controla una Blackmagic Pocket Cinema Camera 4K por Bluetooth: foco, autofoco, iris, ISO, obturador, balance de blancos, grabación, formato, ayudas por HDMI, audio, color, pizarra. Se acopla como panel dentro de OBS. | Windows 10/11 con Bluetooth | `Labmagic.exe` en Releases (o con Python 3.12: `py app.py`) | [labmagic](labmagic) · público | +| **Organizador Labstream** | Inventaría, mapea, ordena y optimiza el material de los clientes repartido por los discos del estudio. | Windows (Python, sin dependencias) | Releases o `arranque.py` | [labstream-organizador](labstream-organizador) · público | +| **Labstream OS** | Sistema de gestión de la productora: clientes, proyectos, entregables, tareas, archivos, revisiones, aprobaciones, cotizaciones y propuestas. | Web en el NAS: https://os.labstreamsas.com | Con cuenta de Labstream (Authentik) | [labstream-os](labstream-os) · privado | +| **Labstream OS Escritorio** | Cliente de escritorio de Labstream OS con pestañas (Tauri 2). | Windows y macOS | Instalador en Releases | [labstream-desktop](labstream-desktop) · público | +| **Labstream Mail** | Webmail multi-inquilino sobre Synology MailPlus: correo, agenda y contactos con la marca de cada cliente. | Web en el NAS: https://correo.labstreamsas.com | Con cuenta de correo | [labstream-mail](labstream-mail) · privado | +| **Sitio Labstream** | Web pública https://labstreamsas.com con su CMS. | Web en el NAS | — | [labstream-site](labstream-site) · privado | +| **Studio Propuestas** | Editor y visor de propuestas comerciales (https://propuestas.labstreamsas.com). | Web en el NAS (PHP) | — | aún sin repositorio: vive en `/volume1/web/propuestas` del NAS | +| **Skincenter Consola** | Web del consultorio Skincenter: WhatsApp con bot, pacientes, citas, servicios, visor 3D. | Web en el NAS: https://app.skincentercol.com | Cuenta del consultorio | [skincenter-consola](skincenter-consola) · privado | +| **Skincenter App** | App local del consultorio: pacientes, visitas, fotos clínicas y análisis de apoyo con IA. | Escritorio | — | [dermascan3d](dermascan3d) · privado | +| **El Camiverso Pro** | Gestión de trabajo (espacios, carpetas, listas, tareas) con RACI para elcamiverso.com. | Web | — | [camiverso-pro](camiverso-pro) · privado | +| **Legal Core web** | Sitio de Legal Core (consultoría legal, Barranquilla). | Web | — | [legalcore-web](legalcore-web) · privado | + +Los repositorios **privados** son de clientes o contienen configuración interna: se ven solo +con cuenta. Un administrador puede hacer público cualquiera desde Ajustes del repositorio. + +## Condiciones de uso + +- **Apps públicas** (Labmagic, Organizador, OS Escritorio): licencia **MIT**. Se pueden + descargar, usar, copiar y modificar gratis, también con fines comerciales, conservando el + aviso de copyright. Sin garantía. Resumen en español en [LICENCIA-ES.md](LICENCIA-ES.md); + texto legal en [LICENSE](LICENSE). +- **Apps de clientes** (Skincenter, Camiverso, Legal Core): el código es de Labstream o del + cliente según el contrato de cada proyecto; están aquí para mantenerlas, no para + redistribuirlas. +- Marcas: **Labstream** y su logotipo son de Labstream S.A.S. Las marcas de terceros que se + mencionan (Blackmagic, Synology, OBS, Metabones…) son de sus dueños. +- Cada app lista sus componentes de terceros y sus licencias en un archivo `TERCEROS.md`. +- Ninguna app pública envía datos a Labstream. Las apps web guardan los datos en el NAS de + Labstream, en Colombia, según la política de tratamiento de datos de la empresa + (Ley 1581 de 2012). + +## Descargar y ejecutar en Windows + +1. Entra al repositorio → **Releases** → descarga el `.exe` o el instalador. +2. Windows puede avisar «Windows protegió tu PC» porque el archivo no lleva firma de pago: + **Más información → Ejecutar de todas formas**. +3. Si el equipo tiene **Smart App Control** (Windows 11), los .exe sin firma no abren: cada + app explica en su README cómo arrancarla con Python o Node. + +## Para el equipo + +- Cuentas: las crea el administrador en **Administración del sitio → Cuentas de usuario** + (el registro libre está apagado). +- Clonar por HTTPS con usuario y contraseña (o un token de **Ajustes → Aplicaciones**). + Por SSH: `git@git.labstreamsas.com:2222/Labstream/.git` dentro de la red o por + ZeroTier. +- Copias de seguridad: todo Gitea está en `/volume5/contenedores/gitea` del NAS; copiar esa + carpeta es copiar el servidor entero. + +Labstream S.A.S. · NIT 900.665.024-5 · hola@labstreamsas.com diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f9dfc1620035432dad38f89301b78f4ee5dc26 GIT binary patch literal 15988 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 literal 0 HcmV?d00001