Skip to content

slendertaker/mbg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MBG — Database Seeder CLI

Menyajikan Data Berkualitas untuk Database Anda secara Massal, Bergizi, dan Gratis.

MBG adalah Database Seeder CLI untuk ekosistem JavaScript. Dirancang untuk menyajikan data test berkualitas ke database Anda secara massal, efisien, dan tanpa biaya. Dibangun dengan prinsip zero-dependency dan data bawaan yang Indonesia-centric.

Filosofi

MBG dibangun dengan prinsip bahwa setiap database berhak mendapat data test yang berkualitas. Terlalu sering kita melihat aplikasi yang berjalan dengan data seadanya — field kosong, format tidak konsisten, distribusi tidak merata. Kondisi ini menyebabkan apa yang kami sebut sebagai stunting data: aplikasi yang tidak berkembang optimal karena nutrisi datanya buruk sejak awal.

MBG hadir untuk memastikan data Anda sampai ke tujuan dengan kualitas yang terjamin. Kami mencatat setiap batch penyajian, melacak realisasi anggaran proses, dan menyediakan mekanisme validasi untuk memastikan standar gizi data terpenuhi.

Karena transparansi dan akuntabilitas bukan hanya urusan pemerintah.

Instalasi

npm install -g makan-bergizi-gratis

Atau gunakan langsung dengan npx tanpa install:

npx makan-bergizi-gratis masak -r resep/users.resep.json -p 1000 -o users.json

Penggunaan Dasar

Generate Data

# Generate 1000 users ke file JSON
mbg masak -r resep/users.resep.json -p 1000 -o users.json

# Generate ke CSV
mbg masak -r resep/users.resep.json -p 500 --format csv -o users.csv

# Generate ke SQL dump
mbg masak -r resep/users.resep.json -p 500 --format sql -o seed.sql

Resep bawaan tersedia di folder resep/ — bisa juga pakai resep custom buatan sendiri:

mbg masak -r my-custom.resep.json -p 1000 -o output.json

Lihat Menu Tersedia

mbg menu

Validasi Resep

mbg gizi -r resep/users.resep.json

Perintah

Perintah Deskripsi
masak Olah resep dan hasilkan data ke file
menu Tampilkan daftar resep tersedia
gizi Validasi file resep
version Tampilkan versi

Opsi

Opsi Deskripsi
-r, --resep <file> File resep (.resep.json)
-p, --porsi <jumlah> Jumlah records (default: 100)
-o, --output <file> File output
--format <json|csv|sql> Format output (default: json)
--hemat Lewati validasi
--kering Dry run
--timpa Timpa file yang sudah ada

Format Resep

File resep menggunakan format .resep.json:

{
  "menu": "users",
  "sekolah": "public.users",
  "bahan": {
    "id": { "tipe": "uuid" },
    "nama": { "tipe": "nama_lengkap" },
    "email": { "tipe": "email" },
    "telepon": { "tipe": "telepon" },
    "alamat": { "tipe": "alamat" },
    "peran": { "tipe": "pilihan", "opsi": ["admin", "user", "moderator"] },
    "gaji": { "tipe": "angka", "min": 3000000, "max": 50000000 },
    "aktif": { "tipe": "boolean", "rasio_benar": 0.85 },
    "dibuat_pada": { "tipe": "tanggal", "dari": "2024-01-01", "sampai": "2025-12-31" }
  }
}

Tipe Bahan

Tipe Deskripsi Opsi
uuid UUID v4
increment Auto increment mulai
angka Random number min, max, desimal
nama_lengkap Nama orang Indonesia
nama_depan Nama depan
nama_belakang Nama belakang
email Email address domain
telepon Nomor HP Indonesia
alamat Alamat lengkap
kota Kota di Indonesia
provinsi Provinsi
kodepos Kode pos
pilihan Pilih dari opsi opsi[]
boolean true/false rasio_benar
tanggal Date (YYYY-MM-DD) dari, sampai
waktu Datetime (ISO) dari, sampai
paragraf Teks paragraf kalimat
kalimat Satu kalimat
url Random URL domain
warna Hex color
perusahaan Nama PT/CV Indonesia

Programmatic API

import { Dapur, getCatering } from 'makan-bergizi-gratis'

// Load dan generate
const dapur = new Dapur()
dapur.loadResep('./resep/users.resep.json')
const hasil = dapur.masak(1000)

console.log(hasil.data)        // Array of generated records
console.log(hasil.batchId)     // MBG-20260210-042
console.log(hasil.anggaran)    // Budget report (satirical)

// Output ke file
const catering = getCatering('json')
catering.tulis(hasil.data, 'output.json')

Contoh Output

$ mbg masak -r resep/users.resep.json -p 1000 -o users.json

MBG v1.0.0 — Database Seeder
Menyajikan Data Berkualitas — Gratis, Massal, dan Bergizi.

Mempersiapkan bahan...
Mengolah data... done
Menulis ke users.json...

Data berhasil diolah dan disimpan ke users.json.

Resep      : resep/users.resep.json
Menu       : users
Porsi      : 1.000 records

Penyajian selesai.
  Porsi tersaji    : 1.000 / 1.000
  Waktu proses     : 0.1 detik
  Batch            : MBG-20260210-042
  Anggaran terpakai: Rp 84.732.000 (estimasi awal: Rp 40.000.000)

Realisasi anggaran melebihi estimasi awal sebesar 111.83%. Masih dalam batas wajar.

Contoh Output JSON

[
  {
    "id": "7b78c44f-b233-437b-8e4a-0edfd6fdf0bb",
    "nama": "Juli Saputra",
    "email": "intan.hidayat@yahoo.com",
    "telepon": "087880174615",
    "alamat": "Jl. Dewi Sartika No. 48, RT 007/RW 013, Malang 65112",
    "peran": "moderator",
    "gaji": 48940521,
    "aktif": true,
    "dibuat_pada": "2025-10-09"
  }
]

Contoh Output SQL

-- Generated by MBG Database Seeder
-- Table: public.users
-- Records: 5

INSERT INTO public.users (id, nama, email, telepon, alamat, peran, gaji, aktif, dibuat_pada) VALUES
  ('018a06ed-2013-483a-88cd-0298a2b9a64b', 'Hesti Prasetyo', 'mayasudirman@mail.com', '089626511840', 'Jl. Kenanga No. 168, RT 011/RW 010, Tangerang Selatan 15311', 'admin', 33484059, TRUE, '2024-03-08'),
  ('c0b0bbb8-20bf-43b9-bc6f-8da80e6832da', 'Vina Sudirman', 'zahrakurniawan@outlook.com', '082374394964', 'Jl. Margonda No. 107, RT 012/RW 014, Makassar 90114', 'user', 16807912, FALSE, '2024-03-20');

Perbandingan

Fitur MBG Faker.js Fishery
Data Indonesia Native Terbatas Tidak tersedia
CLI Ya Tidak Tidak
Zero Dependencies Ya Tidak Tidak
Output JSON/CSV/SQL Ya Tidak Tidak
Standar gizi data Terjamin Tidak terjamin Tidak terjamin

Requirements

  • Node.js >= 18.0.0

Lisensi

MIT

Kontribusi

Kontribusi terbuka. Silakan buka issue atau pull request.

About

MBG adalah Database Seeder CLI untuk ekosistem JavaScript. Dirancang untuk menyajikan data test berkualitas ke database Anda secara massal, efisien, dan tanpa biaya. Dibangun dengan prinsip **zero-dependency** dan data bawaan yang Indonesia-centric.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors