CLI do gerador de aplicativos
Uma ferramenta de interface da linha de comando para gerar aplicativos de pilha completa com o React Admin Frontend e Supabase Backend.
Atualizações
2025-01-27 (DocUsign + Web Version):
- Adicionado Integração do Docusign
- Versão da web adicionada hospedada no vercel com código aqui: https://github.com/vivek100/webverion1
- Adicionado funções de vercel para back -end para chamadas do OpenAI e Integração Docusign
2024-01-24 (Integração Docker e Nginx):
- Adicionado opções de implantação do Docker e Nginx para fluxos de criação e edição
- Suporte para implantação de contêiner com proxy reverso nginx opcional
- Gerenciamento automático de portas e configuração de contêiner
- Processo de implantação simplificado com configuração de comando único
2024-01-16 (Fluxo de edição):
- Introduziu estratégias de atualização inteligente para modificar os aplicativos existentes
- Adicionado suporte de versão para atualizações de aplicativos
- Suporta duas abordagens principais de atualização:
- Regeneração completa: reconstrução completa ao preservar a funcionalidade principal
- Usar atualização do caso: modificações direcionadas para componentes específicos
- Sistema de backup inteligente que cria backups de registro de data e hora antes das mudanças
- Rastreamento de versão para múltiplas iterações do mesmo aplicativo
2024-01-10 (Pipeline de geração AI otimizado):
- Geração de IA reestruturada de 2 chamadas para 4 chamadas especializadas:
- Usar geração de casos: focado na lógica de negócios e nos fluxos de trabalho do usuário
- Geração do modelo de entidade: esquema e relacionamentos de banco de dados
- Geração de dados simulados: dados de teste e cenários de usuário
- Geração do modelo de interface: componentes e layouts da interface do usuário
- Benefícios:
- Precisão aprimorada por meio de avisos especializados
- Melhor manuseio de erros e validação entre as etapas
- Uso de token reduzido por chamada
- Capacidade aprimorada de manter o contexto
- A abordagem original de 2 chamadas mudou para o modo legado para compatibilidade com versões anteriores
2024-12-20 (uso de token reduzido em 70% e precisão em 80%):
- Integrado aos contornos para gerar a saída estruturada, isso usa um método em que os logits são atribuídos com baixa ou zero probabilidade aos tokens que não fazem parte da saída, isso é feito imediatamente antes que o token seja gerado. Isso permite que a ferramenta obtenha maior saída de precisão com modelos menores
- A saída estruturada é então usada para gerar o código de front -end e back -end, que é como arquivos de configuração, isso ajuda a gerar o código com menos tokens
- A saída do banco de dados é um JSON de entidades e seus relacionamentos, isso é usado para gerar as consultas SQL via código Python e executar o SQL para criar tabelas e visualizações no Supabase
- A saída estruturada do front -end é estruturada em torno do reacto de reação e os componentes, isso é usado para gerar o código de front -end usando modelos Jinja2
- O back -end é simulado usando o cliente Supabase JS via DataProviders
- Juntos, isso permite que a ferramenta gerar o código de front-end e back-end com menos tokens, maior precisão e um modelo menor como GPT-4o-mini
Características
- Gera aplicativos reativos completos com componentes de material-ui
- Integra -se ao Supabase para serviços de back -end
- Inclui autenticação e autorização
- Gera operações CRUD para entidades
- Suporta modelos de domínio personalizados
- Inclui componentes pré-construídos (tabelas, formulários, gráficos, etc.)
Pré -requisitos
- Python 3.8 ou superior
- Node.js e NPM
- Conta Supabase
- Docker (opcional, para implantação de contêiner)
- Nginx (opcional, para proxy reverso)
Docker & Nginx Setup (Opcional)
- Instale 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
- Construir imagem base:
# 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
- Instale o 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
- Configure as permissões de usuário 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: A imagem base precisa ser criada apenas uma vez, a menos que você faça alterações no DockerFile. Esta imagem base contém todas as dependências e configurações necessárias que serão usadas como base para todos os aplicativos gerados.
Instalação
- Clone o repositório
- Instale o pacote:
pip install -r requirements.txt
Uso
- Configure suas variáveis de ambiente em
.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
Certifique -se de que as seguintes permissões sejam definidas para que o front -end execute consultas agregadas:
ALTER ROLE authenticator SET pgrst . db_aggregates_enabled = ' true ' ;
NOTIFY pgrst, ' reload config ' ;
- Gere um aplicativo com o 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. Usando o modo herdado (abordagem de 2 chamadas):
python -m src.cli create " Create an expense tracker app " --use-legacy
c. Adicionando diretório de saída personalizado:
python -m src.cli create " Create an expense tracker app " --output-dir " path/to/
outputfolder "
- Edite um aplicativo existente com o 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
- Executando o aplicativo:
um. Desenvolvimento local (padrão):
cd output/{output_folder_name}/frontend
npm install
npm run dev b. Docker Deployment:
- O aplicativo estará disponível em
http://localhost:<port> - A porta é atribuída e exibida automaticamente após a implantação
c. Docker com Nginx:
- O aplicativo estará disponível em
http://localhost/{app_name} - Nginx lida com roteamento e balanceamento de carga
Opções de implantação
Desenvolvimento local
- Servidor de desenvolvimento direto baseado em NPM
- Melhor para desenvolvimento e teste
- Relatação a quente ativada
Implantação do Docker
- Aplicação de contêiner
- Ambiente isolado
- Gerenciamento automático de portas
- Adequado para produção
Docker com Nginx
- Configuração do proxy reverso
- Roteamento baseado em caminho
- Capacidade de balanceamento de carga
- Configuração aprimorada de produção
Controle de versão
- Os aplicativos agora incluem rastreamento de versão
- Formato da versão: v0, v1, v2, etc.
- Incrementos do número da versão com base no histórico de backup
- Ajuda a rastrear várias iterações do mesmo aplicativo
Estrutura do projeto
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 fluxo
O sistema de fluxo de edição permite modificar os aplicativos existentes, mantendo consistência e segurança. Veja como usá -lo:
- Atualize um aplicativo existente:
python -m src.cli update " Add a dashboard for expense analytics "
- O sistema irá:
- Analise seu pedido de mudança
- Escolha uma estratégia de atualização apropriada
- Crie um backup do seu aplicativo atual
- Aplicar as alterações, mantendo a consistência dos dados
Atualizar estratégias
Regeneração completa
- Usado para grandes mudanças arquitetônicas
- Preserva a funcionalidade existente durante a reconstrução do aplicativo
- Mantém a consistência dos dados com os modelos existentes
Atualização parcial
- Para alterações direcionadas em componentes específicos
- Atualizações apenas as partes afetadas do aplicativo
- Suporta atualizações modulares para:
- Usar casos e fluxos de trabalho
- Modelos e relacionamentos de entidades
- Dados simulados e usuários de teste
- Componentes da interface
Sistema de backup
- Backups automáticos criados antes de quaisquer alterações
- Diretórios de backup com registro de data e hora:
backups/backup_YYYYMMDD_HHMMSS/ - Rollback fácil, se necessário
Estrutura de aplicação gerada
A ferramenta gera um aplicativo REACT com a seguinte estrutura:
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
Dependências
Dependências da CLI
- Typer [tudo] == 0.9.0
- Pydantic == 2.6.1
- Numpy
- contornos
- Rich == 13.7.0
- python-dotenv == 1.0.0
- jinja2 == 3.1.3
- supabase == 2.3.4
- Asyncio == 3.4.3
- aiohttp == 3.9.3
- Clique rico == 1.7.3
- Inquirer == 3.2.4
- colorama == 0.4.6
- Openai
Dependências de front -end geradas
- React 19.0.0
- Material-UI 6.1.10
- Reactar Admin 5.4.1
- Recharts 2.14.1
- Supabase JS Client 2.47.2
Contribuindo
As contribuições são bem -vindas! Sinta -se à vontade para enviar uma solicitação de tração.
Licença
Este projeto está licenciado sob a licença do MIT - consulte o arquivo de licença para obter detalhes.