Reserva de reuniones en calendario en linea. -- 2

Job ID: 39566222

Budget: $30 – $250 USD

Está desarrollada la interfaz de usuario completa, que es funcional y estructurada, y aunque las partes de backend y lógica aún no están completamente terminadas, lo hecho hasta ahora es ordenado, reutilizable y fácil de continuar. Se proporciona todo el código fuente que he escrito hasta ahora.

Solución de reserva de calendario en línea.

Se requiere una aplicación en Python, instalada en Contabo, funcionando, operativa.
Se dispone del dominio (smartcal.one) y se proporciona el acceso a Contabo, las características del VPS son:
3 núcleos vCPU
8 GB RAM
75 GB NVMe
o 150 GB SSD
1 snapshot
32 TB de ancho de banda, Tráfico entrante ilimitado.

Como landing puede usar: https://preview--smartcal-one-scheduler.lovable.app/

Debe hacer lo siguiente:

1) El Super administrador (SA, debe tener acceso controlado por 2FA) creará usuarios a su discreción. Puede crear otros SA.
1.1 Datos del usuario: nombre, email (verificado), alias.
Cada usuario colocará una descripción suya, que se mostrará en la agenda disponible. Se disponibiliza imagen.
1.2 El SA puede hacer CRU sobre los usuarios.

2) Cada usuario (pueden existir muchos) tenga distintos horarios disponibles.
El usuario los define, por ejemplo, yo de 07:00 a 23:00 (todos los días) disponibles.
debe funcionar nativamente con 24:00 horas, nada de a.m. p.m.
Debe poder recuperar contraseña (contra el email).
Debe controlar zonas horarias.

3) El usuario debe definir siempre un calendario principal.
3.1 Flag para indicar si debe recibir un email con la agenda del día.
3.2 Flag para indicar la hora en que se envía el email.
3.3 Asociaso a su zona horaria.

4) Cada usuario podrá tener “n” calendarios. “n” = el SA indica general y particular. Esto es, todos tienen 3 calendarios, salvo Juan que tendrá 5.
Cada calendario tendrá un “cal.alias”, por ejemplo, “Trabajo”, “Particular”, “Universidad”.

5) Cada usuario podrá tener “n” agendas disponibles. “n” = el SA indica general y particular. Esto es, todos tienen 3 agendas disponibles, salvo Pedro que tendrá 5.
Cada usuario disponibilizará las agendas en tiempo, por ejemplo de 30 minutos, 45 y 60.
Existirá una url del estilo smartcal.one/nombre.alias
El SA aprobará cada nombre.alias, si hay versiones posteriores existirán listas negras sobre los nombre.alias
Se muestran los días hacia adelante con las ventanas disponibles.
Quienes vean la url podrán reservar una reunión, colocando su email para la reserva. Cada uno de estos emails podrá reservar “n” reuniones.agendadas. “n” = el SA indica general y particular. Esto es, todos tienen 3 agendas disponibles, salvo Pedro que tendrá 5.
Cada usuario definirá si tendrá bandas de cobertura de estas reuniones. bandas de cobertura = 15 minutos hacia arriba y 15 minutos hacia abajo. Los 15 los decide el usuario.
Una banda es para descansar.

6) Sincronizar calendarios (secundario al principal):
6.1 Siempre se sincroniza desde el secundario al principal.
6.2 En dos vías o en una vía. El usuario decide mediante un flag por email.
6.3 Ejemplo en video adjunto.
6.4 Respecto del asunto en las citas sincronizadas, debe permitir bloquear el asunto (debe colocar [Busy]) o clonarla.
6.5 Si clona el asunto, debe permitir colocar un prefijo, es e cal.alias. El prefijo es por calendario. Por ejemplo, uno de mis calendarios secundarios tendrá de prefijo "[USS]". O la sincronización parte con el Alias en paréntesis de corchetes, por ejemplo “[Universidad] “ y clonar el asunto. El prefijo es el cal.alias del punto 4.
Usted decide como se administra visualmente este punto. Si es con alternativas o bastará colocar entre comillas el "Busy" o el prefijo en comillas simples "alias".

7) Los calendarios pueden ser: Google Calendar, Outlook Calendar, Apple Calendar, otros, iCal, mailcow (yo uso este).
Debe resolver si algún email ha cambiado la clave (o que no tenga acceso al calendario) y solicitar que reingrese la clave. Por ejemplo uno de mis calendarios exige que se cambie la clave cada 7 días. Debe avisar por email.

8) Debe permitir crear (al usuario) una reunión (en cualquier calendario de los ingresados). Recordar que también los sincroniza.
8.1 Debe poder crear (CRU) equipos de emails. Puede existir que un email no exista en el programa, debe crear el equipo igual.
El SA administra cuantos.
8.2 Equipos de trabajo:
Cada usuario podrá tener “n” equipos. “n” = el SA indica general y particular. Esto es, todos tienen 3 equipos, salvo Diego que tendrá 5.
Al crear una reunión de un equipo debe mostrar las ventanas horarias disponibles. Si un email no está dentro del equipo se debe indicar, pero permitir crear la reunión.
8.3 Debe permitir crear reuniones con emails de cualquier no usuario.
8.4 Debe permitir indicar si la reunión es virtual o presencial.
8.5 Si la reunión es presencial asigna tiempo (valores en duro de 30, 45 o 60 minutos) de ruta antes y después, solo para él. Ese tiempo de ruta se indica en el calendario como una cita "[cal.alias] Ruta para cumplir el siguiente compromiso".
8.6 La ruta puede ser de retorno, considerarlo para la creación de esa cita en el calendario.
8.7 Debe permitir seleccionar alguna aplicación de reunión virtual, sincronizada con el usuario correspondiente (jitsy no exige usuario sincronizado).
8.8 Cuando un grupo tiene todos los usuarios registrados debe colocar un circulo verde y mostrar el nombre en verde y rojo si al menos uno de los emails no lo está. Al abrir el grupo debe marcar en rojo el email no registrado.

9) No es una herramienta que se comercialice, es de uso restringido.

10) Puede usar UI disponibles (preferencia por el azul), proponga usted, no habrá dificultad en esto.

11) Debe quedar documentado en github.

Sugiero revisar:
https://tidycal.com/
https://calendly.com/
cal.com

Gracias.
Related categories: Python VPS