Skip to content

myaasiinh/flusgen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FlusGen πŸš€

flusgen is a Command-Line Interface (CLI) tool designed to automate Flutter project scaffolding. It helps developers maintain architectural consistency by generating predefined folder and file structures (e.g., MVVM) or custom layouts defined via JSON.


Screenshots & Demo

FlusGen Screenshot


πŸ“– Konsep Aplikasi (App Concept)

FlusGen lahir dari kebutuhan untuk mengotomatisasi proses boilerplate yang repetitif saat memulai fitur atau proyek baru di Flutter.

  • Penyelerasan Arsitektur: Menjamin setiap fitur mengikuti pola folder yang sama (seperti MVVM), mempermudah kolaborasi tim.
  • Structure as Code: Memungkinkan pengembang mendefinisikan seluruh struktur proyek dalam satu file JSON yang mudah dibagikan.
  • Efisiensi Alur Kerja: Mengurangi kesalahan pengetikan nama folder/file dan mempercepat fase inisialisasi proyek dari menit ke detik.

βš™οΈ Mekanisme Fitur (Feature Mechanisms)

1. Recursive Structural Generation

Mekanisme inti FlusGen adalah Rekursi Pohon Direktori. Tool ini akan menelusuri setiap key dan value dalam Map (baik internal maupun dari JSON):

  • Key: Dianggap sebagai nama Folder. Jika nilainya adalah Map lain, fungsi akan memanggil dirinya sendiri (rekursi) untuk membuat sub-folder.
  • Value (List): Dianggap sebagai kumpulan File yang harus dibuat di dalam folder tersebut.

2. JSON Mapping & Scaffolding

Fitur generate-structure-from-json menggunakan parser dart:convert untuk mengubah file eksternal menjadi struktur memori. Ini memungkinkan fleksibilitas penuh di mana pengembang dapat membuat proyek dengan pola Clean Architecture, Bloc, atau kustom tanpa menyentuh kode sumber FlusGen.

3. Synchronous File Operations

Semua operasi I/O (Create, Rename, Delete) dilakukan secara Synchronous (Sync). Hal ini dipilih untuk memastikan urutan operasi CLI yang prediktif dan mencegah race condition saat membuat folder induk sebelum sub-foldernya.


πŸ› οΈ Cara Kerja (How It Works)

Proses eksekusi FlusGen dibagi menjadi 4 tahap utama:

  1. Input Parsing: Menggunakan package args untuk menangkap perintah dari terminal (contoh: generate-structure).
  2. Configuration Loading:
    • Untuk perintah default, ia mengambil defaultStructure dari memory.
    • Untuk perintah JSON, ia membaca file .json, melakukan validasi, dan memparsingnya menjadi Map.
  3. Execution Engine: Generator (Folder & File Generator) mulai bekerja dari basePath (direktori saat ini) dan membangun struktur secara top-down.
  4. Feedback System: CLI memberikan feedback visual (emoji & status) untuk setiap folder/file yang berhasil dibuat atau jika terjadi error (seperti file tidak ditemukan).

✨ Fitur Utama (Key Features)

  • βœ… Standardized MVVM Structure: Generate otomatis folder core, data, dan features dengan pola MVVM.
  • βœ… Custom JSON Scaffolding: Membuat struktur apapun hanya dengan satu file deskriptor JSON.
  • βœ… CRUD Folder/File: Operasi cepat untuk tambah, hapus, dan ubah nama folder/file langsung dari CLI.
  • βœ… Recursive Creation: Mendukung pembuatan folder bersarang (nested folders) secara otomatis.
  • βœ… CLI Feedback: Notifikasi status operasional yang jelas di terminal.

πŸš€ Installation & Setup

1. Install FlusGen

Jalankan perintah ini di terminal Anda:

dart pub global activate flusgen

2. Configure PATH

Sangat disarankan untuk menambahkan path bin Dart ke Environment Variables Anda agar flusgen bisa dipanggil dari mana saja:

C:\Users\myaasiinh\AppData\Local\Pub\Cache\bin

πŸ›  Available Commands

Command Description Example
generate-structure Membuat struktur folder MVVM default flusgen generate-structure
generate-structure-from-json <file> Membuat struktur dari file JSON flusgen generate-structure-from-json setup.json
create-custom-folder <path> Membuat folder baru flusgen create-custom-folder lib/utils
rename-folder <old> <new> Mengubah nama folder flusgen rename-folder lib/data lib/repository
delete-folder <path> Menghapus folder (recursive) flusgen delete-folder lib/test_folder
create-custom-file <path> [content] Membuat file baru (opsional dengan konten) flusgen create-custom-file lib/main.dart
rename-file <old> <new> Mengubah nama file flusgen rename-file lib/old.dart lib/new.dart
delete-file <path> Menghapus file flusgen delete-file lib/unused.dart

πŸ“„ Contoh Struktur JSON (structure.json)

{
  "lib": {
    "core": {
      "constants": ["app_strings.dart", "app_colors.dart"],
      "utils": ["extensions.dart"]
    },
    "features": {
      "home": {
        "view": ["home_page.dart"],
        "view_model": ["home_vm.dart"]
      }
    }
  }
}

🀝 Contributing

Kami sangat terbuka untuk kontribusi! Silakan fork repository ini, buat branch baru, dan kirimkan Pull Request.

πŸ“œ License

Proyek ini dilisensikan di bawah MIT License.


🚧 Maintainer

GitHub
Ko-fi

About

Flutter_structure_generator automatically builds, modifies, and deletes the folder/file structure of a Flutter project using the MVVM pattern. πŸš€

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages