rakitin
v1.0.0
Published
CLI rakitin buat generate boilerplate modular backend ๐
Readme
๐ rakitin
๐ฎ๐ฉ Bahasa Indonesia
Deskripsi Proyek
rakitin adalah Command Line Interface (CLI) yang dirancang khusus untuk mempercepat proses pengembangan backend modular dengan Node.js dan Express.js. CLI ini membantu Anda menggenerate boilerplate kode untuk berbagai komponen aplikasi seperti modul, middleware, utilitas, dan konfigurasi, sehingga Anda dapat fokus pada logika bisnis inti aplikasi Anda.
Fitur Utama
rakitin menawarkan kemampuan generate kode untuk berbagai kebutuhan:
- Module: Membangun struktur modul aplikasi dengan dua pilihan arsitektur:
- Simple: Modul akan memiliki controller, service, dan router dalam satu direktori modul.
- Modular: Modul akan memiliki sub-direktori terpisah untuk controllers, services, models, dan routes, mendorong modularitas yang lebih ketat.
- Pilihan untuk mengintegrasikan ORM (Prisma, Sequelize, Mongoose, TypeORM).
- Middleware: Generate berbagai jenis middleware Express.js:
- Custom: Membuat middleware kosong yang dapat Anda isi dengan logika sendiri.
- auth: Middleware otentikasi menggunakan JWT.
- logger: Middleware untuk logging permintaan masuk ke konsol.
- error: Middleware penanganan error global.
- request-time: Middleware untuk mencatat waktu yang dibutuhkan untuk setiap permintaan.
- Util: Membuat file utilitas dengan berbagai fungsi yang sering digunakan:
- Custom: Membuat utilitas kosong.
- date: Fungsi-fungsi utilitas terkait tanggal (misalnya,
now,format,add,subtract,isBefore,isAfter). - string: Fungsi-fungsi utilitas terkait string (misalnya,
capitalize,kebabCase,camelCase,truncate,reverse). - number: Fungsi-fungsi utilitas terkait angka (misalnya,
clamp,isEven,isOdd,randomInt,toCurrency). - array: Fungsi-fungsi utilitas terkait array (misalnya,
unique,flatten,chunk,compact). - object: Fungsi-fungsi utilitas terkait objek (misalnya,
isEmpty,deepClone,merge). - file: Fungsi-fungsi utilitas terkait sistem file (misalnya,
readJson,writeJson,exists). - crypto: Fungsi-fungsi utilitas kriptografi (misalnya,
hashSHA256,randomHex). - uuid: Fungsi untuk generate UUID (misalnya,
generate,short). - env: Fungsi untuk membaca variabel lingkungan dari
.env(misalnya,get,requireEnv). - url: Fungsi untuk memparsing atau mendapatkan hostname dari URL.
- color: Fungsi untuk mengkonversi hex ke RGB.
- math: Fungsi matematika dasar (misalnya,
sum,average,max). - validation: Fungsi validasi dasar (misalnya,
isEmail,isUrl). - regex: Fungsi utilitas regex (misalnya,
matchAll,escape). - time: Fungsi utilitas terkait waktu (misalnya,
sleep,now).
- Config (Dalam Pengembangan): Fitur ini akan membantu dalam membuat file konfigurasi standar untuk berbagai kebutuhan aplikasi.
- Integrasi Router Utama (Dalam Pengembangan): Fitur ini akan mempermudah integrasi router modul yang baru dibuat ke dalam router utama aplikasi, mengurangi kerja manual.
Instalasi
Untuk menggunakan rakitin, pastikan Anda memiliki Node.js (versi >=18) dan npm terinstal di sistem Anda.
- Kloning repositori:
git clone [https://github.com/reinvy/rakitin.git](https://github.com/reinvy/rakitin.git) cd rakitin/rakitin-development # atau di mana pun Anda mengekstrak file - Instal dependensi:
npm install - Jalankan CLI secara lokal (opsional, untuk pengembangan/pengujian):
Atau, untuk membuatnya tersedia sebagai perintah globalnpm startrakitin:npm link
Penggunaan
Setelah instalasi, Anda dapat menjalankan rakitin dari terminal:
rakitinAnda akan disambut dengan prompt interaktif yang menanyakan "Apa yang ingin Anda generate?".
๐ Hai Sayang! Ini CLI rakitin-mu!
? Apa yang ingin Anda generate? (Use arrow keys)
โฏ Module
Middleware
Util
Config
Integrasi Router UtamaPilih fitur yang ingin Anda generate menggunakan tombol panah atas/bawah dan tekan Enter. CLI akan memandu Anda melalui prompt tambahan sesuai dengan pilihan Anda.
Contoh Penggunaan: Membuat Modul
- Jalankan
rakitin. - Pilih
Module. - Masukkan nama modul Anda (misalnya,
User). - Pilih arsitektur (
SimpleatauModular). - Pilih apakah akan menggunakan ORM atau tidak.
- Jika memilih ORM, pilih ORM/Database yang diinginkan.
rakitin akan membuat struktur folder dan file yang sesuai di dalam direktori app/modules/user Anda.
Struktur Proyek
Berikut adalah gambaran umum struktur proyek yang dibuat atau diinteraksi oleh rakitin:
.
โโโ app/
โ โโโ modules/ # Folder untuk modul aplikasi Anda
โ โ โโโ [module-name]/
โ โ โโโ [module-name].controller.js (Simple Arch)
โ โ โโโ [module-name].service.js (Simple Arch)
โ โ โโโ [module-name].routes.js (Simple Arch)
โ โ โโโ controllers/ (Modular Arch)
โ โ โโโ services/ (Modular Arch)
โ โ โโโ models/ (Modular Arch)
โ โ โโโ routes/ (Modular Arch)
โ โโโ shared/ # Folder untuk komponen yang dibagikan antar modul
โ โ โโโ middlewares/ # Middleware aplikasi
โ โ โ โโโ [middleware-name].middleware.js
โ โ โโโ config/ # File konfigurasi
โ โ โโโ utils/ # File utilitas
โ โ โ โโโ [util-name].util.js
โ โ โโโ interfaces/ # Definisi interface/tipe (jika ada)
โ โโโ app.js # File inisialisasi aplikasi Express
โ โโโ server.js # Titik masuk utama aplikasi
โโโ bin/
โ โโโ rakitin.js # Executable CLI
โโโ lib/
โ โโโ generator/ # Logika untuk generate berbagai fitur
โ โ โโโ config/ # Logika generator Config (Dalam Pengembangan)
โ โ โโโ middleware/
โ โ โโโ module/
โ โ โโโ router/ # Logika generator Router Utama (Dalam Pengembangan)
โ โ โโโ util/
โ โโโ constants.js # Definisi path konstan
โ โโโ prompt.js # Logika prompt interaktif
โ โโโ utils.js # Fungsi utilitas internal CLI
โโโ index.js # Logika utama CLI
โโโ package.json # Metadata proyek dan dependensi
โโโ package-lock.json # Resolusi dependensi
โโโ .gitignore # File yang diabaikan oleh GitLisensi
Proyek ini dilisensikan di bawah Lisensi MIT.
Kontribusi
Kontribusi dipersilakan! Jika Anda memiliki ide atau menemukan bug, silakan ajukan issue atau pull request.
Kontak
Author: Reinvy
๐ฌ๐ง English
Project Description
rakitin is a Command Line Interface (CLI) specifically designed to accelerate the development process of modular backend applications with Node.js and Express.js. This CLI helps you generate boilerplate code for various application components such as modules, middleware, utilities, and configurations, allowing you to focus on your application's core business logic.
Key Features
rakitin offers code generation capabilities for various needs:
- Module: Builds application module structures with two architecture options:
- Simple: Modules will have controllers, services, and routers within a single module directory.
- Modular: Modules will have separate sub-directories for controllers, services, models, and routes, promoting stricter modularity.
- Option to integrate ORMs (Prisma, Sequelize, Mongoose, TypeORM).
- Middleware: Generates various types of Express.js middleware:
- Custom: Creates an empty middleware that you can fill with your own logic.
- auth: Authentication middleware using JWT.
- logger: Middleware for logging incoming requests to the console.
- error: Global error handling middleware.
- request-time: Middleware for logging the time taken for each request.
- Util: Creates utility files with various commonly used functions:
- Custom: Creates an empty utility.
- date: Date-related utility functions (e.g.,
now,format,add,subtract,isBefore,isAfter). - string: String-related utility functions (e.g.,
capitalize,kebabCase,camelCase,truncate,reverse). - number: Number-related utility functions (e.g.,
clamp,isEven,isOdd,randomInt,toCurrency). - array: Array-related utility functions (e.g.,
unique,flatten,chunk,compact). - object: Object-related utility functions (e.g.,
isEmpty,deepClone,merge). - file: File system-related utility functions (e.g.,
readJson,writeJson,exists). - crypto: Cryptography utility functions (e.g.,
hashSHA256,randomHex). - uuid: Functions to generate UUIDs (e.g.,
generate,short). - env: Functions to read environment variables from
.env(e.g.,get,requireEnv). - url: Functions to parse or get hostname from a URL.
- color: Function to convert hex to RGB.
- math: Basic mathematical functions (e.g.,
sum,average,max). - validation: Basic validation functions (e.g.,
isEmail,isUrl). - regex: Regex utility functions (e.g.,
matchAll,escape). - time: Time-related utility functions (e.g.,
sleep,now).
- Config (Under Development): This feature will assist in creating standard configuration files for various application needs.
- Main Router Integration (Under Development): This feature will simplify the integration of newly created module routers into the application's main router, reducing manual effort.
Installation
To use rakitin, ensure you have Node.js (version >=18) and npm installed on your system.
- Clone the repository:
git clone [https://github.com/reinvy/rakitin.git](https://github.com/reinvy/rakitin.git) cd rakitin/rakitin-development # or wherever you extracted the files - Install dependencies:
npm install - Run the CLI locally (optional, for development/testing):
Or, to make it available as a globalnpm startrakitincommand:npm link
Usage
After installation, you can run rakitin from your terminal:
rakitinYou will be greeted with an interactive prompt asking "Apa yang ingin Anda generate?" (What do you want to generate?).
๐ Hai Sayang! Ini CLI rakitin-mu!
? Apa yang ingin Anda generate? (Use arrow keys)
โฏ Module
Middleware
Util
Config
Integrasi Router UtamaSelect the feature you want to generate using the up/down arrow keys and press Enter. The CLI will guide you through additional prompts based on your selection.
Usage Example: Creating a Module
- Run
rakitin. - Select
Module. - Enter your module name (e.g.,
User). - Choose the architecture (
SimpleorModular). - Choose whether to use an ORM or not.
- If choosing an ORM, select the desired ORM/Database.
rakitin will create the appropriate folder structure and files within your app/modules/user directory.
Project Structure
Here's an overview of the project structure created or interacted with by rakitin:
.
โโโ app/
โ โโโ modules/ # Folder for your application modules
โ โ โโโ [module-name]/
โ โ โโโ [module-name].controller.js (Simple Arch)
โ โ โโโ [module-name].service.js (Simple Arch)
โ โ โโโ [module-name].routes.js (Simple Arch)
โ โ โโโ controllers/ (Modular Arch)
โ โ โโโ services/ (Modular Arch)
โ โ โโโ models/ (Modular Arch)
โ โ โโโ routes/ (Modular Arch)
โ โโโ shared/ # Folder for components shared between modules
โ โ โโโ middlewares/ # Application middlewares
โ โ โ โโโ [middleware-name].middleware.js
โ โ โโโ config/ # Configuration files
โ โ โโโ utils/ # Utility files
โ โ โ โโโ [util-name].util.js
โ โ โโโ interfaces/ # Interface/type definitions (if any)
โ โโโ app.js # Express app initialization file
โ โโโ server.js # Main application entry point
โโโ bin/
โ โโโ rakitin.js # CLI executable
โโโ lib/
โ โโโ generator/ # Logic for generating various features
โ โ โโโ config/ # Config generator logic (Under Development)
โ โ โโโ middleware/
โ โ โโโ module/
โ โ โโโ router/ # Main Router Integration generator logic (Under Development)
โ โ โโโ util/
โ โโโ constants.js # Constant path definitions
โ โโโ prompt.js # Interactive prompt logic
โ โโโ utils.js # Internal CLI utility functions
โโโ index.js # Main CLI logic
โโโ package.json # Project metadata and dependencies
โโโ package-lock.json # Dependency resolution
โโโ .gitignore # Files ignored by GitLicense
This project is licensed under the MIT License.
Contributing
Contributions are welcome! If you have ideas or find bugs, please open an issue or submit a pull request.
Contact
Author: Reinvy
