rustbasic-core 0.1.20

Core framework logic for RustBasic - A modern web framework for Rust
Documentation

🚀 RustBasic Core

📝 Kata Pengantar

Selamat datang di RustBasic Core. Crate ini adalah mesin inti (core engine) berkinerja tinggi yang menggerakkan seluruh ekosistem RustBasic Framework. Dirancang dengan arsitektur modular yang tangguh, rustbasic-core menyatukan kekuatan web server RustBasic, ORM asinkron Sea-ORM, mesin template MiniJinja, serta layanan keamanan terintegrasi seperti proteksi CSRF otomatis, sesi terenkripsi, tracing logger harian, dan pengiriman email SMTP menggunakan Lettre. Core engine ini memberikan fondasi yang sangat stabil, efisien, dan aman untuk membangun aplikasi web modern berskala besar.


🛠️ Script Contoh

A. Penambahan Dependensi ke Proyek Rust (Cargo.toml)

[dependencies]
rustbasic-core = "0.1"

B. Memuat Konfigurasi & Menjalankan Server Utama (src/main.rs)

use rustbasic_core::{Config, server, database, Router};

#[tokio::main]
async fn main() {
    // 1. Memuat konfigurasi environment (.env)
    let cfg = Config::load();

    // 2. Membuka koneksi database relasional asinkron
    let db = database::connect(&cfg).await;

    // 3. Mendefinisikan router web aplikasi
    let app_router = Router::new();

    // 4. Menjalankan server web RustBasic (mendengarkan port konfigurasi)
    // Catatan: session_store dan static_files disuplai sesuai konfigurasi proyek
    server::start_server(cfg, session_store, static_files, db, app_router).await;
}

C. Proteksi CSRF Otomatis & Sesi dalam Handler

use rustbasic_core::{Request, Response, IntoResponse, serde_json::json};

pub async fn handler_transaksi(req: Request) -> impl IntoResponse {
    // Mengambil user ID yang tersimpan dengan aman di session terenkripsi backend
    let user_id: Option<i32> = req.session.get("user_id");
    
    match user_id {
        Some(id) => format!("Memproses transaksi untuk user ID: {}", id),
        None => "Akses Ditolak: Sesi Tidak Valid".to_string()
    }
}

🔄 Perbandingan Pemakaian (Standard Rust vs RustBasic Core)

Berikut adalah perbandingan pemakaian dan kepraktisan antara menulis aplikasi web menggunakan library standar Rust secara langsung dan menggunakan pembungkus (wrapper) terintegrasi dari RustBasic Core:

Fitur / Karakteristik Menulis Manual (Standard Rust / Sea-ORM) Menggunakan RustBasic Core Wrapper
Inisiasi Koneksi DB Harus menulis puluhan baris kode pool connection manual. Cukup panggil database::connect(&cfg).await secara instan.
Sistem Proteksi CSRF Harus mengonfigurasi cookie & validator header manual. Terintegrasi langsung dan diaktifkan otomatis pada layer HTTP.
Manajemen Sesi Harus mengintegrasikan session store & enkripsi kunci sendiri. Menyediakan session terenkripsi kuat berbasis APP_KEY.
Penyajian Aset Web Menggunakan static folder konvensional yang lambat dibaca. Mendukung single-binary embedding (RAM memory cache).

📊 Tabel Ringkasan Fitur Inti RustBasic Core

Berikut adalah fitur utama yang disediakan secara modular oleh library rustbasic-core:

Nama Modul Inti Tanggung Jawab Utama Deskripsi Fitur & Fungsionalitas
server HTTP Server Engine Pembungkus web server RustBasic yang menangani request/response dengan efisien.
database Driver & Connection Pool Integrasi database Sea-ORM asinkron dengan fitur auto-migration tersemat.
security Proteksi CSRF & Encrypted Session Mengamankan data sesi pengguna menggunakan enkripsi Application Key (APP_KEY).
logger Tracing & Daily Rolling Logs Logger yang mengarsipkan riwayat log secara harian di folder storage/logs/.
mailer Layanan SMTP Mailer Mengirim email HTML/teks menggunakan mail transport terintegrasi (Lettre).

🏁 Penutup

Dengan menyediakan pustaka utilitas yang terintegrasi erat, RustBasic Core menyederhanakan kompleksitas pengembangan aplikasi web di Rust tanpa mengorbankan performa kecepatan dan keamanan. Pengembang dapat dengan mudah membangun aplikasi berskala produksi yang kokoh dengan baris kode yang jauh lebih ringkas.