📘 AdminPH · Manual 📖 Diccionario PH 🏠 Volver al sistema

Manual de usuario paso a paso

Cómo preparar, realizar y cerrar una asamblea de propiedad horizontal con votación por QR

1Cómo funciona el sistema

AdminPH lleva la asamblea en cuatro fases: 1) Servidor y Asamblea, 2) Asistencia y QR, 3) Votaciones y 4) Cierre y acta. Cada unidad recibe un código QR; el propietario lo escanea con su celular y vota. Los votos llegan al servidor y se guardan en la base de datos PostgreSQL.

📱 Celularesescanean el QR y votan
☁️ Túnel Cloudflaredirección pública https
💻 Computador de la administraciónbackend + página
🗄️ PostgreSQLguarda unidades, asistencia y votos
Idea claveEl computador donde corre el servidor debe permanecer encendido, conectado a internet y sin suspenderse mientras dura la asamblea.

Si algo no aparece con este nombre exacto en su pantalla, busque el botón equivalente: los textos pueden variar levemente entre versiones.

2Preparar el servidor (antes de todo)

Haga esto el día anterior y repítalo (solo el arranque) cada vez que encienda el equipo.

  1. Encienda PostgreSQL (debe estar corriendo el servicio).
  2. Abra una terminal en la carpeta del backend y ejecute npm run start:dev. Espere el mensaje de que el servidor está escuchando y de que sirve el frontend.
  3. Abra en el navegador del computador http://localhost:3000/ (no use la dirección de Live Server para la asamblea real).
  4. En otra terminal inicie el túnel:
    cloudflared tunnel --url http://localhost:3000
    Copie la dirección que termina en trycloudflare.com.
  5. Pruebe esa dirección desde un celular con datos móviles (sin wifi): debe abrir la página.
La dirección del túnel cambiaSi cierra la ventana de cloudflared o reinicia el computador, la dirección nueva será distinta y los QR ya impresos dejarán de funcionar. Por eso: no cierre esa ventana y genere e imprima los QR con la dirección definitiva (paso 6).
SeguridadAntes de publicar el sistema cambie las contraseñas de los usuarios iniciales y las claves de la base de datos. Las instrucciones están en el archivo LEEME_V3_ASAMBLEA_REAL.md del paquete. No comparta contraseñas por chat ni en pantallazos.

3Ingresar y roles

Ingrese con su usuario y contraseña. El sistema valida contra el servidor: si no puede conectarse, verá un mensaje en la pantalla de acceso.

RolQué puede hacer
SuperadministradorTodo: usuarios, configuración, servidor y copias de seguridad.
AdministradorConfigura la copropiedad, crea y cierra asambleas, gestiona votaciones.
OperadorRegistra asistencia, entrega QR y opera las votaciones el día de la asamblea.
UsuarioConsulta información y resultados según permisos.
RecomendaciónDé el rol de Operador a quien atiende la mesa de registro; no comparta la cuenta del administrador.

4Configurar la copropiedad

Se hace una sola vez y sirve para todas las asambleas futuras.

4.1 Niveles jerárquicos

Defina cómo se organiza el conjunto: por ejemplo Torre → Piso → Apartamento, o Manzana → Casa. Cada nivel tiene un prefijo.

4.2 Formato de unidad

El formato usa {NIVEL}{UNIDAD}: el prefijo del nivel más el número de la unidad.

FormatoNivelUnidadResultado
{NIVEL}{UNIDAD}101, 02, 03101, 102, 103
T{NIVEL}-{UNIDAD}205T2-05

4.3 Generar y revisar unidades

  1. Genere las unidades con la herramienta de generación (101, 102… por nivel) o cárguelas desde Excel.
  2. Complete propietario, documento y coeficiente de cada unidad.
  3. Verifique que la suma de coeficientes sea 100%. Un error aquí altera quórum y votaciones por coeficiente.
  4. Marque las unidades en mora solo con certificación del administrador (ver Reglas legales).
Revise dos vecesCompare el listado con el reglamento y con la última acta. Los errores de coeficientes son la causa más común de discusiones en la asamblea.

5Fase 1 · Servidor y Asamblea antes del día

Aquí se conecta la página con el servidor y se crea la asamblea. Siga el orden de los bloques:

  1. Conectar al servidor. Debe aparecer “Servidor conectado”. Si falla, vaya a Solución de problemas.
  2. Enviar las unidades al servidor. Así quedan guardadas en PostgreSQL. Espere la confirmación.
  3. Crear la asamblea: nombre, fecha, tipo (ordinaria o extraordinaria) y orden del día.
  4. Dirección pública para los QR. Pegue la dirección https del túnel y guárdela. Los QR se generarán con esa dirección. Nunca imprima QR con localhost o con una IP local: no abren desde otros celulares.
  5. Copia de seguridad en el servidor. Haga una copia ahora y otra antes de abrir cada votación. Si cambia de navegador o de computador, restaure desde aquí.
  6. Iniciar la asamblea cuando comience la sesión.
Monitor en pantallaEl panel de votación en vivo (panel-votacion.html) sirve para proyectar resultados; es solo de lectura y no permite administrar.
Un navegador, una fuenteLos datos locales dependen del navegador. Trabaje siempre en el mismo navegador y en la misma dirección (http://localhost:3000/); si cambia, use la restauración de copia.

6Fase 2 · Asistencia y QR día de la asamblea

  1. Registre la llegada de cada propietario en la mesa de registro, unidad por unidad.
  2. Si asiste un apoderado, registre su nombre y documento y verifique el poder escrito.
  3. Entregue o muestre el QR de la unidad. Hay un QR activo por unidad en cada asamblea; sirve para todas las votaciones de esa asamblea.
  4. Confirme el quórum en pantalla antes de comenzar. Con más de la mitad de los coeficientes presentes se puede sesionar (ver Reglas legales).
  5. Si alguien pierde el QR, genere uno nuevo de la unidad: el anterior deja de servir.
Un voto por unidadCada unidad vota una sola vez por votación, aunque haya varios propietarios o el QR se comparta.

7Fase 3 · Votaciones día de la asamblea

7.1 Tipos de votación

ModalidadCuándo usarlaCómo cuenta
NominalElegir personas (presidente, consejo, comité, revisor) o cuando se requiere saber quién votó qué.Un voto por unidad.
Por coeficientePresupuesto, cuotas, reformas y decisiones que dependen del peso de cada unidad.Suma el coeficiente de cada unidad que vota.
A mano alzadaTemas simples o cuando falla el QR.Se cuenta en sala; use el conteo por coeficiente si la decisión lo exige.

7.2 Paso a paso de una votación

  1. Cree la votación: enunciado claro, opciones (Sí/No o candidatos) y modalidad.
  2. Para elección de personas, los candidatos se toman de los asistentes.
  3. Verifique el enunciado con el presidente de la asamblea.
  4. Abra la votación. Los propietarios escanean el QR y votan desde el celular.
  5. Observe la participación en el monitor. Cuando terminen o venza el tiempo, cierre la votación.
  6. Lea el resultado en voz alta y confirme con el presidente.

7.2b Cronómetro

  • De cada votación: el tiempo se fija en «Tiempo de votación (minutos)». Al quedar 30 segundos, el reloj parpadea y suena un aviso; al terminar suena un tono final y la votación se cierra sola. «Abrir reloj en pantalla» lo proyecta en otra ventana.
  • De intervenciones: el botón ⏱️ Cronómetro de intervención (arriba en la Fase 3) abre una ventana aparte. Elija 1, 2, 3 o 5 minutos, o escriba minutos y segundos; escoja a cuántos segundos avisar (10 a 60), con cambio de color a ámbar y sonido; al terminar se pone rojo y suena. Atajos: Espacio inicia/pausa, R reinicia, F pantalla completa, C muestra u oculta los controles. Puede marcar «Cerrar la ventana al terminar».

7.3 Reglas de seguridad de las votaciones

  • Solo una votación abierta a la vez. Si intenta abrir otra, el sistema se lo impide y le dice cuál sigue abierta. El servidor también lo rechaza.
  • Mientras haya una votación abierta, arriba de la Fase 3 aparece un aviso verde con el nombre, el tiempo restante y los botones Ir a la votación y Cerrar ahora. No importa en qué punto esté: siempre podrá cerrarla.
  • Al vencer el tiempo, la votación se cierra sola. Una votación cerrada no acepta más votos, aunque el propietario tenga la pantalla del celular abierta.
  • El celular no necesita volver a escanear el QR: con la pantalla abierta, cada votación nueva aparece sola.

7.4 Votaciones adicionales y puntos nuevos

  • Votaciones adicionales (punto 16): cree tantas como necesite; cada una aparece con su estado (sin abrir, abierta, cerrada) y queda en el acta.
  • Proposiciones y varios: registran la unidad, el solicitante y el detalle; pasan al acta.
  • ➕ Agregar punto: abre un formulario donde elige si el punto tiene votación (modalidad y opciones) y si permite cargar archivos. Todo punto admite notas y constancias para el acta. El punto Cierre de la asamblea siempre queda de último.
  • Para asambleas cortas, desmarque «Activo» o elimine los puntos que no se usan y agregue los propios.
El cierre es definitivoUna votación cerrada no se reabre. Si hubo un error de enunciado, archive esa votación y cree una nueva, dejando constancia en el acta.
Mayoría calificadaDecisiones del art. 46 de la Ley 675 (reforma de reglamento, cuotas extraordinarias altas, uso exclusivo de bienes comunes, etc.) requieren 70% de los coeficientes del conjunto, no de los presentes. Use la modalidad por coeficiente y no las tome en reunión no presencial.

8Fase 4 · Cierre y acta

  1. Verifique que todas las votaciones estén cerradas.
  2. Revise asistencia, quórum y resultados; el acta debe indicar tipo de reunión, convocatoria, orden del día, asistentes con unidad y coeficiente, y los votos emitidos (Ley 675, art. 47).
  3. Haga una copia de seguridad final en el servidor.
  4. Cierre la asamblea. Se desactivan los QR de esa asamblea.
  5. El presidente y el secretario firman el acta; el administrador debe publicarla en la sede dentro de los 20 días hábiles siguientes.
  6. Al cerrar, la asamblea queda guardada en 📚 Ver asambleas cerradas (Fase 1 → Servidor y Asamblea, punto 7, o en la pantalla de cierre) para consultarla en modo lectura.
  7. Para una nueva asamblea, cree una nueva: los QR se generan otra vez.

9Reglas legales clave

TemaRegla (Ley 675 de 2001)
QuórumMás de la mitad de los coeficientes (art. 45).
Decisión ordinariaMitad más uno de los coeficientes (art. 45).
Decisiones calificadas70% de los coeficientes (art. 46).
Segunda convocatoriaTercer día hábil siguiente, 8:00 p. m., con un número plural de propietarios (art. 41).
Reunión no presencialSolo si todos participan y se puede probar; con fe del revisor fiscal (arts. 42–44).
ActaFirmada por presidente y secretario; publicada en 20 días hábiles (art. 47).
SancionesCon debido proceso y proporcionalidad (arts. 59–62).

Consulte el Diccionario jurídico para más detalle, sentencias de tutela en propiedad horizontal y normas relacionadas. Confirme siempre con su reglamento y con su abogado.

10Lista del día de la asamblea

Marque cada punto; el avance se guarda en este navegador.

La noche anterior

Una hora antes

Durante

Al terminar

11Solución de problemas

“Failed to fetch” o “No se pudo conectar al servidor”
  • Confirme que el backend está corriendo (npm run start:dev) y que PostgreSQL está encendido.
  • Abra el sistema desde http://localhost:3000/.
  • Recargue con Ctrl+F5.
El QR abre en mi computador pero no en el celular

Probablemente el QR usa localhost o una IP local. Guarde la dirección pública del túnel en la Fase 1 y genere de nuevo los QR. Si el celular usa el wifi del edificio y no abre, la red puede aislar los dispositivos entre sí; pruebe con datos móviles o con otro punto de acceso.

Cambió la dirección del túnel

Cloudflare genera una dirección nueva cada vez que reinicia el túnel. Guarde la nueva en la Fase 1 y vuelva a mostrar los QR. Los QR impresos con la dirección anterior dejan de servir; por eso no debe reiniciar el túnel durante la asamblea.

Al abrir en otro navegador los datos aparecen vacíos

Cada navegador y cada dirección guardan sus propios datos. Use “Restaurar copia” de la Fase 1 para traer la copia del servidor. Si el sistema advierte un conflicto, no sobrescriba sin revisar cuál copia es la más reciente.

Un propietario dice que no puede votar
  • Verifique que esté registrado como asistente y que su votación esté abierta.
  • Recuerde que solo hay un voto por unidad y votación.
  • Si el QR falla, use la votación a mano alzada y registre el resultado.
  • Confirme que la unidad no esté marcada en mora.
El monitor no muestra resultados

Confirme que la votación está abierta y que hay votos. Espere unos segundos: el sistema sincroniza automáticamente. Si persiste, recargue el monitor.

Se cerró el túnel o se apagó el computador durante la asamblea

Los votos ya emitidos están en la base de datos. Reinicie PostgreSQL y el backend, abra http://localhost:3000/ e inicie de nuevo el túnel. Si la dirección cambió, continúe con mano alzada mientras se regeneran los QR.

GGuía de administración · Cómo usar esta guía

Esta guía explica, paso a paso, cómo operar AdminPH hoy, cuando el sistema corre en el computador de la administración (modo «localhost») y se abre al público mediante un túnel de Cloudflare. Está escrita para que cualquier persona, sin conocimientos de programación, pueda encender el sistema, realizar una asamblea, hacer copias de seguridad, recuperar datos y dejar la plataforma limpia.

Cuando el sistema se suba a un hosting en internetVarios pasos cambiarán (ya no habrá que encender el computador ni el túnel, y las copias de seguridad serán distintas). Esa será una guía nueva. Los capítulos de uso de la página (asistencia, votaciones, QR, actas) seguirán siendo válidos.

¿Qué quiero hacer? Use esta tabla para ir directo al capítulo:

Quiero…Capítulo
Encender el sistema el día de la asamblea2
Obtener y guardar la dirección pública (túnel)3
Cambiar contraseñas, crear un operador, asignarlo a una asamblea4
Preparar y realizar una asamblea5
Enviar los QR por correo o WhatsApp6
Ver lo mismo en un segundo computador7
Hacer una copia de seguridad y recuperarla8
Borrar asambleas de prueba y dejar todo limpio9
Actualizar el sistema con un parche o instalarlo en otro PC10
Algo falla (mensajes de error)11
Listas de chequeo para imprimir12

G1Guía 1 · Qué es el sistema y qué piezas tiene

AdminPH funciona con cuatro piezas que deben estar encendidas al mismo tiempo en el computador principal:

PiezaPara qué sirveCómo se sabe que está encendida
PostgreSQL (base de datos)Guarda unidades, asistencia, votos y actas.Es un servicio de Windows que arranca solo con el computador.
Backend (servidor)Recibe los votos, valida los QR y entrega la página.Ventana negra «AdminPH – SERVIDOR». Debe decir que escucha en el puerto 3000.
Página (lo que se ve)La pantalla de administración y la de votación en el celular.Se abre en http://localhost:3000/
Túnel de CloudflarePermite que los celulares entren desde internet.Ventana negra «AdminPH – TUNEL» con una dirección que termina en trycloudflare.com.

Dónde están los archivos

  • Backend (servidor): C:\Users\jccas\Desktop\ADMIN PH\backend\backend-adminph
  • Página (frontend): C:\Users\jccas\Desktop\ADMIN PH\frontend\AdminPH
  • Archivo de claves y ajustes del servidor: .env (dentro de la carpeta del backend). Es secreto: no se envía por chat ni correo.
  • Arranque con un clic: INICIAR_ADMINPH.bat.

Programas que deben estar instalados

  • PostgreSQL 18 con pgAdmin (base de datos y su administrador visual).
  • Node.js (para ejecutar el servidor).
  • cloudflared (el túnel de Cloudflare).
Regla de oroEl computador principal debe permanecer encendido, enchufado, conectado a internet y sin suspenderse durante toda la asamblea. En Windows: Configuración → Sistema → Energía (o «Inicio/apagado y suspensión») → Suspender: Nunca.

G2Guía 2 · Encender el sistema (INICIAR_ADMINPH.bat)

Se hace cada vez que se enciende el computador o se necesita el sistema. Si es el día de la asamblea, hágalo una hora antes.

  1. Verifique que PostgreSQL esté encendido. Normalmente lo está solo. Si no, abra «Servicios» de Windows (tecla Windows, escriba services.msc), busque el servicio de PostgreSQL (se llama parecido a postgresql-x64-18) y pulse Iniciar.
  2. Haga doble clic en INICIAR_ADMINPH.bat.
  3. Se abrirán dos ventanas negras: «AdminPH – SERVIDOR (no cerrar)» y, a los 15 segundos, «AdminPH – TUNEL (no cerrar)». No las cierre mientras dure la asamblea. Puede minimizarlas.
  4. También se abre el navegador en http://localhost:3000/. Aparece la pantalla de ingreso.
  5. En la ventana del TÚNEL busque una línea con una dirección como https://algo-raro-palabras.trycloudflare.com. Esa es la dirección pública (Guía 3).
  6. Ingrese con su usuario y contraseña.
Comprobación rápidaEn el navegador del computador escriba http://localhost:3000/api/docs. Si carga una página de documentación, el servidor está sano.

Apagar el sistema

  1. Termine la asamblea, haga la copia de seguridad final (Guía 8) y cierre la asamblea en la página.
  2. Cierre las dos ventanas negras (o pulse Ctrl+C en cada una).
  3. Ya puede apagar el computador. No se pierde nada: los datos quedan en PostgreSQL.

G3Guía 3 · El túnel de Cloudflare y la dirección pública

Los celulares no pueden entrar a «localhost» (eso es solo su computador). Por eso se usa el túnel: genera una dirección pública https://…trycloudflare.com que lleva a su computador.

  1. Copie la dirección que aparece en la ventana del TÚNEL (termina en trycloudflare.com).
  2. En la página: Fase 1 → 🔗 Servidor y Asamblea → punto 4 «Dirección pública para los QR». Péguela y pulse Guardar.
  3. Pruebe desde un celular con datos móviles (sin wifi): debe abrir la pantalla de la página.
  4. Solo después genere, envíe o imprima los QR.
La dirección cambia cada vez que se reinicia el túnelSi cierra la ventana del TÚNEL, reinicia el computador o se va el internet por mucho rato, la dirección será otra y los QR ya enviados o impresos dejan de abrir. Durante la asamblea no cierre esa ventana. Si ocurre, siga el Guía 11 («Cambió la dirección»).
Para que la dirección sea fijaSe necesita un dominio propio y un túnel «con nombre» (o el hosting definitivo). Eso se hará después de la asamblea.

G4Guía 4 · Usuarios, contraseñas y operadores

Quien entra a la página lo hace con usuarios guardados en la base de datos. De fábrica existen superadmin, admin, operador y propietario101, todos con una clave de fábrica que debe cambiarse antes de usar el sistema de verdad.

RolQué puede hacer
SuperadministradorTodo: configuración, servidor, copias de seguridad y todas las asambleas.
AdministradorPrepara y cierra asambleas, vota, envía QR a todas las unidades o solo a asistentes.
OperadorOpera el día de la asamblea: asistencia, QR de presentes, votaciones. Solo ve las asambleas a las que está asignado. Envía QR únicamente a unidades presentes.
UsuarioConsulta información y resultados.

Cómo ejecutar instrucciones SQL (se usará varias veces)

  1. Abra pgAdmin (le pedirá la clave de PostgreSQL).
  2. En el panel izquierdo: Servers → PostgreSQL 18 → Databases → clic derecho sobre la base de AdminPH (se llama adminph) → Query Tool.
  3. Pegue el texto SQL en la ventana grande y pulse el botón ▶ (Ejecutar). Abajo aparece «Query returned successfully».
  4. Si sale un error, no se alarme: copie el mensaje completo y consulte el Guía 11. Después de un error, abra una ventana nueva de Query Tool.

Cambiar la contraseña de un usuario

Cambie superadmin por el usuario que quiera y NuevaClave#2026 por la clave nueva (mínimo 10 caracteres, con letras, números y símbolos).

UPDATE users
SET password_hash = crypt('NuevaClave#2026', gen_salt('bf'))
WHERE username = 'superadmin';

Repita con admin, operador y propietario101 (este último puede desactivarse, ver más abajo). Anote las claves nuevas en un lugar seguro, nunca en el chat ni en la página.

Crear un operador nuevo

Cambie el usuario, la clave, el nombre y el correo, y ejecute las dos instrucciones juntas:

INSERT INTO users (organization_id, username, password_hash, full_name, email, active)
SELECT organization_id, 'operador2', crypt('ClaveOperador#1', gen_salt('bf')),
       'Maria Perez (operadora)', 'maria@ejemplo.com', true
FROM users WHERE username = 'operador';

INSERT INTO user_roles (user_id, role_id)
SELECT u.id, r.id FROM users u, roles r
WHERE u.username = 'operador2' AND r.code = 'operador';

Asignar un operador a una asamblea (obligatorio)

Un operador solo puede trabajar en las asambleas a las que se le asigna. Si no, ve el mensaje «Operador no asignado a esta asamblea». Hágalo después de crear cada asamblea nueva (la última creada):

INSERT INTO assembly_users (assembly_id, user_id, assigned_role)
SELECT a.id, u.id, 'operador'
FROM assemblies a, users u
WHERE u.username = 'operador2'
  AND a.id = (SELECT id FROM assemblies ORDER BY created_at DESC LIMIT 1)
ON CONFLICT DO NOTHING;

Desactivar un usuario

UPDATE users SET active = false WHERE username = 'propietario101';
ImportanteLa limpieza de asambleas (Guía 9) borra también las asignaciones de operadores. Después de crear la asamblea nueva, vuelva a asignar al operador.

G5Guía 5 · Preparar y realizar una asamblea

Resumen del recorrido completo. El detalle de cada pantalla está en el Manual de usuario (manual.html) y las normas en el Diccionario PH.

Días antes

  1. Cambie las contraseñas de fábrica (Guía 4).
  2. Revise unidades, propietarios, correos, teléfonos y coeficientes. La suma de coeficientes debe ser 100 %.
  3. Encienda el sistema (Guía 2) y entre como administrador.
  4. Fase 1 → 🔗 Servidor y Asamblea: (1) conecte al servidor; (2) envíe las unidades al servidor y espere la confirmación; (3) cree la asamblea (nombre, fecha, tipo, orden del día); (4) guarde la dirección pública (Guía 3); (5) haga una copia de seguridad.
  5. Si hay operador, asígnelo a la asamblea (Guía 4).
  6. Prueba general: marque una unidad presente, escanee su QR con un celular con datos móviles y vote una votación de prueba. Después limpie (Guía 9) y vuelva a crear la asamblea real.

Día de la asamblea

  1. Una hora antes: encienda el sistema, verifique el túnel, proyector y mesa de registro.
  2. Fase 1: pulse Iniciar la asamblea cuando comience la sesión.
  3. Fase 2 – Asistencia y QR: registre la llegada de cada unidad (con apoderado si aplica). Entregue o envíe el QR (Guía 6). Verifique el quórum antes de comenzar.
  4. Fase 3 – Votaciones: siga el orden del día. Para cada votación: lea el enunciado, ábrala, espere los votos, ciérrela y anuncie el resultado. Solo puede haber una votación abierta a la vez. El botón ⏱️ abre el cronómetro de intervenciones.
  5. Copia de seguridad antes de cada votación importante (Guía 8).
  6. Fase 4 – Cierre y acta: verifique que todas las votaciones estén cerradas, haga la copia final, cierre la asamblea, genere el acta. Se firma por presidente y secretario y se publica dentro de los 20 días hábiles siguientes.
DespuésLa asamblea cerrada queda en 📚 Ver asambleas cerradas (Fase 1 → Servidor y Asamblea) para consultarla cuando se necesite.

G6Guía 6 · Enviar los QR por correo y por WhatsApp

Fase 2 → 📨 Enviar QR. Cada propietario recibe su propio QR, usando el correo y el teléfono de la tabla de unidades.

RolA quiénes puede enviar
OperadorSolo a las unidades marcadas como presentes.
Administrador / SuperadminA solo los asistentes o a todas las unidades (selector «¿A quiénes?»).

Configurar el correo (una sola vez)

El correo sale desde una cuenta de Gmail que usted autoriza con una contraseña de aplicación (no es la clave normal de Gmail).

  1. En su cuenta de Google active la Verificación en dos pasos (myaccount.google.com → Seguridad).
  2. Entre a myaccount.google.com/apppasswords, escriba un nombre (por ejemplo «AdminPH») y pulse Crear. Copie la contraseña de 16 letras.
  3. Abra el archivo .env del backend con el Bloc de notas y deje estas líneas (con sus datos):
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USER=su_cuenta@gmail.com
MAIL_PASSWORD="las16letrasjuntas"
MAIL_FROM=su_cuenta@gmail.com
MAIL_FROM_NAME=Administración Conjunto X
  1. Guarde el archivo y reinicie el servidor (cierre la ventana SERVIDOR y vuelva a abrir el .bat). Sin reiniciar, no toma los cambios.
  2. Pruebe enviándose un QR a usted mismo.
Cuentas que no funcionanLas cuentas institucionales o educativas (por ejemplo @esap.edu.co) y muchas cuentas de Office 365 bloquean este tipo de envío. Además, no es correcto usar una cuenta de otra entidad. Use Gmail con contraseña de aplicación o un correo del dominio propio. Gmail permite unos 500 envíos al día.

Enviar por correo

  1. Verifique que el servidor esté conectado, la asamblea elegida y la dirección pública guardada (si falta algo, la pantalla lo avisa).
  2. Elija «Solo asistentes» o «Todas las unidades» (administrador).
  3. Marque los destinatarios (botón «Marcar todos con correo») y pulse ✉️ Enviar correo a los marcados. Se envía en tandas de 5.
  4. Al terminar verá cuántos se enviaron y cuáles tuvieron problema, con el motivo. Cada unidad queda marcada con la hora del envío.

Enviar por WhatsApp

  1. En el cuadro «Indicativo WhatsApp» deje solo 57 (Colombia). No escriba teléfonos ahí.
  2. Pulse 💬 en la fila de una unidad, o «WhatsApp: siguiente pendiente» para ir en orden.
  3. Se abre WhatsApp con el mensaje y el enlace listos. Si aparece «Continuar al chat», púlselo, y luego toque Enviar.
Por qué no es automáticoWhatsApp no permite enviar mensajes automáticos sin su plataforma de pago (WhatsApp Business). Con este sistema usted toca «Enviar» en cada conversación.
Datos personalesUse correos y teléfonos solo para la asamblea y tenga la autorización de tratamiento de datos de los propietarios (Ley 1581 de 2012). El QR es personal e intransferible.

G7Guía 7 · Ver lo mismo en un segundo computador

Puede abrir la página en otro computador usando la dirección del túnel (la que termina en trycloudflare.com) o, si está en la misma red, http://IP-del-computador:3000. Pero recuerde: cada navegador guarda su propio trabajo del día (asistencia, orden del día, votaciones). Un computador nuevo aparece «en blanco».

Traer los datos al segundo computador

  1. Abra la dirección del túnel en el navegador del segundo computador e ingrese con su usuario.
  2. Vaya a Fase 1 → 🔗 Servidor y Asamblea. Debe decir «Conectado como…». Elija la misma asamblea.
  3. Pulse ⤵ Restaurar la copia del servidor. Se cargan unidades, asistencia y orden del día.
  4. Vaya a Fase 2 o Fase 3 y verá lo mismo que en el computador principal.
Es una foto, no una pantalla en vivoLo que se marque después en el computador principal no aparece solo en el segundo: hay que volver a pulsar «Restaurar la copia del servidor». Los votos de los celulares sí van directo al servidor. No trabaje en los dos computadores a la vez sobre lo mismo; deje uno como principal y use el otro solo para mirar.
Para proyectar resultados en vivoAbra panel-votacion.html (en la misma dirección) en el segundo computador o en el proyector. Es de solo lectura y sí se actualiza en tiempo real.
Operador en otro computadorHoy un operador que trabaje en otro PC no se sincroniza en vivo con el principal. Lo recomendado es que el operador use el mismo computador principal o una pantalla compartida. Esa mejora se plantea para la versión en hosting.

G8Guía 8 · Copias de seguridad y recuperación

Hay dos tipos de copia y conviene tener ambos:

CopiaQué guardaCómo se hace
Dentro de la página (copia del servidor)El trabajo del día: asistencia, orden del día, votaciones.Fase 1 → Servidor y Asamblea → «💾 Guardar copia ahora». Además se guarda sola mientras usted trabaja.
De la base de datos (PostgreSQL)TODO: unidades, usuarios, asambleas, votos, QR, actas.pgAdmin o PowerShell (abajo).

Cuándo hacerlas

  • Copia de la base de datos: antes de limpiar, la noche anterior a la asamblea y al terminar.
  • Copia dentro de la página: antes de cada votación importante y al cierre.
  • Guarde una copia fuera del computador (memoria USB o nube privada).

Hacer la copia de la base de datos – Opción A: con pgAdmin (más fácil)

  1. Abra pgAdmin y conéctese.
  2. Clic derecho sobre la base adminph → Backup…
  3. En «Filename» pulse la carpeta, elija el Escritorio y escriba un nombre con la fecha, por ejemplo respaldo_2026-10-01.
  4. Formato: Custom. Pulse Backup. Debe decir «Successfully completed».

Opción B: con PowerShell

Windows no encuentra pg_dump si se escribe solo el nombre; hay que usar la ruta completa. Con PostgreSQL 18:

& "C:\Program Files\PostgreSQL\18\bin\pg_dump.exe" -U postgres -d adminph -f "$HOME\Desktop\respaldo_2026-10-01.sql"

Le pedirá la clave de PostgreSQL. El archivo queda en el Escritorio. (Si la versión instalada no es la 18, mire cuál carpeta existe con dir "C:\Program Files\PostgreSQL" y cambie el número.)

Recuperar una copia (volver atrás)

AtenciónRecuperar reemplaza los datos actuales. Haga primero una copia de lo actual si todavía sirve de algo, y cierre el servidor (ventana SERVIDOR) mientras restaura.

Si la copia fue hecha con pgAdmin (Custom):

  1. En pgAdmin: clic derecho en Databases → Create → Database…, nómbrela adminph_recuperada y guarde.
  2. Clic derecho sobre adminph_recuperada → Restore… → elija el archivo de la copia → Restore.
  3. Cuando termine, cambie el nombre de la base en el archivo .env (línea DATABASE_URL, al final de la dirección) a adminph_recuperada y reinicie el servidor. Así queda la anterior intacta por si acaso.

Si la copia fue hecha con PowerShell (archivo .sql):

& "C:\Program Files\PostgreSQL\18\bin\psql.exe" -U postgres -c "CREATE DATABASE adminph_recuperada;"
& "C:\Program Files\PostgreSQL\18\bin\psql.exe" -U postgres -d adminph_recuperada -f "$HOME\Desktop\respaldo_2026-10-01.sql"

Después apunte el .env a adminph_recuperada como en el caso anterior y reinicie el servidor.

Recuperar la «copia del servidor» dentro de la página

Fase 1 → Servidor y Asamblea → ⤵ Restaurar la copia del servidor (la más reciente) o ↩ Restaurar la copia anterior (la que había antes). Úselo si cambió de navegador, de computador o se limpió el navegador.

Archivos del sistemaGuarde también una copia de la carpeta ADMIN PH completa (incluye el .env) en una USB. Con la carpeta, la copia de la base de datos y los programas instalados, el sistema se puede reconstruir en otro computador.

G9Guía 9 · Borrar asambleas y dejar la plataforma limpia

Sirve para eliminar asambleas de prueba y empezar de cero antes de la asamblea real.

No se puede deshacerHaga primero la copia de la base de datos (Guía 8). No ejecute esto durante una asamblea real ni después de empezarla.

Paso 1 – Limpiar el servidor

Abra una ventana nueva de Query Tool (Guía 4), pegue todo este bloque junto y ejecútelo (▶):

ROLLBACK;
BEGIN;
TRUNCATE assemblies, attendance, qr_tokens CASCADE;
DELETE FROM app_state_snapshots;
DELETE FROM audit_logs;
DELETE FROM units WHERE property_id <> '00000000-0000-0000-0000-000000000010';
DELETE FROM properties WHERE id <> '00000000-0000-0000-0000-000000000010';
COMMIT;

La primera línea puede mostrar un aviso inofensivo («no hay transacción en progreso»).

Se borraSe conserva
Todas las asambleas, asistencia, QR, votos, actas, copias de seguridad del servidor, auditoría, y los conjuntos y unidades de prueba.Los usuarios (superadmin, admin, operador…) y el conjunto demo del sistema.
Si solo quiere borrar las asambleas y conservar sus unidadesUse únicamente estas líneas: BEGIN; TRUNCATE assemblies, attendance, qr_tokens CASCADE; DELETE FROM app_state_snapshots; DELETE FROM audit_logs; COMMIT; (sin las dos líneas de DELETE FROM units y DELETE FROM properties).

Paso 2 – Reiniciar el servidor

Cierre la ventana SERVIDOR y abra otra vez el .bat (o ejecute npm run start:dev).

Paso 3 – Limpiar el navegador (en cada computador usado)

  1. Abra la página y pulse F12 → pestaña Console.
  2. Escriba localStorage.clear() y pulse Enter.
  3. Recargue con Ctrl+F5 e ingrese de nuevo.

Paso 4 – Empezar la asamblea real

  1. Fase 1: conecte, cargue las unidades reales, envíelas al servidor y cree la asamblea.
  2. Vuelva a asignar al operador a la asamblea (Guía 4).
  3. Guarde la dirección pública (Guía 3).

Si sale el error «violates RESTRICT… attendance_unit_id_fkey»

Significa que se intentó borrar unidades que todavía tienen asistencia. Ejecute el bloque completo del Paso 1 en una ventana nueva (borra primero la asistencia y luego las unidades).

G10Guía 10 · Actualizar el sistema y usarlo en otros computadores

Instalar una actualización (parche)

Las mejoras llegan como un archivo .zip con una carpeta frontend y/o backend, más un archivo LEEME.

  1. Haga una copia de la carpeta ADMIN PH y de la base de datos (Guía 8).
  2. Descomprima el zip en el Escritorio.
  3. Copie los archivos respetando las carpetas: lo de frontend\AdminPH\… va dentro de ADMIN PH\frontend\AdminPH\…; lo de backend\src\… va dentro de ADMIN PH\backend\backend-adminph\src\…. Responda «Reemplazar» cuando pregunte.
  4. Si el LEEME dice que hay claves nuevas, agréguelas al .env.
  5. Cierre y vuelva a abrir la ventana SERVIDOR (o el .bat).
  6. En el navegador pulse Ctrl+F5 (recarga sin memoria vieja).
  7. Si el LEEME dice «ejecute npm install», abra PowerShell en la carpeta del backend y escriba npm install (necesita internet).

Si algo sale mal, restaure la copia de la carpeta y vuelva a empezar.

Otros computadores que solo entran a la página

No hay que instalar nada. La página la entrega el computador principal. Basta abrir la dirección del túnel (o http://IP:3000 en la misma red) y pulsar Ctrl+F5 después de cada actualización.

Instalar el sistema completo en otro computador (que sea el servidor)

  1. Instale PostgreSQL 18 + pgAdmin, Node.js y cloudflared.
  2. Copie la carpeta ADMIN PH completa (con el .env).
  3. En PowerShell, dentro de ADMIN PH\backend\backend-adminph, ejecute npm install.
  4. Cree la base de datos y restaure la última copia (Guía 8). Si la clave de PostgreSQL es distinta, ajuste DATABASE_URL en el .env.
  5. Abra INICIAR_ADMINPH.bat con el Bloc de notas y verifique que la ruta de la carpeta sea la de ese computador.
  6. Haga doble clic en el .bat y siga el Guía 2.

G11Guía 11 · Problemas frecuentes y mensajes de error

Qué veCausa probableQué hacer
«Failed to fetch» / no conecta al servidorEl servidor o PostgreSQL están apagados.Encienda PostgreSQL (services.msc), abra el .bat, entre por http://localhost:3000/ y pulse Ctrl+F5.
Error EADDRINUSE / «puerto 3000 en uso»Hay otro servidor ya abierto.Cierre la ventana negra anterior. Si persiste: PowerShell netstat -ano | findstr :3000, tome el número final (PID) y taskkill /PID número /F.
El QR abre en el computador pero no en el celularEl QR usa localhost o una IP.Guarde la dirección pública (Guía 3) y vuelva a mostrar/enviar los QR. Pruebe con datos móviles.
Los QR dejaron de abrirCambió la dirección del túnel.Copie la dirección nueva, guárdela en la Fase 1 y reenvíe los QR (los anteriores no sirven). Entre tanto, vote a mano alzada.
Otro navegador/PC aparece vacíoCada navegador guarda lo suyo.Fase 1 → «Restaurar la copia del servidor» (Guía 7).
«Operador no asignado a esta asamblea»Falta asignar al operador.Ejecute el SQL de asignación (Guía 4).
Botón de correo deshabilitadoCorreo sin configurar, sin dirección pública o sin servidor.Revise los avisos amarillos de la pantalla y el .env (Guía 6). Reinicie el servidor.
535 Authentication unsuccessfulGmail/Office rechazó usuario o clave.Use contraseña de aplicación de Gmail, sin espacios y entre comillas. No use cuentas institucionales.
WhatsApp dice «404 / página no existe»Número mal armado (indicativo con muchos dígitos).Deje el indicativo en 57 y revise que el teléfono tenga 10 dígitos.
Otra votación sigue abiertaSolo se permite una a la vez.Use el aviso verde «Cerrar ahora» y abra la siguiente.
Cambié algo del .env y no pasa nadaEl servidor no se reinició.Cierre la ventana SERVIDOR y vuelva a abrir el .bat.
Se apagó el computador en plena asambleaCorte de luz o suspensión.Encienda, abra el .bat, restaure la copia si hace falta. Los votos ya emitidos están guardados. La dirección del túnel será nueva: reenvíe QR o vote a mano alzada.

G12Guía 12 · Listas de chequeo

La noche anterior

Una hora antes

Durante

Al terminar

G13Guía 13 · Seguridad y qué cambiará al subir el sistema a internet

  • Contraseñas: cámbielas, use claves largas y no las comparta por chat, correo ni capturas de pantalla.
  • El archivo .env contiene claves: no lo envíe ni lo suba a ningún lado.
  • Dirección del túnel: cualquiera que la tenga ve la pantalla de ingreso, pero solo entra quien tenga usuario y clave.
  • Datos personales: correos, teléfonos y documentos de los propietarios están protegidos por la Ley 1581 de 2012. Úselos solo para la asamblea.
  • Equipo: mantenga Windows actualizado y no deje el computador sin vigilancia con la sesión abierta.

Qué cambiará con un hosting

Hoy (localhost)Con hosting en internet
Hay que encender el computador, el servidor y el túnel.El sistema está siempre encendido, con dirección fija propia (por ejemplo app.profesionalesdevida.com).
La dirección del túnel cambia.La dirección no cambia; los QR no se vencen.
Copias con pgAdmin / PowerShell en el PC.Copias automáticas del proveedor.
El operador depende del computador principal.Cada usuario entra desde su equipo con datos compartidos (mejora a desarrollar).

Para soporte técnico del sistema: Juan Carlos Castro · 310 778 7733 · info@profesionalesdevida.com

G14Guía 14 · Novedades de la versión 3.5

Botón «Coeficiente de participación»

Muestra, tomando a los asistentes como el 100 %, el coeficiente que le corresponde a cada unidad presente (coeficiente ÷ suma de presentes × 100). Está en tres sitios: Fase 2 → 📐 Coef. de participación, el botón dentro del Panel de Quórum y el botón 📐 Coef. de participación en el Modo Asamblea (se abre sobre la pantalla, sin salir de la votación). Permite descargar a Excel/CSV e imprimir. No modifica los coeficientes originales.

Úselo como informaciónLa Ley 675 de 2001 mide quórum y mayorías sobre los coeficientes del conjunto. Confirme con su asesor jurídico y con el reglamento de propiedad horizontal sobre qué base aplica a cada decisión.

Copias de seguridad con versiones (ya no hay «conflicto»)

  1. Fase 1 → Servidor y Asamblea → 5. Copia de seguridad.
  2. 💾 Guardar copia ahora: escriba un nombre (ej. «Antes de la votación 3»). Queda como una versión.
  3. 🕘 Ver versiones y restaurar: elija el conjunto y la versión (fecha y hora) y pulse Restaurar. Funciona también en un navegador o computador nuevo y vacío. Antes de reemplazar, el sistema guarda lo que había como una versión más.
  4. ⬇️ Descargar copia (archivo) y ⬆️ Cargar copia desde archivo: respaldo en un archivo .json que usted guarda en una USB o su correo; sirve aunque falle el servidor.
Regla prácticaAntes de cada votación importante pulse «Guardar copia ahora» con un nombre claro, y al terminar la asamblea descargue el archivo de copia.

Arranque estable del servidor (INICIAR_ADMINPH.bat nuevo)

El nuevo .bat compila el sistema una vez y lo ejecuta en modo producción (el modo anterior «dev» se reinicia con cada cambio de archivo y es más lento), reinicia solo el servidor y el túnel si se caen, evita que Windows suspenda el equipo y usa el protocolo http2 del túnel (más estable en redes que bloquean UDP). Copie los tres archivos .bat juntos a la misma carpeta y use siempre INICIAR_ADMINPH.bat.

Limitación que no se puede arreglar en localhostSi el túnel se reinicia, su dirección cambia y los QR ya enviados dejan de abrir. La solución definitiva es una dirección fija: publicar el sistema en internet (capítulo siguiente).
Limpieza de la plataformaAdemás de DELETE FROM app_state_snapshots; ejecute DELETE FROM app_state_history; para borrar también las versiones guardadas.

G15Guía 15 · Publicar AdminPH en internet (Supabase + servidor)

Supabase aporta la base de datos PostgreSQL en la nube. AdminPH además necesita un servidor Node.js (no puede correr dentro de Supabase): se recomienda Render (o Railway/Fly/un VPS). Resultado: una dirección fija como https://app.profesionalesdevida.com, siempre encendida, sin túnel ni computador.

PlanesEl plan gratuito de Supabase pausa proyectos inactivos y no incluye copias diarias; el gratuito de Render «duerme» el servicio. Para asambleas reales use planes de pago (consulte los precios vigentes en cada sitio). Esta guía no pudo probarse contra sus cuentas reales; el esquema de base de datos sí se probó desde cero.

Paso 1 — Base de datos en Supabase

  1. Cree cuenta en supabase.com → New project. Región cercana (por ejemplo São Paulo). Anote la contraseña de la base de datos (solo para usted; no la comparta por chat ni correo).
  2. Menú SQL Editor → pegue y ejecute (Run) el contenido de database/01_ESQUEMA_PRODUCCION.sql.
  3. Abra database/02_USUARIO_INICIAL.sql en el Bloc de notas, cambie los tres textos marcados «CAMBIAR» (empresa, su nombre y su clave nueva), péguelo en el SQL Editor y ejecútelo una sola vez.
  4. Botón Connect → pestaña Session pooler → copie la cadena (empieza por postgresql://postgres.…) y reemplace [YOUR-PASSWORD] por la contraseña. Esa es su DATABASE_URL.

Paso 2 — Subir el código a GitHub (repositorio PRIVADO)

  1. Cree cuenta en github.com y un repositorio privado llamado adminph.
  2. Suba la carpeta ADMIN PH con backend/backend-adminph y frontend/AdminPH (sin node_modules ni .env), más la carpeta despliegue. Copie despliegue/dockerignore.txt a la raíz con el nombre .dockerignore.

Paso 3 — Servidor en Render

  1. render.com → New → Blueprint → conecte su GitHub y elija el repositorio (usa despliegue/render.yaml).
  2. Cuando lo pida, escriba las variables: DATABASE_URL (Paso 1), PUBLIC_APP_URL y CORS_ORIGINS (la dirección final, ver Paso 4). JWT_SECRET y QR_SIGNING_SECRET se generan solas.
  3. Espere el despliegue y abra https://SU-SERVICIO.onrender.com/api/docs: si carga, el servidor está sano. Entre a la raíz e inicie sesión como superadmin con la clave que escribió en el paso 1.

Paso 4 — Dirección propia (sin mover su dominio a Cloudflare)

  1. En Render → su servicio → Settings → Custom Domains → agregue app.profesionalesdevida.com.
  2. En el panel donde administra el DNS de profesionalesdevida.com cree un registro CNAME app → el valor que Render indique. Render emite el certificado HTTPS automáticamente.
  3. Cuando cargue, ponga esa dirección en PUBLIC_APP_URL y CORS_ORIGINS de Render y guarde (se reinicia solo).

Paso 5 — Primer uso

  1. Entre con superadmin, cree sus usuarios (administrador, operadores) y no deje claves de prueba.
  2. Cargue las unidades con el Excel (Fase 1), cree la asamblea, asigne operadores, inicie la asamblea y envíe los QR. Como la dirección ya es fija, los QR no se vencen.
  3. Mantenga una copia: Supabase (planes de pago) hace copias automáticas, y además use el botón Descargar copia (archivo) después de cada asamblea.
ActualizacionesCuando haya una versión nueva (parche), se suben los archivos a GitHub y Render vuelve a desplegar solo. Ya no hay que tocar el computador de la administración.

G16Guía 16 · Novedades de la versión 3.6: votación manual y carga de unidades

Votación manual de respaldo (si falla el QR)

  1. Con los asistentes ya marcados, entre a Fase 3 → Modo Asamblea y pulse 📥 Votación manual (Excel).
  2. Marque las votaciones que necesita (orden del día, elecciones, votaciones adicionales) y pulse Descargar Excel. Obtiene una hoja por votación.
  3. Cada hoja lista, en orden alfabético, una fila por unidad presente (un apoderado con varias unidades ocupa una sola fila con la suma de sus coeficientes y el nombre de los copropietarios que representa). Tiene una casilla amarilla MARCAR X por cada opción.
  4. Al escribir X, aparece el coeficiente de esa fila en la columna verde. Abajo el Excel calcula el total por opción, el % sobre los asistentes (=100), el % sobre el total del conjunto, el mínimo para aprobar y si alcanza (SÍ/NO), el total votado y lo que quedó sin votar.
  5. Puede imprimirla y votar en papel, o llenarla en un computador. Después, en la misma ventana, cargue el Excel diligenciado: AdminPH muestra el resultado y, con Registrar, lo deja en la votación (por coeficiente) para el acta.
DetallesLa votación debe estar cerrada para registrar el resultado manual. Si llegan más asistentes, vuelva a descargar el Excel. Una fila con más de una X (en votaciones de una sola opción) no se cuenta y se avisa. El Excel funciona sin internet.

Carga rápida de unidades desde Excel

  1. Fase 1 → Configuración (arriba): tarjeta ⚡ Carga rápida de unidades desde Excel. También aparece en el módulo de Carga Excel.
  2. Descargar plantilla y llénela: UNIDAD · DOCUMENTO · PROPIETARIO · CORREO · TELEFONO · COEFICIENTE · COEF_PARQUEADERO y, opcional, ETAPA. Ya no hace falta crear etapas, conjuntos ni niveles a mano: la unidad se llama como usted la escriba («Casa 1», «Lote 5»).
  3. Varios copropietarios en una unidad: repita el nombre de la unidad en filas seguidas, una fila por persona, cada una con su correo y teléfono. El coeficiente se escribe en la primera fila.
  4. Suba el archivo: verá una vista previa con el total de unidades, la suma de coeficientes (debe dar 100), unidades sin correo o teléfono y correos dudosos. Pulse Crear unidades. Si ya hay unidades puede elegir «Agregar y actualizar» o «Reemplazar todo».
  5. Luego, Fase 1 → Servidor y Asamblea → Enviar unidades al servidor.
Envío de QR a copropietariosEn 📨 Enviar QR aparece una fila por persona (propietario y copropietarios). Todos reciben el mismo QR de la unidad, cada uno en su correo o WhatsApp.

G17Guía 17 · Novedades de la versión 3.7: apoderados con un solo QR

Un apoderado que representa varias unidades (por ejemplo Casa 1, Casa 10, Lote 1 y Apartamento 6) recibe un solo QR. Al votar, su voto se registra por cada unidad con el coeficiente de cada una, es decir, vale la suma de los coeficientes. Las demás unidades ya no tienen QR propio (si alguien intenta votar con ese QR, el sistema lo rechaza).

Registrar un apoderado

  1. Fase 2 → 🤝 Apoderados. Escriba nombre, documento y, si quiere enviarle el QR, correo y teléfono.
  2. Marque en la lista todas las unidades que representa (hay buscador; ve el copropietario y el coeficiente de cada una y el total que va sumando).
  3. Deje marcada la casilla «presentes» para registrar de una vez la asistencia por poder de todas sus unidades, y pulse Registrar poder.
  4. La panorámica muestra, por apoderado, todas sus unidades, el nombre del copropietario que representa cada una, el coeficiente de cada una, el total, la asistencia y en qué unidad está su QR. Desde allí puede marcar o quitar la asistencia de todo el grupo, editar o quitar el poder.
  5. Envíe su QR desde 📨 Enviar QR: aparece una sola fila («Lote 1 + 2 unidades — Ana (apoderado)») con el correo y teléfono del apoderado.

Poderes precargados desde el Excel

La plantilla de carga de unidades tiene 4 columnas opcionales: APODERADO_DOCUMENTO, APODERADO_NOMBRE, APODERADO_CORREO, APODERADO_TELEFONO. Escriba los mismos datos del apoderado en cada una de sus unidades. Después de cargar el Excel, en Fase 2 → Apoderados pulse Crear apoderados desde el Excel: se arman los grupos sin marcar asistencia; el día de la asamblea basta pulsar Marcar todas presentes.

ImportanteEsta versión cambia el servidor: después de copiar los archivos, ejecute de nuevo INICIAR_ADMINPH.bat (compila e inicia). La tabla nueva se crea sola. El reglamento de cada conjunto puede limitar cuántos poderes puede llevar una persona: verifíquelo antes de registrar.
Votación manualEl Excel de votación manual ya agrupa al apoderado en una sola fila con la suma de sus coeficientes y los copropietarios que representa.

G18Guía 18 · Novedades de la versión 3.8: apoderado único, Excel por punto y evidencia de asistencia

Apoderado una sola vez

En el selector «Seleccionar candidato desde asistentes» el apoderado aparece una sola vez, con su nombre, las unidades que representa y la suma de sus coeficientes. El contador de votos QR indica «N votantes — M unidades» cuando un apoderado vota por varias.

Votación manual de todos los puntos

La lista de Votación manual (Excel) sigue el orden del día: presidente, secretario, comisión verificadora, consejo, comité de convivencia, revisor fiscal, aprobaciones, votaciones adicionales y los puntos creados con «Agregar punto». Los puntos que aún no tienen candidatos aparecen como pendientes: agregue los candidatos en la Fase 3 y el Excel quedará disponible. En Fase 3 → Orden del día cada punto con votación tiene su propio botón 📥 Excel.

Evidencia general de asistencia

Fase 2 → 🤝 Apoderados → 📋 Evidencia general de asistencia: unidades presentes en orden (por etapa/módulo y unidad) y, debajo, los apoderados con sus unidades. Se puede ver, imprimir o descargar en Excel como soporte del acta.

Nombre «Demo» del superadministradorSale del servidor (PostgreSQL), no de la versión. Se cambia con el archivo CAMBIAR_NOMBRE_SUPERADMIN.sql incluido en el paquete.

G19Guía 19 · Novedades de la versión 3.9: Excel de votación mejorado y panel en vivo

Excel de votación manual

  • El archivo de un solo punto lleva el nombre de ese punto (por ejemplo VOTACION_Designacion_comision_verificadora_del_acta_…xlsx); el que baja varios puntos juntos se llama VOTACION_MANUAL_GENERAL_….
  • La fila 1 son los títulos con filtro y queda inmovilizada junto con las tres primeras columnas. Las convenciones, el resumen, las firmas y el código de votación están debajo de la lista.
  • Las columnas MARCAR X están seguidas y luego vienen las columnas de coeficiente. La hoja está protegida sin contraseña: solo se pueden escribir las casillas amarillas, y solo la letra X.

Cargar el Excel diligenciado

Se puede cargar desde 📤 Cargar en el punto del orden del día o desde Votación manual (Excel); el efecto es el mismo. Si la votación estaba abierta, el sistema la cierra (pide confirmación) y deja registrados los votos, la estadística y el gráfico, igual que al cerrar una votación normal. El botón 📊 Ver resultado en el punto lleva directo a la pantalla del punto. La ventana tiene ✖ Cerrar arriba y abajo.

Panel de votación en vivo

«← Volver a AdminPH» y «Salir» llevan siempre a la Fase 3. Las unidades representadas por un apoderado ya no muestran QR: indican «Vota con el QR de su apoderado».

G20Guía 20 · Novedades de la versión 4.0: menú lateral, Ayuda y recursos, versiones

Menú lateral

Las fases están ahora en un menú desplegable a la izquierda; al elegir una fase se despliegan sus módulos. Al entrar se llega a Inicio, con tarjetas de herramientas y acciones rápidas. «Servidor y asamblea» es el primer botón de la Fase 1.

Ayuda y recursos

Admin Usuarios, Manual de Usuario y Diccionario PH salieron de la Fase 1 y están agrupados en Ayuda y recursos, visible para todos los usuarios. El diccionario incluye Decreto 768 de 2025 (proceso único de policía, no regula la tutela), acción de tutela y términos de las cartillas de MinVivienda y CONPUCOL.

Área administrativa

Reuniones virtuales, Gestor documental, Reportes y estadísticas y Agenda aparecen marcados «En desarrollo»; todavía no funcionan.

Versiones guardadas

En «Ver versiones y restaurar» cada versión tiene ahora Eliminar (solo superadmin y admin). La versión vigente no se puede eliminar.

Panel de votación en vivo

Se actualiza solo cada 4 segundos y tiene Actualizar todo. Archivar solo oculta la sesión en el panel; no borra la votación de la Fase 3. Si una unidad figura ausente en la Fase 2, el sistema corrige el servidor y deja de aparecer como presente.

Clic derecho

Los botones del menú permiten «Abrir en pestaña nueva» o «en ventana nueva» con clic derecho. En el orden del día, las acciones quedan alineadas en columnas.

G21Guía 21 · Novedades de la versión 4.1: app en el teléfono y simulador de cuotas

AdminPH como aplicación (PWA)

Con la página publicada en HTTPS, abra AdminPH en el navegador del teléfono y elija «Instalar aplicación» (Chrome: menú ⋮; iPhone: Safari → Compartir → «Añadir a pantalla de inicio»). Se abre a pantalla completa con su ícono. Los datos de votación y asistencia siempre se leen del servidor: la app instalada nunca muestra datos viejos.

Simulador de cuotas de administración (anexo pedagógico)

En Ayuda y recursos → Simulador de cuotas. Escriba el valor a repartir, la cantidad de unidades (o cargue un Excel) y elija: por coeficiente (cuota = coeficiente × valor mensual), nominal (valor ÷ unidades) o comparar ambas. Puede calcular el coeficiente por área, redondear al millar, comparar con la cuota anterior, descargar el resultado en Excel (con fórmulas) e imprimirlo. Incluye la explicación paso a paso y las referencias de la Ley 675. Es un ejercicio de aprendizaje: la cuota real la aprueba la asamblea.

G22Guía 22 · Novedades de la versión 4.2: agenda, reuniones virtuales, anexos del acta y visor de archivos

Agenda

Área administrativa → Agenda. Muestra el mes activo con flechas arriba y abajo para pasar al mes anterior o siguiente (y «Hoy»). Toque una casilla vacía para programar una asamblea, reunión de consejo o contractual, envío de evidencias u otro evento; puede repetirse cada semana o cada mes. La fecha de la asamblea de la Fase 1 aparece sola. Los próximos eventos se ven también en Inicio.

Reuniones virtuales

Botones Reunirse ahora (crea una sala y un enlace para compartir por WhatsApp o correo), Programar reunión y Unirse con ID. Muestra la próxima reunión (o la que está en curso), la agenda de hoy y el calendario completo. La videollamada la presta un servicio externo (por defecto Jitsi Meet, sin cuenta); también puede pegar el enlace de Meet, Zoom o Teams. AdminPH no transmite video. «Chats y canales» está en desarrollo; en «Grabaciones y archivos» se guarda el enlace de cada grabación.

Anexos del acta (Fase 4)

En la pantalla del acta hay un botón por anexo para incluirlo o no en el PDF: listado de asistentes, totales y quórum, constancia de QR, votación manual en Excel (archivos descargados y cargados), panel de votación en vivo, simulador de cuotas y documentos adjuntos. Por seguridad la constancia de QR no imprime los códigos, porque son credenciales de voto.

Archivos de la Fase 3

Al pulsar el nombre o «Abrir», el archivo se muestra dentro de AdminPH: PDF, imágenes, texto, Excel (.xlsx), Word (.docx) y PowerPoint (.pptx, solo texto). Los formatos antiguos (.doc, .xls, .ppt) no se pueden mostrar: se ofrece «Descargar original».

Otros ajustes

  • Menú lateral: un segundo clic sobre la fase activa pliega o despliega sus módulos.
  • Coeficiente de participación: la tabla se ve completa, sin barra de desplazamiento.
  • Panel de votación en vivo: el estado presente/ausente sale de la lista de asistencia de la Fase 2 y corrige el servidor.
  • Simulador de cuotas: calculadora de tres cajas (arriba y abajo) y botón «Reiniciar todo a cero».

G23Guía 23 · Llamado a lista por QR (presencial, virtual o mixto)

Fase 2 → Llamado a lista (QR). Sirve para que todos los asistentes se registren a la vez con su celular, sin hacer fila.

Cómo funciona

  1. El administrador pulsa Abrir llamado a lista (elige la duración y cada cuánto cambia el código).
  2. La pantalla muestra un QR y un código de 6 dígitos que cambian solos. Use Proyectar en pantalla completa en la sala y compártala en la reunión virtual.
  3. Los operarios abren en su celular o tablet la dirección …/pantalla-qr.html, inician sesión con su usuario, eligen la asamblea y muestran el QR a quien llegue.
  4. El asistente escanea el QR (o, si está conectado a distancia, abre el enlace del chat y escribe el código), escribe solo su número de documento y recibe la confirmación. AdminPH lo marca presente en la lista de asistencia (propietario, copropietario o apoderado; el apoderado registra todas las unidades que representa).

Seguridad

  • El QR y el código cambian cada 1, 2 o 5 minutos: un enlace o una foto reenviada a un ausente deja de servir.
  • Solo se acepta un documento que figure en la asamblea. Cada unidad se registra una sola vez.
  • Varios intentos fallidos bloquean al celular o al documento unos minutos.
  • Puede activar «Pedir mi aprobación»: cada registro queda pendiente hasta que usted lo aprueba.
  • Cada registro muestra hora y persona, y puede anularse; quien fue anulado no puede volver a registrarse solo.
  • Los documentos se guardan en el servidor solo como huella cifrada, por llamado.
  • Quien no tenga documento registrado en Fase 1 debe pasar por la mesa de registro.

Otros ajustes de la versión 4.3

  • Los botones de las ventanas emergentes (Cerrar, Copiar, etc.) se ven con buen contraste.
  • Excel de votación manual: las columnas de resultado usan el coeficiente de participación (columna E) y el mínimo para aprobar es el porcentaje indicado sobre esa misma columna (asistentes = 100).

G24Guía 24 · Gestor documental: recibir, clasificar y entregar los documentos de la asamblea

Área administrativa → Gestor documental. Reúne en un solo lugar los informes, estados financieros, poderes y demás soportes, los clasifica y los entrega como listado en el acta.

1. Recibir documentos por enlace o QR

  1. Pestaña Recibir documentos (QR): elija el documento que espera (informe de administración y consejo, revisoría fiscal, estados financieros, informe jurídico, poderes) o «Que quien envíe elija».
  2. Pulse Crear enlace y QR. Comparta el enlace por WhatsApp o correo, o imprima la hoja con QR.
  3. Quien lo recibe no necesita cuenta: abre la página, escribe su nombre, y sube el archivo (o pega un enlace de Drive/OneDrive si pesa más de 10 MB). Si el enlace es de «elige», la página le pregunta si lo deja en un punto del orden del día o en un contenedor general.
  4. Cada envío entrega un comprobante con la huella SHA-256 del archivo.

2. Revisar y clasificar (Expediente)

  • Todo lo recibido queda Por revisar. Ábralo en el visor, y pulse Aprobar o Rechazar. Solo lo aprobado entra al acta.
  • Mover cambia un documento de punto o de contenedor; Subir aquí permite al administrador cargar directamente (queda aprobado).
  • Los archivos cargados antes en la Fase 3 aparecen en el mismo expediente como «Local · Fase 3».
  • Dentro de cada punto del orden del día (Fase 3) hay un bloque con los documentos recibidos para ese punto.

3. Entregar y guardar

  • Exportar y carpetas: expediente completo en un ZIP (una carpeta por punto y por contenedor general, con INDICE.csv) e índice en Excel.
  • Puede guardar el enlace de su carpeta de Drive/OneDrive para abrirla con un clic; la copia en Drive se hace subiendo el ZIP.
  • El anexo Documentos adjuntos del acta lista cada documento con su clasificación, quién lo envió, la fecha y la huella.

Seguridad

  • El enlace solo permite enviar; nunca ver ni descargar lo guardado.
  • Cada enlace vence, tiene tope de archivos y se puede desactivar.
  • Solo se aceptan PDF, Word, Excel, PowerPoint, imágenes, TXT y CSV (máx. 10 MB), verificados por su contenido.

G25Guía 25 · Usuarios reales: crear, entrar con contraseña y con QR de acceso

Área administrativa → Administrar usuarios (solo el Super Administrador). Desde la versión 4.5 los usuarios se guardan en el servidor con la contraseña cifrada; antes solo quedaban en el navegador y por eso no podían ingresar.

Crear un usuario

  1. Escriba usuario (sin espacios), contraseña (mínimo 6 caracteres), rol y nombre. Para un propietario, escriba su unidad.
  2. Pulse Crear. El usuario ya puede ingresar desde cualquier equipo.
  3. Entregue la contraseña por un canal privado (no por grupos de WhatsApp ni en un Excel).

QR / enlace de acceso (📱)

  • Para operadores, propietarios e invitados genera un enlace de un solo uso que vence en 24 horas: quien lo abre entra sin escribir contraseña. Entréguelo solo a esa persona; si se pierde, genere otro.
  • Para administradores el QR solo escribe el nombre de usuario (la contraseña nunca va dentro de un QR).

Otras acciones

  • 🔑 cambiar contraseña · ⏸️/▶️ desactivar o activar · 🗑️ eliminar. Los operadores quedan asignados a las asambleas del conjunto.
  • El servidor no puede mostrar contraseñas (solo guarda su huella); si alguien la olvida, se le asigna una nueva con 🔑.

G26Guía 26 · Reportes y estadísticas: tablero en vivo y ventana para proyectar

Área administrativa → Reportes y estadísticas. Tres pestañas:

  1. Asamblea actual (en vivo): quórum por coeficiente (con alerta si se pierde), unidades presentes, poderes y apoderados, desarrollo del orden del día, asistencia por etapa, votaciones (abiertas y cerradas, con porcentaje requerido y si fueron aprobadas), documentos, proposiciones y registros por QR. Se actualiza sola cada 3 segundos. Toque una tarjeta (unidades, poderes, orden del día, sillas vacías) para ver el detalle.
  2. Por asamblea: comparativo del quórum entre asambleas abiertas y cerradas, y detalle de cada una (votaciones y orden del día).
  3. Generales: promedios del conjunto (quórum, asistencia, votaciones, puntos tratados) y datos de la copropiedad.

Ventana emergente para proyectar

Pulse Abrir tablero en ventana emergente. Muestra solo lo esencial (quórum, orden del día, votación en curso, poderes) en letra grande, sin el resto de la aplicación: arrástrela al proyector o a la pantalla compartida de la reunión virtual. Doble clic para pantalla completa. Si el navegador la bloquea, permita las ventanas emergentes para este sitio.

ImportanteEl tablero lee los datos de este mismo navegador: ábralo desde el equipo donde se lleva la asamblea. ⬇ Descargar Excel exporta asambleas, votaciones y asistencia.

G27Guía 27 · Control de silla vacía: verificar presencia antes de votar

Para qué sirve: quien se registra y luego se va sigue contando en el quórum y en la base de la votación; si el quórum real baja del requerido, las decisiones no serían válidas. Este control deja contar solo a quienes siguen en la reunión.

Verificación de presencia (código de 6 dígitos)

Más simple para el votante (V4.6)Quien ya tiene abierta su pantalla de votación no necesita escanear otro QR: en esa misma pantalla aparece solo un teclado grande con la pregunta «¿Sigue presente?». Escribe los 6 números que se ven en la pantalla de la sala y listo. El código cambia cada minuto, por lo que no sirve reenviarlo a quien no está. Si toca «Ahora no», queda una barra naranja para volver. Tras 5 errores se bloquea unos minutos y debe acercarse a la mesa. El QR con documento sigue disponible como alternativa.
  1. En la votación (Fase 3), bloque Control de silla vacía → Verificar presencia antes de votar (también en Reportes → Silla vacía).
  2. Pulse Iniciar verificación. Aparece un QR y un código que cambia solo. Proyéctelo (puede usar el tablero emergente) o copie el mensaje para el chat de la reunión virtual.
  3. Cada persona escribe solo su documento y el código vigente. Solo pueden confirmar quienes ya estaban registrados como presentes.
  4. Pulse Cerrar y revisar. Marque a quien sigue en la sala sin celular y pulse Aplicar: los demás quedan como silla vacía.

Qué pasa con la silla vacía

  • Sale del quórum y de la base sobre la que se calcula el porcentaje de aprobación (50% o 70%); el cuadro de cada votación se recalcula.
  • El servidor le rechaza el voto por QR y su QR de votación deja de mostrarse.
  • Si vuelve y confirma en una nueva verificación, o usted pulsa Regresó en «Ajustes manuales», cuenta de nuevo.
  • Si el quórum baja del requerido, el sistema avisa y no deja abrir la votación («Sin quórum no se puede votar»).
  • Cada votación guarda la base con la que se cerró (presentes y coeficiente en ese momento).
RecomendaciónHaga la verificación antes de cada votación decisoria (50%/70%) y registre en el acta la hora. Quien se retira definitivamente puede marcarse como Se retiró en «Ajustes manuales» sin esperar una verificación.

G28Guía 28 · Convocatoria a asamblea: correo (Gmail) y WhatsApp

Para qué sirve: enviar a cada copropietario la convocatoria con fecha, hora, modalidad, orden del día y los informes (consejo, contador, revisor fiscal…), y llevar la constancia de quién la recibió. Solo superadmin y administrador.

Preparación (una sola vez): Gmail gratuito

  1. En la cuenta de Gmail del conjunto active la verificación en 2 pasos y cree una contraseña de aplicación (Cuenta de Google → Seguridad).
  2. En Convocatoria pulse Configurar Gmail, escriba el correo y esa contraseña de 16 letras y use Enviar correo de prueba. La clave se guarda cifrada.
  3. Gmail gratuito permite unos 500 correos por día; la aplicación limita por defecto a 400 y envía de a uno para no ser bloqueada.

Cada convocatoria

  1. Datos: fecha, hora, modalidad (presencial / virtual / mixta), lugar o enlace, tipo (ordinaria / extraordinaria) y quién convoca. El sistema avisa si falta la antelación legal (15 días calendario ordinaria; 5 días comunes extraordinaria; confírmelo con su abogado).
  2. Orden del día y Documentos: marque los informes de la gestión documental que viajan con la convocatoria.
  3. Destinatarios y envío: elija quién recibe; el sistema avisa qué unidades no tienen correo o celular. Enviar por correo manda a todos con una cola automática.
  4. WhatsApp (versión gratuita): cada persona tiene un botón que abre WhatsApp con el mensaje listo; usted solo pulsa enviar y queda marcado como enviado.
  5. Seguimiento: ver enviados, fallidos, abiertos y «confirmó recepción»; reintentar o descargar la constancia en Excel.

Novedades V4.7: credenciales, instructivo y poder

  • Credenciales por cédula: cada correo y cada página de convocatoria muestra, de forma enmascarada (solo los últimos 4 dígitos), las cédulas habilitadas de la unidad. Cada integrante inscrito entra al llamado a lista solo con SU cédula; un número que no esté en el listado es rechazado. Para que un familiar pueda ingresar, debe estar inscrito como copropietario en la lista de unidades.
  • Instructivo paso a paso (en el correo, en la página y como Word): cómo ingresar con el enlace o el QR, registrar la asistencia, mantenerse activo (la pantalla del celular queda encendida sola), confirmar presencia y votar.
  • Modelo de poder (Word): se adjunta al correo ya con el nombre del propietario y los datos de la asamblea, y se puede descargar desde la página. Indique en Datos el correo donde recibirá los poderes firmados y la fecha límite.
  • Checklist de documentos (pestaña 3): marque anexos estándar y los informes que recibirá cada copropietario; «Marcar todos / Ninguno»; opción de adjuntarlos también al correo (hasta 15 MB).
Para los mayoresEl enlace del correo abre una página de letra grande con todos los datos y los documentos y un botón «Confirmo que recibí».

G29Guía 29 · Convocatoria a consejo de administración

Para qué sirve: citar a las reuniones del consejo (ordinarias o extraordinarias) y saber quién asistirá. No usa QR ni llamado a lista. Menú Convocatoria a consejo (solo superadmin y administrador).

  1. Nueva convocatoria → Datos: tipo, número de sesión, fecha, hora, duración, modalidad (presencial, virtual o mixta), lugar o enlace, quién convoca, invitados y la antelación mínima de citación que fije su reglamento (el sistema avisa si falta).
  2. Orden del día: viene uno sugerido (quórum, acta anterior, informe del administrador, cartera y presupuesto, mantenimientos, convivencia, varios, cierre); edítelo.
  3. Miembros: agregue principales, suplentes e invitados con cargo, correo y celular; puede tomarlos de la lista de propietarios.
  4. Documentos: marque el acta anterior y los informes de apoyo del Gestor documental.
  5. Envío: correo (Gmail gratuito, el mismo que ya configuró en la convocatoria de asamblea), WhatsApp asistido o ambos.
  6. Seguimiento: cada miembro abre su enlace y pulsa Asistiré, No podré asistir o Presentar excusa (con nota). Verá cuántos asistirán, quién no abrió y podrá descargar la constancia en Excel.
ConsejoUse «Duplicar» en la lista para preparar la siguiente sesión. Guarde en el acta quiénes confirmaron y las excusas recibidas.