App Generator CLI
Ein Befehlszeilen-Schnittstellen-Tool zum Generieren von Anwendungen in Vollstapel mit React Admin-Frontend und Supabase-Backend.
Aktualisierungen
2025-01-27 (DOCUSIGN + Web Version):
- Docusign -Integration hinzugefügt
- Die Webversion fügte hier mit Code auf Vercel gehostet: https://github.com/vivek100/webverion1
- Vercel -Funktionen für Backend für OpenAI -Anrufe und DocuSign -Integration hinzugefügt
2024-01-24 (Docker & Nginx-Integration):
- Die Bereitstellungsoptionen der Docker- und Nginx -Bereitstellung für Erstellen und Bearbeiten von Flows fügten hinzugefügt
- Unterstützung für die Container -Bereitstellung mit optionalem Nginx Reverse Proxy
- Automatische Portmanagement- und Containerkonfiguration
- Vereinfachte Bereitstellungsprozess mit einer einzigen Befehlsanlage
2024-01-16 (Flow bearbeiten):
- Einführte intelligente Update -Strategien zur Änderung vorhandener Anwendungen
- Der Versioning -Support für Anwendungsaktualisierungen wurde hinzugefügt
- Unterstützt zwei Hauptaktualisierungsansätze:
- Vollständige Regeneration: Vollständiger Wiederaufbau und beibehalten der Kernfunktionalität
- Anwendungsfall -Update: Ziele Änderungen an bestimmten Komponenten
- Smart Backup -System, das vor Änderungen Zeitstempelbackups erstellt
- Versionsverfolgung für mehrere Iterationen derselben Anwendung
2024-01-10 (optimierte KI-Generierungspipeline):
- Umstrukturierte KI -Generation von 2 Aufrufen zu 4 Fachanrufen:
- Anwendungsfallgenerierung: Konzentrieren Sie sich auf Geschäftslogik und Benutzerworkflows
- Entitätsmodellgenerierung: Datenbankschema und Beziehungen
- Scheindatenerzeugung: Testen Sie Daten und Benutzerszenarien
- Schnittstellenmodellgenerierung: UI -Komponenten und Layouts
- Vorteile:
- Verbesserte Genauigkeit durch spezielle Eingabeaufforderungen
- Bessere Fehlerhandhabung und Validierung zwischen Schritten
- Reduzierter Token -Nutzung pro Anruf
- Verbesserte Fähigkeit, den Kontext aufrechtzuerhalten
- Der ursprüngliche 2-Call-Ansatz wurde in den Legacy-Modus für rückwärts
2024-12-20 (reduzierte Token-Nutzung um 70% und Genauigkeit um 80%):
- Mit Umrissen integriert, um die strukturierte Ausgabe zu generieren, verwendet dies eine Methode, bei der die Logiten den Token, die nicht Teil der Ausgabe sind, eine niedrige oder null Wahrscheinlichkeit zugewiesen werden. Dies erfolgt kurz vor dem Erstellen des Tokens. Dies ermöglicht das Tool, um mit kleineren Modellen eine höhere Genauigkeitsleistung zu erzielen
- Die strukturierte Ausgabe wird dann verwendet, um den Frontend- und Backend -Code zu generieren, der Konfigurationsdateien ähnelt. Dies hilft beim Generieren des Codes mit weniger Token
- Die DB -Ausgabe ist ein JSON von Entitäten und ihre Beziehungen. Dies wird verwendet, um die SQL -Abfragen über Python -Code zu generieren und die SQL auszuführen, um Tabellen und Ansichten auf Supabase zu erstellen
- Der frontend strukturierte Ausgang ist um React -Admin und die Komponenten strukturiert. Dies wird verwendet, um den Frontend -Code mit Jinja2 -Vorlagen zu generieren
- Backend wird mit dem Supabase JS -Client über Dataproviders simuliert
- Zusammen ermöglicht dies dem Tool, den Frontend- und Backend-Code mit weniger Token, einer höheren Genauigkeit und einem kleineren Modell wie GPT-4O-Mini zu generieren
Merkmale
- Erzeugt vollständige React-Anwendungen mit Material-UI-Komponenten
- Integriert sich in Supabase für Backend Services
- Beinhaltet Authentifizierung und Autorisierung
- Erzeugt Crud Operations für Unternehmen
- Unterstützt benutzerdefinierte Domänenmodelle
- Enthält vorgefertigte Komponenten (Tabellen, Formulare, Diagramme usw.)
Voraussetzungen
- Python 3,8 oder höher
- Node.js und npm
- Supabase -Konto
- Docker (optional für Container -Bereitstellung)
- Nginx (optional für Reverse Proxy)
Docker & Nginx Setup (optional)
- Docker installieren:
# 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
- Basisbild erstellen:
# 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
- Installieren Sie 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
- Konfigurieren Sie die NGINX -Benutzerberechtigungen (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
Hinweis: Das Basisbild muss nur einmal erstellt werden, es sei denn, Sie ändern Änderungen an der Dockerfile. Dieses Basisbild enthält alle erforderlichen Abhängigkeiten und Konfigurationen, die als Grundlage für alle generierten Anwendungen verwendet werden.
Installation
- Klonen Sie das Repository
- Installieren Sie das Paket:
pip install -r requirements.txt
Verwendung
- Richten Sie Ihre Umgebungsvariablen in
.env ein:
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
Stellen Sie sicher, dass die folgenden Berechtigungen für Frontend insgesamt aggregierte Abfragen ausführen:
ALTER ROLE authenticator SET pgrst . db_aggregates_enabled = ' true ' ;
NOTIFY pgrst, ' reload config ' ;
- Generieren Sie eine Bewerbung mit 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. Verwenden des Legacy-Modus (2-Call-Ansatz):
python -m src.cli create " Create an expense tracker app " --use-legacy
C. Hinzufügen von benutzerdefiniertem Ausgangsverzeichnis:
python -m src.cli create " Create an expense tracker app " --output-dir " path/to/
outputfolder "
- Bearbeiten Sie eine vorhandene Bewerbung mit 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
- Ausführen der Anwendung:
A. Lokale Entwicklung (Standard):
cd output/{output_folder_name}/frontend
npm install
npm run dev B. Docker -Bereitstellung:
- Die Anwendung wird unter
http://localhost:<port> verfügbar sein - Der Port wird nach der Bereitstellung automatisch zugewiesen und angezeigt
C. Docker mit Nginx:
- Die Anwendung wird unter
http://localhost/{app_name} verfügbar sein - Nginx verarbeitet das Routing- und Lastausgleich
Bereitstellungsoptionen
Lokale Entwicklung
- Direkter NPM-basierter Entwicklungsserver
- Am besten für die Entwicklung und Prüfung
- Hot-Reloading aktiviert
Docker -Bereitstellung
- Container -Anwendung
- Isolierte Umgebung
- Automatisches Portmanagement
- Für die Produktion geeignet
Docker mit Nginx
- Reverse Proxy -Konfiguration
- Pfadbasierter Routing
- Lastausgleichsfähigkeit
- Verbessertes Produktionsaufbau
Versionskontrolle
- Anwendungen enthalten jetzt die Versionsverfolgung
- Versionsformat: v0, v1, v2, usw.
- Die Versionsnummerinkremente basieren auf dem Backup -Verlauf
- Verfolgt mehrere Iterationen derselben Anwendung
Projektstruktur
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
Flow bearbeiten
Mit dem Bearbeitungsflusssystem können Sie vorhandene Anwendungen ändern und gleichzeitig Konsistenz und Sicherheit beibehalten. Hier erfahren Sie, wie man es benutzt:
- Aktualisieren Sie eine vorhandene Anwendung:
python -m src.cli update " Add a dashboard for expense analytics "
- Das System wird:
- Analysieren Sie Ihre Änderungsanfrage
- Wählen Sie eine geeignete Aktualisierungsstrategie
- Erstellen Sie eine Sicherung Ihrer aktuellen Anwendung
- Wenden Sie die Änderungen an, während die Datenkonsistenz beibehalten wird
Aktualisieren Sie Strategien
Vollständige Regeneration
- Wird für wichtige architektonische Veränderungen verwendet
- Bewahrt die vorhandene Funktionalität beim Wiederaufbau der Anwendung
- Behält die Datenkonsistenz mit vorhandenen Modellen bei
Partielles Update
- Für gezielte Änderungen an bestimmten Komponenten
- Aktualisierungen nur betroffene Teile der Anwendung
- Unterstützt modulare Updates an:
- Anwendungsfälle und Workflows
- Entitätsmodelle und Beziehungen
- Mockdaten und testen Sie Benutzer
- Schnittstellenkomponenten
Sicherungssystem
- Automatische Sicherungen, die vor Änderungen erstellt wurden
- TIMESTAMPED BACKUP -Verzeichnisse:
backups/backup_YYYYMMDD_HHMMSS/ - Einfacher Rollback bei Bedarf
Generierte Anwendungsstruktur
Das Tool erzeugt eine React -Anwendung mit der folgenden Struktur:
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
Abhängigkeiten
CLI -Abhängigkeiten
- Typer [alle] == 0.9.0
- Pydantic == 2,6.1
- Numpy
- Umrisse
- 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
- Rich-Click == 1.7.3
- Inquirer == 3.2.4
- Colorama == 0.4.6
- Openai
Erzeugte Frontend -Abhängigkeiten
- Reagieren Sie 19.0.0
- Material-UI 6.1.10
- React Admin 5.4.1
- Wiederholungen 2.14.1
- Supabase JS Client 2.47.2
Beitragen
Beiträge sind willkommen! Bitte zögern Sie nicht, eine Pull -Anfrage einzureichen.
Lizenz
Dieses Projekt ist unter der MIT -Lizenz lizenziert - Einzelheiten finden Sie in der Lizenzdatei.