Generator Aplikasi CLI
Alat antarmuka baris perintah untuk menghasilkan aplikasi tumpukan penuh dengan react admin frontend dan backend Supabase.
Pembaruan
2025-01-27 (DocuSign + Versi Web):
- Menambahkan integrasi docuSign
- Menambahkan versi web yang dihosting di Vercel dengan kode di sini: https://github.com/vivek100/webverion1
- Menambahkan fungsi Vercel untuk backend untuk panggilan openai dan integrasi docuSign
2024-01-24 (integrasi Docker & Nginx):
- Menambahkan Opsi Penyebaran Docker dan Nginx untuk Buat dan Edit Aliran
- Dukungan untuk penyebaran yang dikemas dengan proxy terbalik Nginx opsional
- Manajemen Port Otomatis dan Konfigurasi Kontainer
- Proses penyebaran yang disederhanakan dengan pengaturan perintah tunggal
2024-01-16 (edit aliran):
- Memperkenalkan strategi pembaruan cerdas untuk memodifikasi aplikasi yang ada
- Menambahkan dukungan versi untuk pembaruan aplikasi
- Mendukung dua pendekatan pembaruan utama:
- Regenerasi penuh: membangun kembali lengkap saat menjaga fungsionalitas inti
- Gunakan Pembaruan Kasus: Modifikasi yang Ditargetkan untuk Komponen tertentu
- Sistem cadangan pintar yang membuat cadangan waktu sebelum berubah
- Pelacakan versi untuk beberapa iterasi dari aplikasi yang sama
2024-01-10 (pipa generasi AI yang dioptimalkan):
- Generasi AI yang direstrukturisasi dari 2 panggilan ke 4 panggilan khusus:
- Gunakan pembuatan kasus: fokus pada logika bisnis dan alur kerja pengguna
- Pembuatan Model Entitas: Skema dan Hubungan Database
- Pembuatan Data Mock: Uji Data dan Skenario Pengguna
- Generasi Model Antarmuka: Komponen dan Tata Letak UI
- Manfaat:
- Peningkatan akurasi melalui permintaan khusus
- Penanganan dan validasi kesalahan yang lebih baik antara langkah -langkah
- Mengurangi penggunaan token per panggilan
- Peningkatan kemampuan untuk mempertahankan konteks
- Pendekatan 2-panggilan asli dipindahkan ke mode Legacy untuk kompatibilitas ke belakang
2024-12-20 (pengurangan penggunaan token sebesar 70% dan akurasi sebesar 80%):
- Terintegrasi dengan garis besar untuk menghasilkan output terstruktur, ini menggunakan metode di mana logit diberi probabilitas rendah atau nol untuk token yang bukan bagian dari output, ini dilakukan tepat sebelum token dihasilkan. Ini memungkinkan alat untuk mendapatkan output akurasi yang lebih tinggi dengan model yang lebih kecil
- Output terstruktur kemudian digunakan untuk menghasilkan kode frontend dan backend yang semacam file konfigurasi seperti, ini membantu dalam menghasilkan kode dengan lebih sedikit token
- Output DB adalah JSON entitas dan hubungan mereka, ini digunakan untuk menghasilkan kueri SQL melalui kode Python dan menjalankan SQL untuk membuat tabel dan tampilan di Supabase
- Output terstruktur frontend terstruktur di sekitar react admin dan komponen, ini digunakan untuk menghasilkan kode frontend menggunakan template jinja2
- Backend disimulasikan menggunakan klien SupAbase JS melalui DataProviders
- Bersama-sama ini memungkinkan alat untuk menghasilkan kode frontend dan backend dengan lebih sedikit token, akurasi yang lebih tinggi dan dengan model yang lebih kecil seperti GPT-4O-Mini
Fitur
- Menghasilkan aplikasi reaksi lengkap dengan komponen material-UI
- Terintegrasi dengan Supabase untuk layanan backend
- Termasuk otentikasi dan otorisasi
- Menghasilkan operasi crud untuk entitas
- Mendukung model domain khusus
- Termasuk komponen yang sudah dibangun (tabel, formulir, grafik, dll.)
Prasyarat
- Python 3.8 atau lebih tinggi
- Node.js dan npm
- Akun Supabase
- Docker (opsional, untuk penyebaran yang dimasukkan)
- Nginx (opsional, untuk proxy terbalik)
Pengaturan Docker & Nginx (Opsional)
- Instal 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
- Bangun gambar dasar:
# 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
- Instal 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
- Konfigurasikan Izin Pengguna 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
Catatan: Gambar dasar perlu dibangun hanya sekali, kecuali jika Anda melakukan perubahan pada DockerFile. Gambar dasar ini berisi semua dependensi dan konfigurasi yang diperlukan yang akan digunakan sebagai fondasi untuk semua aplikasi yang dihasilkan.
Instalasi
- Klon Repositori
- Instal Paket:
pip install -r requirements.txt
Penggunaan
- Siapkan variabel lingkungan Anda di
.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
Pastikan izin berikut ditetapkan untuk Frontend untuk menjalankan kueri agregat:
ALTER ROLE authenticator SET pgrst . db_aggregates_enabled = ' true ' ;
NOTIFY pgrst, ' reload config ' ;
- Hasilkan aplikasi dengan 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. Menggunakan Mode Legacy (pendekatan 2-panggilan):
python -m src.cli create " Create an expense tracker app " --use-legacy
C. Menambahkan Direktori Output Kustom:
python -m src.cli create " Create an expense tracker app " --output-dir " path/to/
outputfolder "
- Edit aplikasi yang ada dengan 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
- Menjalankan aplikasi:
A. Pengembangan Lokal (Default):
cd output/{output_folder_name}/frontend
npm install
npm run dev B. Penyebaran Docker:
- Aplikasi akan tersedia di
http://localhost:<port> - Port secara otomatis ditetapkan dan ditampilkan setelah penempatan
C. Docker dengan nginx:
- Aplikasi akan tersedia di
http://localhost/{app_name} - Nginx menangani perutean dan penyeimbangan beban
Opsi penempatan
Pengembangan Lokal
- Server Pengembangan Berbasis NPM Langsung
- Terbaik untuk pengembangan dan pengujian
- Diaktifkan dengan pemuatan panas
Penyebaran Docker
- Aplikasi yang Dikemas
- Lingkungan yang terisolasi
- Manajemen Port Otomatis
- Cocok untuk produksi
Docker dengan nginx
- Konfigurasi proxy terbalik
- Routing berbasis jalur
- Kemampuan penyeimbangan beban
- Pengaturan produksi yang ditingkatkan
Kontrol Versi
- Aplikasi sekarang termasuk pelacakan versi
- Format Versi: V0, V1, V2, dll.
- Penambahan nomor versi berdasarkan riwayat cadangan
- Membantu melacak beberapa iterasi dari aplikasi yang sama
Struktur proyek
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
Edit aliran
Sistem aliran edit memungkinkan Anda untuk memodifikasi aplikasi yang ada sambil mempertahankan konsistensi dan keamanan. Inilah cara menggunakannya:
- Perbarui aplikasi yang ada:
python -m src.cli update " Add a dashboard for expense analytics "
- Sistem akan:
- Analisis Permintaan Perubahan Anda
- Pilih strategi pembaruan yang sesuai
- Buat cadangan aplikasi Anda saat ini
- Terapkan perubahan sambil mempertahankan konsistensi data
Perbarui strategi
Regenerasi penuh
- Digunakan untuk perubahan arsitektur utama
- Menjaga fungsionalitas yang ada saat membangun kembali aplikasi
- Mempertahankan konsistensi data dengan model yang ada
Pembaruan parsial
- Untuk perubahan yang ditargetkan ke komponen tertentu
- Pembaruan hanya mempengaruhi bagian aplikasi
- Mendukung pembaruan modular ke:
- Gunakan kasus dan alur kerja
- Model dan Hubungan Entitas
- Data tiruan dan uji pengguna
- Komponen antarmuka
Sistem cadangan
- Cadangan otomatis dibuat sebelum perubahan
- Direktori cadangan cadangan waktu:
backups/backup_YYYYMMDD_HHMMSS/ - Rollback yang mudah jika diperlukan
Struktur aplikasi yang dihasilkan
Alat ini menghasilkan aplikasi bereaksi dengan struktur berikut:
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
Dependensi
Ketergantungan CLI
- typer [semua] == 0.9.0
- pydantic == 2.6.1
- Numpy
- garis besar
- 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-klik == 1.7.3
- penanya == 3.2.4
- colorama == 0.4.6
- Openai
Dependensi frontend yang dihasilkan
- Bereaksi 19.0.0
- Bahan-UI 6.1.10
- React Admin 5.4.1
- Recharts 2.14.1
- Supabase JS Client 2.47.2
Berkontribusi
Kontribusi dipersilakan! Silakan mengirimkan permintaan tarik.
Lisensi
Proyek ini dilisensikan di bawah lisensi MIT - lihat file lisensi untuk detailnya.