Tiempito

Icono de un reloj.
A una interfaz de línea de comandos mostrando un comando para iniciar un sesión de concentración.

Tiempito es una aplicación que permite gestionar sesiones de concentración mediante un ‘daemon’ y una interfaz de línea de comandos. Dentro de sus capacidades está la creación de diferentes configuraciones de sesiones que tengan diferentes tiempos de concentración y descanso y en general sus capacidades se enfocan principalmente en la personalización.

Tecnologías Usadas

  • Logo característico de Dotnet.

    .NET 8

    Utilizado para la construcción del servicio, la CLI y una librería IPC.

  • Logo característico de Csharp.

    C#

    Lenguaje principal.

Características

  • Notificaciones

    Funcionan como alarmas para notificar al usuario de una sesión o tiempo completado.

  • Personalización

    Personalización de sesiones y notificaciones a través de archivos .conf.

  • Servicio (Daemon)

    Servicio en segundo plano que ejecuta y gestiona las sesiones.

  • Interfaz de Línea de Comandos (CLI)

    Herramienta del usuario para emitir comandos al servicio y administrar sus sesiones.

Plataformas Soportadas

  • Mascota oficial del sistema operativo Linux llamada Tux.

    Linux

  • Logo característico del sistema operativo Windows.

    Windows 10

  • Logo característico del sistema operativo Windows

    Windows 11

Objetivo

Ofrecer una aplicación poco convencional para la gestión de sesiones de estudio, de trabajo u otras labores por medio de una interfaz de línea de comandos y un servicio desarrollados a través de las características ofrecidas por el framework .NET.

Arquitectura

Esta aplicación está constituida a partir de una arquitectura sencilla que se asemeja a la ‘clean architecture’ que se divide en ‘backend’ y ‘frontend’, permitiendo ser modular y acoplar nuevas sistemas en la capa de presentación.

Servicio o daemon (Worker Service)

Es el núcleo de la aplicación y actúa de forma independiente, implementa un servidor que gestiona las peticiones y respuestas a través de una ‘named pipe’ de .NET, de tal forma que permite recibir comandos desde cualquier otro proceso.

Interfaz de Línea de Comandos (Aplicación de Consola)

Funciona como sistema de entrada del usuario para emitir los diferentes comando que requiera, la CLI está soportada sobre la librería ‘System.CommandLine’.

Librería IPC (Biblioteca)

Provee las clases e interfaces necesarias para estandarizar la comunicación fácilmente entre la CLI y el servicio facilitando el envío de peticiones y respuestas estructurados de forma básica mejorando la conversión y seguridad de la misma aplicación.

Desafíos

  • Notificaciones

    Situación

    Las diferencias de gestión de las notificaciones en Linux y Windows representó mayormente la creación de un diseño que permitiese estructurar e inyectar las dependencias únicamente necesarias de acuerdo con el sistema operativo.

    Solución

    A través de las directivas de preprocesador y clases utilitarias ofrecidas por .NET se inyectaron dinámicamente las interfaces y clases para Windows o Linux.