Skip to content

Latest commit

 

History

History
266 lines (203 loc) · 11.7 KB

File metadata and controls

266 lines (203 loc) · 11.7 KB


MonoGram
MonoGram

Si deseas leer este documento en otro lenguaje: Русский, 한국어, اُردو, English


MonoGram es un moderno, rápido y elegante cliente no oficial de Telegram para Android. Construido con Jetpack Compose y Material Design 3, entrega una experiencia nativa y fluida, empoderada por el proyecto oficial TDLib.

Important

En estos momentos, MonoGram se encuentra en desarrollo activo. Espera actualizaciones frecuentes, cambios en la arquitectura, y algún que otro bug.

Ayuda al proyecto en Boosty.


Capturas de Pantalla

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Características Clave

  • Cliente Independiente — No es un fork de Telegram para Android. MonoGram está construido completamente desde cero como un proyecto independiente.
  • Material Design 3 — Una bonita y adaptativa UI que se ve grandiosa en celulares, tablets y plegables.
  • Seguro — Almacenamiento local encriptado y bloqueo biométrico incluido.
  • Multimedia Rica — Reproducción de multimedia de alto rendimiento con ExoPlayer y Coil 3.
  • Rápido y Eficiente — Empoderado por Kotlin Coroutines y optimizado para ofrecer rendimiento.
  • Arquitectura Limpia — Separación clara de propósitos con capas de Domain, Data y Presentation.
  • Patrón MVI — Administración de estados predecible usando MVIKotlin.
  • Sin NFTs o Cripto — MonoGram nunca incluirá promociones sobre NFTs, regalos u otras características de Telegram que consideremos fuera del ámbito de una aplicacion de mensajería.

Comenzando

Sigue estos pasos para configurar el proyecto localmente.

Requisitos Previos

  • Android Studio: Ladybug o más nuevo (recomendado).
  • JDK: Java 17 o más nuevo.

1. Clona el Repositorio

git clone --recurse-submodules https://github.com/monogram-android/monogram.git
cd monogram

2. Configura las API Keys de Telegram

Para conectarse a los servidores de Telegram, necesitas tus propias credenciales API.

  1. Inicia sesión en my.telegram.org.
  2. Ve a API development tools.
  3. Crea una nueva aplicación para obtener tu App api_id y App api_hash.
  4. Crea un nuevo archivo llamado local.properties en el directorio raíz del proyecto. (si no existe).
  5. Agrega las siguientes líneas:
API_ID=12345678
API_HASH=your_api_hash_here

3. Configurar notificaciones

  1. Inicia sesión en la consola de Firebase.
  2. Crea un nuevo proyecto.
  3. Agrega una nueva aplicación con el applicationId que necesitas. Si tienes múltiples aplicaciones con diferentes IDs, crea múltiples aplicaciones de Firebase. Por defecto, el applicationId para compilaciones debug y release son diferentes.
  4. Descarga el archivo google-services.json y cópialo a la raíz de módulo app (monogram/app/google-services.json). Si creaste múltiples aplicaciones, solo copia la configuración más reciente.
  5. Ve a la sección Cloud Messaging.
  6. Ve a Manage service accounts.
  7. Selecciona la sección Keys en el tope de la ventana que se abre.
  8. Clickea en Add key y selecciona la opción JSON. Espera al archivo a descargarse.
  9. Vuelve a la pagina de la Telegram API donde recibiste tu App ID.
  10. Clickea en Update después de la sección FCM credentials.
  11. Sube el service account JSON en la página que se abre.

4. Primera Configuración: Compilar libvpx

Las animaciones requieren que libvpx esté compilado. Esto debe hacerse antes de iniciar una compilación de Gradle; de lo contrario, la compilación fallará.

  1. Cambia tu directorio de trabajo a presentation/src/main/cpp.
  2. En build.sh, añade tu ANDROID_NDK_HOME.
  3. Ejecuta build.sh y espera a que termine.

5. Compilar y Ejecutar

  1. Abre el proyecto en Android Studio.
  2. Aumenta los límites de indexado del IDE para que TdApi.java (el wrapper de TDLib) sea indexado correctamente. En Android Studio o IntelliJ IDEA, abre Help → Edit Custom Properties..., pega las siguientes líneas, y reinicia el IDE si es necesario:
# size in Kb
idea.max.intellisense.filesize=20480
# size in Kb
idea.max.content.load.filesize=20480
  1. Sincroniza Gradle.
  2. Selecciona la configuración de ejecución app.
  3. Conecta un dispositivo o inicia un emulador.
  4. Clickea Run.

Compilando TDLib

Si necesitas compilar TDLib desde el código fuente, primero, instala las dependencias necesarias. Para distribuciones basadas en Ubuntu o Debian:

sudo apt-get update
sudo apt-get install build-essential git curl wget php perl gperf unzip zip default-jdk cmake

Después ejecuta el script de compilación desde la raíz de tu proyecto:

./build-tdlib.sh

Contribuir

Damos la bienvenida a contribuciones! Dígase solución de bugs, mejorar la documentación, o sugerir nuevas características.

  1. Chequea las Incidencias — Busca incidencias abiertas o crea una nueva para discutir tus ideas.
  2. Trabaja desde develop — Crea tu rama desde develop y mantén tu trabajo basado en esa rama.
  3. Forkea y crea una rama — Forkea el repositorio y crea una rama de características.
  4. Estilo de Código — Sigue el estilo existente de código en Kotlin y directrices de Clean Architecture.
  5. Sube un PR — Abre un Pull Request a develop con una descripción clara de tus cambios.

Important

Reportar Bugs y Sugerir Características

  • Bugs — Abre una incidencia y usa la etiqueta [Bug] en el título (ej. [Bug] La aplicación se crashea al iniciar). También puedes buscar todos los bugs conocidos en el Bug Tracker.
  • Solicitud de Características — Abre una incidencia y usa la etiqueta [Feature] (ej. [Feature] Soporte para mensajes programados). Las solicitudes de características existentes se pueden encontrar en el Feature Board.

Traducciones

MonoGram le da la bienvenida a traducciones de la comunidad! Puedes contribuir con tu propio lenguaje y editar el archivo strings resource.

Las source strings se pueden encontrar en presentation/src/main/res/values/string.xml.

Para añadir un nuevo lenguaje, crea el correspondientevalues-<idioma>/string.xml file (ej. values-de/string.xml para el Alemán) y traduce las strings ahí. Abre un PR con tu traducción y nos encargaremos de mezclarla.


Stack Tecnológico

MonoGram aprovecha las últimas herramientras de desarrollo y librerías de Android:

Categoría Librerías
Lenguaje Kotlin
UI Toolkit Jetpack Compose (Material 3)
Arquitectura Decompose (Navigation), MVIKotlin
Inyección de Dependencias Koin
Asincronía Coroutines & Flow
Núcleo de Telegram TDLib (Telegram Database Library)
Carga de imágenes Coil 3
Multimedia Media3 (ExoPlayer)
Mapas MapLibre
Base de Datos local Room

Estructura del Proyecto

Este proyecto sigue una estructura multi-módulo para asegurarse de separar propósitos y escalabilidad:

Módulo Descripción
:app El módulo de la aplicación principal de Android.
:domain Módulo puro en Kotlin que contiene la lógica de trabajo, casos de uso e interfaces de repositorio.
:data Implementación de repositorios, fuentes de datos, e integración con TDLib.
:presentation Componentes de UI, pantallas y modelos de visión. (MVI Stores).
:core Clases comunes de utilidades y extensiones usadas entre módulos.
:baselineprofile Perfiles Baseline para optimizar el inicio de la app y el rendimiento.

Licencia

Este proyecto está licenciado bajo la GNU General Public License v3.0.