novay/draft

A starter kit for Livewire projects.

Maintainers

Details

github.com/novay/draft

Source

Issues

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:laravel-package

0.0.1 2025-08-22 18:13 UTC

This package is not auto-updated.

Last update: 2025-08-23 16:28:42 UTC


README

Latest Version on Packagist Total Downloads License

Draft ini adalah paket siap pakai untuk Laravel, dirancang untuk mempercepat proses pembuatan proyek baru. Dengan satu perintah interaktif, Draft akan langsung memasang dan mengonfigurasi package-package penting yang umumnya selalu terpakai di hampir setiap proyek Laravel yang saya mulai. Ini adalah solusi untuk menyingkat waktu setting yang sering berulang!

📑 Daftar Isi

✨ Fitur Utama

⚡ Cara Pasang

Tambahkan package ini ke proyek Laravel:

composer require novay/draft

Lakukan ini:

php artisan draft:install

Pilih mode instalasi: otomatis (semua fitur) atau manual (pilih satu per satu).

Nanti proses ini akan otomatis:

  • Menginstal dependensi Composer
  • Memublikasikan file config, view, dan aset
  • Memberikan instruksi tambahan jika ada konfigurasi manual

🛠 Cara Pakai

Perintah Artisan

  • php artisan draft:install Jalankan pemasangan untuk instalasi awal.

  • php artisan draft:publish {--force} Memublikasikan ulang views/assets dari package. Gunakan --force untuk menimpa file.

Helper Functions

Draft menyediakan beberapa helper global:

settings('app_name', 'Default Name'); // Ambil setting aplikasi
tglIndonesia('2025-08-22');           // Format tanggal Indonesia
rupiah(15000);                        // Format angka ke Rupiah
me();                                 // Ambil user yang sedang login
greetings();                          // "Selamat Pagi / Siang / Malam"

Konfigurasi Manual (Jika Diperlukan)

Beberapa fitur mungkin memerlukan sedikit konfigurasi di file proyek:

  1. Middleware (bootstrap/app.php)

    ->withMiddleware(function (Middleware $middleware) {
        $middleware->web([
            \Novay\Draft\Http\Middleware\PurifyInput::class, 
            \Spatie\Honeypot\ProtectAgainstSpam::class,
        ]);
    })
  2. Model User (app/Models/User.php)

    use Spatie\LaravelPasskeys\Models\Concerns\HasPasskeys;
    use Spatie\LaravelPasskeys\Models\Concerns\InteractsWithPasskeys;
    use Lab404\Impersonate\Models\Impersonate;
    use Yadahan\AuthenticationLog\AuthenticationLogable;
    
    class User extends Authenticatable implements HasPasskeys
    {
        use InteractsWithPasskeys, Impersonate, AuthenticationLogable;
    }
  3. Route (routes/web.php)

    Route::impersonate();
    Route::passkeys();
  4. JavaScript (resources/js/app.js)

    import './passkeys.js';

    Lalu jalankan npm run build.

  5. Environment (.env)

    MAIL_MAILER=resend
    RESEND_API_KEY=re_123456789
    
    SECRET_URI="https://btekno.app"
    SECRET_KEY="your-secret-key"
    
    BUNNY_SECRET_FILE="bunny"
    BUNNY_SECRET_KEY="bunnyPass"
  6. Livewire Component

    <livewire:logify::log-viewer />
    <x-authenticate-passkey />
    <livewire:passkeys />

📦 Publikasi File

Gunakan php artisan draft:publish untuk memublikasikan file. Anda juga bisa memilih kategori dengan tag:

php artisan vendor:publish --tag=draft-views       # Views Livewire
php artisan vendor:publish --tag=draft-views-volt  # Views Volt
php artisan vendor:publish --tag=draft-assets      # Assets JS/CSS
php artisan vendor:publish --tag=draft-config      # Config
php artisan vendor:publish --tag=draft-migrations  # Migrations

⚙️ Settings API

Package ini menyediakan API untuk menyimpan dan mengambil pengaturan aplikasi yang tersimpan di database dengan dukungan caching.

Metode Utama

Metode Deskripsi
all($fresh = false) Mengambil semua settings (dengan cache).
get($key, $default = null) Mengambil 1 setting dengan fallback.
set($key, $value) Menyimpan atau memperbarui setting.
has($key) Mengecek apakah setting tersedia.
remove($key) Menghapus setting tertentu.
flushCache() Membersihkan cache settings.
group($groupName) Mengatur namespace/group untuk settings.

Contoh Penggunaan

use Novay\Draft\Facades\Setting;

// Simpan setting
Setting::set('app_name', 'My Application');

// Ambil setting
$name = Setting::get('app_name', 'Default App');

// Hapus setting
Setting::remove('app_name');

// Ganti group
Setting::group('custom')->set('theme', 'dark');

🧩 Traits

RandomIds

Trait ini akan:

  • Menonaktifkan auto-increment bawaan Laravel.
  • Menghasilkan ID numerik acak 8 digit unik sebelum setiap model disimpan.
  • Menjamin keunikan dengan pengecekan ke database agar tidak ada duplikasi.

Contoh Penggunaan

use Illuminate\Database\Eloquent\Model;
use App\Traits\RandomIds;

class Invoice extends Model
{
    use RandomIds;
}

Hasil

$invoice = Invoice::create([
    'customer_id' => 123,
    'amount' => 50000,
]);

echo $invoice->id;
// Contoh output: 48291537

🎨 Kustomisasi

Draft dirancang agar mudah dikustomisasi:

  • Config: Semua file konfigurasi akan tersedia di folder config/.
  • Views: Setelah dipublikasikan, bebas edit di resources/views/.
  • Assets: File JS (misalnya passkeys.js) bisa diedit di resources/js/.

⚠️ Catatan Penting

  • Untuk mengaktifkan Passkey, pastikan nilai APP_URL di file .env sesuai dengan domain aplikasi yang sedang berjalan. Ketidaksesuaian akan menyebabkan fitur ini tidak berfungsi.
  • Gunakan opsi --force dengan hati-hati saat mempublikasikan ulang file agar tidak menimpa perubahan lokal Anda. Jadi, pastikan Anda sudah melakukan backup jika ada perubahan penting.

📄 Lisensi

Package ini dirilis di bawah Lisensi MIT.