Project

eks-cent

0.0
No release in over 3 years
Eks-Cent adalah framework web minimalis yang menyediakan sistem routing canggih, manajemen session HMAC, dan proteksi keamanan bawaan menggunakan Eksa-Server sebagai engine utama.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

 Project Readme

Eks-Cent Framework ๐Ÿš€

Eks-Cent adalah framework web Ruby ringan yang terinspirasi oleh Rack. Dirancang untuk kecepatan, keamanan, dan kemudahan penggunaan tanpa dependensi eksternal yang berat.

Eks-Cent menggunakan Eksa-Server sebagai engine server bawaan untuk performa tinggi di lingkungan produksi.

โœจ Fitur Utama

  • ๐Ÿ›ค Advanced Routing: DSL rute yang bersih dengan dukungan parameter dinamis dan namespace.
  • ๐Ÿ” Security Pack:
    • Signed Sessions: Data session aman dengan HMAC-SHA256.
    • XSS Protection: Helper h otomatis untuk escape HTML di template.
    • Security Headers: Middleware bawaan untuk header Frame-Options, XSS-Protection, dll.
  • ๐ŸŽจ Templating: Integrasi native dengan ERB (Embedded Ruby).
  • ๐Ÿ“ฆ JSON Ready: Parsing otomatis untuk request body application/json.
  • โšก High Performance: Terintegrasi dengan Eksa-Server (Cluster mode & Workers).
  • ๐Ÿ›  CLI Tool: Jalankan aplikasi dengan perintah ekscentup layaknya rackup.

๐Ÿ“ฆ Instalasi

Tambahkan baris ini ke dalam Gemfile aplikasi Anda:

gem 'eks-cent'

Lalu jalankan:

gem install eks-cent

๐Ÿš€ Memulai Cepat

Buat file bernama config.eks:

# config.eks
use EksCent::Middleware::ContentSecurity
use EksCent::Middleware::Session
use EksCent::Middleware::Logger
use EksCent::Middleware::ShowExceptions

router = EksCent::Router.new do
  # Halaman Utama
  get '/' do |req, res|
    req.session['visits'] ||= 0
    req.session['visits'] += 1
    res.write "<h1>Halo! Anda sudah berkunjung #{req.session['visits']} kali.</h1>"
  end

  # Rute Dinamis
  get '/hello/:name' do |req, res|
    res.render 'welcome', name: req.params['name']
  end

  # API JSON
  namespace '/api' do
    post '/data' do |req, res|
      res.headers['Content-Type'] = 'application/json'
      res.write({ status: 'success', data: req.params }.to_json)
    end
  end
end

run router

Jalankan server:

./bin/ekscentup -p 3000

๐Ÿ›  Penggunaan CLI (ekscentup)

Opsi Deskripsi
-p, --port Menentukan port server (default: 3000)
-o, --host Menentukan host server (default: 0.0.0.0)
-w, --workers Jumlah worker untuk mode Cluster
-R, --reload Aktifkan auto-reload saat file berubah
-e, --env Set lingkungan (development atau production)
-L, --log Simpan log ke file tertentu

๐Ÿ›ก Mode Produksi

Untuk keamanan maksimal di produksi, pastikan Anda menyetel environment variable dan secret key:

export EKS_CENT_SECRET_KEY_BASE="kunci_rahasia_anda_yang_unik"
export RACK_ENV=production
./bin/ekscentup -p 80 -e production

๐Ÿงช Pengujian

Eks-Cent dilengkapi dengan suite pengujian yang lengkap. Untuk menjalankan semua tes:

ruby test/eks_cent_test.rb
ruby test/router_test.rb
ruby test/security_test.rb

๐Ÿ“„ Lisensi

Eks-Cent didistribusikan di bawah Lisensi MIT.