CLI generador de aplicaciones
Una herramienta de interfaz de línea de comandos para generar aplicaciones de pila completa con React Admin Frontend y Supabase Backend.
Actualizaciones
2025-01-27 (DocUsign + Web Version):
- Integración de docusign agregada
- Se agregó la versión web alojada en Vercel con código aquí: https://github.com/vivek100/webverion1
- Funciones VERCE agregadas para backend para llamadas de OpenAI e integración de docusign
2024-01-24 (integración Docker & Nginx):
- Opciones de implementación de Docker y Nginx agregadas tanto para crear y editar flujos
- Soporte para la implementación contenedorizada con Nginx Reverse Proxy opcional
- Gestión automática de puertos y configuración de contenedores
- Proceso de implementación simplificado con configuración de comando único
2024-01-16 (Flujo de edición):
- Introducido estrategias de actualización inteligente para modificar las aplicaciones existentes
- Soporte de versiones agregado para actualizaciones de aplicaciones
- Admite dos enfoques de actualización principales:
- Regeneración completa: reconstrucción completa mientras preserva la funcionalidad central
- Actualización del caso de uso: modificaciones específicas a componentes específicos
- Sistema de copia de seguridad inteligente que crea copias de seguridad de marca de tiempo antes de los cambios
- Seguimiento de versión para múltiples iteraciones de la misma aplicación
2024-01-10 (tubería de generación de IA optimizada):
- Generación de IA reestructurada de 2 llamadas a 4 llamadas especializadas:
- Generación de casos de uso: centrado en la lógica comercial y los flujos de trabajo de los usuarios
- Generación de modelos de entidad: esquema de base de datos y relaciones
- Generación de datos simulados: prueba de datos y escenarios de usuario
- Generación de modelos de interfaz: componentes y diseños de la interfaz de usuario
- Beneficios:
- Precisión mejorada a través de indicaciones especializadas
- Mejor manejo de errores y validación entre pasos
- Uso de token reducido por llamada
- Capacidad mejorada para mantener el contexto
- El enfoque original de 2 llamas se trasladó al modo heredado para la compatibilidad hacia atrás
2024-12-20 (uso de token reducido en un 70% y precisión en un 80%):
- Integrado con los contornos para generar la salida estructurada, esto utiliza un método en el que los registros se le asignan probabilidad baja o cero a los tokens que no forman parte de la salida, esto se realiza justo antes de que se genere el token. Esto permite que la herramienta obtenga una mayor salida de precisión con modelos más pequeños.
- La salida estructurada se utiliza para generar el código de frontend y back -end que tipo archivos de configuración similares, esto ayuda a generar el código con menos tokens
- La salida de DB es un JSON de entidades y sus relaciones, esto se utiliza para generar las consultas SQL a través del código Python y ejecutar el SQL para crear tablas y vistas sobre Supabase
- La salida estructurada frontend se estructura alrededor de React Admin y los componentes, esto se utiliza para generar el código frontend usando plantillas Jinja2
- El backend se simula utilizando el cliente Supabase JS a través de Dataproviders
- Juntos, esto permite que la herramienta genere el código frontend y backend con menos tokens, mayor precisión y con un modelo más pequeño como GPT-4O-Mini
Características
- Genera aplicaciones reaccias completas con componentes de material-UI
- Se integra con Supabase para servicios de backend
- Incluye autenticación y autorización
- Genera operaciones crud para entidades
- Admite modelos de dominio personalizados
- Incluye componentes preconstruidos (tablas, formularios, gráficos, etc.)
Requisitos previos
- Python 3.8 o superior
- Node.js y npm
- Cuenta de Supabase
- Docker (opcional, para la implementación contenederizada)
- Nginx (opcional, para proxy inverso)
Configuración de Docker y Nginx (opcional)
- Instalar Docker:
# For Ubuntu
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
# For macOS/Windows
Download and install Docker Desktop from https://www.docker.com/products/docker-desktop
- Imagen base de construcción:
# Navigate to the project root directory
cd oneShotCodeGen
# Build the base image
docker build -t base-image -f base.Dockerfile .
# Verify the image was created
docker images | grep base-image
- Instalar nginx:
# For Ubuntu
sudo apt-get install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
# For macOS
brew install nginx
# For Windows
Download and install Nginx from http://nginx.org/en/download.html
- Configurar los permisos de usuario de NGINX (Linux/MacOS):
# Add your user to nginx group
sudo usermod -aG nginx $USER
# Ensure nginx config directory is writable
sudo chown -R $USER : $USER /etc/nginx/conf.d
Nota: La imagen base debe construirse solo una vez, a menos que realice cambios en DockerFile. Esta imagen base contiene todas las dependencias y configuraciones necesarias que se utilizarán como base para todas las aplicaciones generadas.
Instalación
- Clonar el repositorio
- Instale el paquete:
pip install -r requirements.txt
Uso
- Configure sus variables de entorno en
.env :
OPENAI_API_KEY=your_openai_api_key
SUPABASE_PROJECT_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_DB_PASSWORD=your_db_password
Asegúrese de que los siguientes permisos estén establecidos para Frontend para ejecutar consultas agregadas:
ALTER ROLE authenticator SET pgrst . db_aggregates_enabled = ' true ' ;
NOTIFY pgrst, ' reload config ' ;
- Genere una aplicación con Docker:
a. Latest version
# Just code generation
python -m src.cli create " Create an expense tracker app "
# With Docker only
python -m src.cli create " Create an expense tracker app " --docker
# With Docker and Nginx
python -m src.cli create " Create an expense tracker app " --docker --nginx
b. Uso del modo heredado (enfoque de 2 llamados):
python -m src.cli create " Create an expense tracker app " --use-legacy
do. Agregar directorio de salida personalizado:
python -m src.cli create " Create an expense tracker app " --output-dir " path/to/
outputfolder "
- Editar una aplicación existente con Docker:
# Just code generation
python -m src.cli edit < project_dir > --description " Add a dashboard for expense
analytics "
# With Docker only
python -m src.cli edit < project_dir > --description " Add a dashboard " --docker
# With Docker and Nginx
python -m src.cli edit < project_dir > --description " Add a dashboard " --docker --nginx
- Ejecutando la aplicación:
a. Desarrollo local (predeterminado):
cd output/{output_folder_name}/frontend
npm install
npm run dev b. Implementación de Docker:
- La aplicación estará disponible en
http://localhost:<port> - El puerto se asigna y se muestra automáticamente después de la implementación
do. Docker con Nginx:
- La aplicación estará disponible en
http://localhost/{app_name} - Nginx maneja el enrutamiento y el equilibrio de carga
Opciones de implementación
Desarrollo local
- Servidor de desarrollo basado en NPM directo
- Lo mejor para el desarrollo y las pruebas
- Relación caliente habilitada
Implementación de Docker
- Aplicación contenedora
- Ambiente aislado
- Gestión automática de puertos
- Adecuado para la producción
Docker con Nginx
- Configuración de proxy inversa
- Enrutamiento basado en la ruta
- Capacidad de equilibrio de carga
- Configuración de producción mejorada
Control de la versión
- Las aplicaciones ahora incluyen el seguimiento de las versiones
- Formato de versión: V0, V1, V2, etc.
- Incrementos de números de versión basados en el historial de copias de seguridad
- Ayuda a rastrear múltiples iteraciones de la misma aplicación
Estructura de proyectos
app-generator-cli/
├── src/ # Source code for the CLI
├── output/ # Generated applications
│ └── [timestamp]/ # Timestamp-based output directory
│ ├── frontend/ # React frontend application
│ ├── use_cases.json # Use case definitions
│ ├── entities.json # Entity model
│ ├── mock_users.json # Mock user data
│ ├── mock_data.json # Generated test data
│ ├── domain_model.json # Combined application model
│ ├── interface_model.json # UI/UX specifications
│ ├── sql/ # Generated SQL migrations
│ ├── src/ # Generated application source
│ └── generation.log # Generation process log
└── .env # Environment variables
Editar flujo
El sistema de flujo Editar le permite modificar las aplicaciones existentes mientras mantiene la consistencia y la seguridad. Aquí le mostramos cómo usarlo:
- Actualizar una aplicación existente:
python -m src.cli update " Add a dashboard for expense analytics "
- El sistema:
- Analice su solicitud de cambio
- Elija una estrategia de actualización adecuada
- Cree una copia de seguridad de su aplicación actual
- Aplicar los cambios mientras mantiene la consistencia de los datos
Actualizar estrategias
Regeneración completa
- Utilizado para los principales cambios arquitectónicos
- Preserva la funcionalidad existente mientras reconstruye la aplicación
- Mantiene la coherencia de los datos con los modelos existentes
Actualización parcial
- Para cambios específicos en componentes específicos
- Las actualizaciones solo afectaron las partes de la aplicación
- Admite actualizaciones modulares a:
- Casos de uso y flujos de trabajo
- Modelos y relaciones de entidad
- Simularse de datos y probar usuarios
- Componentes de la interfaz
Sistema de respaldo
- Copias de seguridad automáticas creadas antes de cualquier cambio
- Directorios de copia de seguridad de marca de tiempo:
backups/backup_YYYYMMDD_HHMMSS/ - Rollback fácil si es necesario
Estructura de aplicación generada
La herramienta genera una aplicación React con la siguiente estructura:
frontend/
├── src/
│ ├── components/ # Reusable UI components
│ │ ├── Button.jsx
│ │ ├── Card.jsx
│ │ ├── Chart.jsx
│ │ ├── Form.jsx
│ │ ├── Modal.jsx
│ │ └── Table.jsx
│ ├── pages/ # Application pages
│ ├── providers/ # Data and auth providers
│ └── App.js # Main application component
└── package.json # Project dependencies
Dependencias
Dependencias de CLI
- Typer [todos] == 0.9.0
- Pydantic == 2.6.1
- numpy
- contornos
- rico == 13.7.0
- python-dotenv == 1.0.0
- jinja2 == 3.1.3
- Supabase == 2.3.4
- asyncio == 3.4.3
- aiohttp == 3.9.3
- hacer clic rico == 1.7.3
- Inquirer == 3.2.4
- colorama == 0.4.6
- opadai
Dependencias frontend generadas
- Reaccionar 19.0.0
- Material-ui 6.1.10
- React Admin 5.4.1
- Rechartes 2.14.1
- Supabase JS Client 2.47.2
Que contribuye
¡Las contribuciones son bienvenidas! No dude en enviar una solicitud de extracción.
Licencia
Este proyecto tiene licencia bajo la licencia MIT; consulte el archivo de licencia para obtener más detalles.