Idea Generator PRO is a cross-platform application designed to generate creative ideas based on customizable character and style parameters.
The project started as a desktop application and was later reorganized into a modular architecture with a shared business-logic layer and separate desktop and Android interfaces.
- Creative idea generation based on configurable parameters.
- Favorite ideas with local persistence.
- Generation history.
- Copyable generated results.
- English and Spanish interface support.
- Desktop interface using Tkinter.
- Android application using Kivy.
- Cross-platform sound handling.
- Input and output sanitization.
- Batch generation with UI feedback.
git clone https://github.com/R00TME0W/ideagen.git cd ideagen
python ui_desktop/main.py
The desktop version uses Tkinter and shares the same business logic located in:
core/
The project follows a separation-of-responsibilities approach:
ideagen/ ├── core/ │ ├── init.py │ ├── generator.py │ └── sound.py │ ├── mobile_kivy/ │ ├── core/ │ ├── main.py │ └── buildozer.spec │ ├── ui_desktop/ │ └── main.py │ ├── screenshots/ │ ├── desktop.png │ └── android.png │ ├── .gitignore └── README.md
### Separation of responsibilities
The `core/` module contains the application's business logic and does not depend on Tkinter or Kivy.
The desktop and Android interfaces use this shared logic and are responsible for handling their respective user interface components and events.
This architecture allows the same business rules to be maintained across multiple platforms without duplicating the application's core logic.
## Technologies
| Component | Technology |
|---|---|
| Programming language | Python |
| Desktop UI | Tkinter |
| Mobile UI | Kivy |
| Android build tool | Buildozer |
| Android build backend | python-for-android |
| Android API | 33 |
| Minimum Android API | 24 |
| Android architectures | ARM64-v8a / armeabi-v7a |
## Desktop Version
To run the desktop application:
```bash
cd ideagen
python ui_desktop/main.py
The desktop version uses Tkinter and shares the same core application logic found in core/.
The Android version uses Kivy for the user interface and Buildozer for APK packaging.
The project has been successfully compiled into an Android APK and tested on a compatible Android device.
The APK was successfully built using:
Python 3.11.9
Java 17
Buildozer 1.6.0
Kivy
Android SDK API 33
Android minimum API 24
Android NDK r28c
Compatibility note: Python 3.11.9 and Java 17 were used because they provide compatibility with the Buildozer and python-for-android toolchain used by this project.
Android builds are performed using Buildozer.
Linux is recommended for the Android build environment.
Create and activate a Python virtual environment:
python3.11 -m venv buildozer-env
source buildozer-env/bin/activateInstall the required build tools:
pip install buildozer cythonNavigate to the Android project:
cd mobile_kivyBuild the debug APK:
buildozer -v android debugThe first build may take some time because Buildozer downloads and configures the required Android SDK, NDK, and other dependencies.
After a successful build, the APK will be available in:
mobile_kivy/bin/
The generated APK can be transferred to a compatible Android device and installed manually for testing.
Alternatively, if the device is connected through USB and USB debugging is enabled:
buildozer android deploy runThe application stores favorites and generation history locally using JSON files:
favorites.json— saved favorite ideas.history.json— generation history.
JSON loading includes error handling for missing or invalid files.
The application currently supports:
- 🇺🇸 English
- 🇪🇸 Spanish
Interface strings are centralized using:
STRINGS["EN"]
STRINGS["ES"]This keeps interface text separate from the application's core logic and makes future language additions easier.
Sound handling is separated into:
core/sound.py
The implementation detects the current platform and avoids using Windows-specific dependencies on unsupported platforms.
Version: 0.1
Current project status:
- Functional desktop version.
- Functional Kivy mobile interface.
- Shared core business logic.
- Persistent favorites and history.
- English and Spanish interface support.
- Android APK successfully built with Buildozer.
- Android testing build available.
| Area | Improvement |
|---|---|
| Architecture | Separated business logic from platform-specific interfaces |
| Persistence | Added safe JSON loading and generation history |
| Internationalization | Added English and Spanish interface strings |
| Cross-platform support | Added platform-aware sound handling |
| Android | Added Kivy interface and Buildozer packaging |
| Reliability | Added input sanitization and generation-state feedback |
Potential improvements for future versions include:
- Export ideas as plain text.
- Share generated ideas directly from Android using
plyer. - Native Android sound and vibration support.
- Editable user templates for character and style variations.
- Light and dark themes.
- Adjustable font size.
- Cloud synchronization for favorites using an external backend or OAuth-based service.
- Generación de ideas creativas basada en parámetros configurables.
- Sistema de favoritos con persistencia local.
- Historial de ideas generadas.
- Resultados que pueden copiarse.
- Interfaz disponible en inglés y español.
- Interfaz de escritorio desarrollada con Tkinter.
- Aplicación Android desarrollada con Kivy.
- Manejo de sonido multiplataforma.
- Sanitización de entradas y resultados.
- Generación por lotes con retroalimentación visual de la interfaz.
git clone https://github.com/R00TME0W/ideagen.git cd ideagen
python ui_desktop/main.py core/
El proyecto utiliza una separación de responsabilidades:
ideagen/ ├── core/ │ ├── init.py │ ├── generator.py │ └── sound.py │ ├── mobile_kivy/ │ ├── core/ │ ├── main.py │ └── buildozer.spec │ ├── ui_desktop/ │ └── main.py │ ├── screenshots/ │ ├── desktop.png │ └── android.png │ ├── .gitignore └── README.md
### Separación de responsabilidades
El módulo `core/` contiene la lógica de negocio de la aplicación y no depende de Tkinter ni de Kivy.
Las interfaces de escritorio y Android utilizan esta lógica compartida y se encargan de sus respectivos componentes y eventos de interfaz.
Esta arquitectura permite mantener las mismas reglas de negocio en diferentes plataformas sin duplicar la lógica principal de la aplicación.
## Tecnologías
| Componente | Tecnología |
|---|---|
| Lenguaje de programación | Python |
| Interfaz de escritorio | Tkinter |
| Interfaz móvil | Kivy |
| Herramienta de compilación Android | Buildozer |
| Backend de compilación Android | python-for-android |
| Android API | 33 |
| API mínima de Android | 24 |
| Arquitecturas Android | ARM64-v8a / armeabi-v7a |
## Versión de Escritorio
Para ejecutar la aplicación de escritorio:
```bash
cd ideagen
python ui_desktop/main.py
La versión de escritorio utiliza Tkinter y comparte la misma lógica de aplicación ubicada en core/.
La versión Android utiliza Kivy para la interfaz y Buildozer para empaquetar la aplicación como APK.
El proyecto fue compilado exitosamente como APK de Android y probado en un dispositivo Android compatible.
El APK fue compilado utilizando:
Python 3.11.9
Java 17
Buildozer 1.6.0
Kivy
Android SDK API 33
Android minimum API 24
Android NDK r28c
Nota de compatibilidad: Se utilizaron Python 3.11.9 y Java 17 debido a su compatibilidad con las herramientas Buildozer y python-for-android utilizadas en el proyecto.
La compilación de Android se realiza mediante Buildozer.
Se recomienda utilizar Linux para el entorno de compilación.
Crear y activar un entorno virtual de Python:
python3.11 -m venv buildozer-env
source buildozer-env/bin/activateInstalar las herramientas necesarias:
pip install buildozer cythonEntrar al proyecto Android:
cd mobile_kivyCompilar el APK de depuración:
buildozer -v android debugLa primera compilación puede tardar debido a que Buildozer descarga y configura el Android SDK, NDK y otras dependencias necesarias.
Después de una compilación exitosa, el APK estará disponible en:
mobile_kivy/bin/
El APK generado puede transferirse a un dispositivo Android compatible e instalarse manualmente para realizar pruebas.
También puede instalarse directamente mediante USB si el dispositivo tiene habilitada la depuración USB:
buildozer android deploy runLa aplicación almacena localmente los favoritos y el historial mediante archivos JSON:
favorites.json— ideas guardadas como favoritas.history.json— historial de ideas generadas.
La carga de archivos JSON incluye manejo de errores para evitar fallos causados por archivos inexistentes o inválidos.
La aplicación actualmente admite:
- 🇺🇸 Inglés
- 🇪🇸 Español
Los textos de la interfaz se centralizan mediante:
STRINGS["EN"]
STRINGS["ES"]Esto mantiene los textos de interfaz separados de la lógica principal y facilita agregar nuevos idiomas en el futuro.
El manejo del sonido se encuentra separado en:
core/sound.py
La implementación detecta la plataforma actual y evita utilizar dependencias específicas de Windows en plataformas no compatibles.
Versión: 0.1
Estado actual:
- Versión de escritorio funcional.
- Interfaz móvil Kivy funcional.
- Lógica de negocio compartida.
- Persistencia de favoritos e historial.
- Interfaz disponible en inglés y español.
- APK de Android compilado exitosamente con Buildozer.
- Build de prueba disponible para Android.
| Área | Mejora |
|---|---|
| Arquitectura | Separación de la lógica de negocio de las interfaces específicas de cada plataforma |
| Persistencia | Carga segura de JSON e historial de generación |
| Internacionalización | Incorporación de textos de interfaz en inglés y español |
| Compatibilidad multiplataforma | Manejo del sonido según la plataforma |
| Android | Incorporación de interfaz Kivy y empaquetado mediante Buildozer |
| Confiabilidad | Sanitización de entradas y retroalimentación durante la generación |
Algunas mejoras consideradas para futuras versiones:
- Exportar ideas como archivos de texto.
- Compartir ideas directamente desde Android mediante
plyer. - Soporte nativo de sonido y vibración en Android.
- Plantillas editables para variaciones de personajes y estilos.
- Temas claro y oscuro.
- Tamaño de fuente ajustable.
- Sincronización de favoritos mediante un backend externo u OAuth.
Abraham Estrada
Master's student in Information Technology Management with a focus on Cybersecurity.
This project was developed as part of my continued work in software development, Python, cross-platform application development, and cybersecurity-oriented technical training.

