eksa-framework 3.5.0 → 3.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dcdbcbe63e6742e7fbb13e46d2ccf2246cf982f0c2629e5bcc92d55a589fa5b1
4
- data.tar.gz: dcd215cb3d1f67905d4340e500beac73975a74e0dd704d02297517e23e2e048d
3
+ metadata.gz: 0bdcf04ff77acdbac3a0a4a47627a6c56e199759b59865bda47bf37cd70aff62
4
+ data.tar.gz: 720a0ab9be8096479a5f77ec725e8a13c137b6ff672f375437030a9814060d04
5
5
  SHA512:
6
- metadata.gz: 851932550945bac2ee2af7f2a7f9c38a31a239ddac3a3c15dea14a3e4cc667c2eef9ba8d18676a05aa5ffddd2ef7f112fcdc09d0f6511d09cc04fdf7208d08ca
7
- data.tar.gz: 34993c6e97685a403642476ae0b4065d931c186fa7aeaab16196351c95e4111286f49a08a8b94528bbf27fe227b55b63bc3db50b13fae801a059af5216e1ee27
6
+ metadata.gz: ffe8207254f46369eb601196393c6530c0e78261d74e64b2d7d1a60cccdb423e6406f451194627234e12946118e3bcf309ded54672daf0b4bc86dcd5d41450b0
7
+ data.tar.gz: c192aac6dbde4f0cc624c71479ba0183260435dbb2d5c2a6d94509c2ac033cb03a3a60efea1e3e1a5cfbdd1224fe7c2577083b0da442cdec81eea0c460fc91d6
@@ -0,0 +1,35 @@
1
+ # Kode Etik Kontributor
2
+
3
+ ## Komitmen Kami
4
+ Untuk menumbuhkan lingkungan yang terbuka dan ramah, kami sebagai kontributor dan pengelola berkomitmen untuk membuat partisipasi dalam proyek kami dan komunitas kami menjadi pengalaman yang bebas dari pelecehan bagi semua orang, tanpa memandang usia, ukuran tubuh, disabilitas, etnis, karakteristik seks, identitas dan ekspresi gender, tingkat pengalaman, pendidikan, status sosial ekonomi, kebangsaan, penampilan pribadi, ras, agama, atau identitas dan orientasi seksual.
5
+
6
+ ## Standar Kami
7
+ Contoh perilaku yang berkontribusi pada penciptaan lingkungan yang positif meliputi:
8
+ * Menggunakan bahasa yang ramah dan inklusif
9
+ * Menghargai perbedaan sudut pandang dan pengalaman
10
+ * Menerima kritik yang membangun dengan lapang dada
11
+ * Fokus pada apa yang terbaik bagi komunitas
12
+ * Menunjukkan empati terhadap anggota komunitas lainnya
13
+
14
+ Contoh perilaku yang tidak dapat diterima oleh peserta meliputi:
15
+ * Penggunaan bahasa atau citra seksual dan perhatian atau kemajuan seksual yang tidak diinginkan
16
+ * Komentar trolling, menghina/meremehkan, serta serangan pribadi atau politik
17
+ * Pelecehan publik atau pribadi
18
+ * Memublikasikan informasi pribadi orang lain, seperti alamat fisik atau elektronik, tanpa izin eksplisit
19
+ * Perilaku lain yang secara wajar dapat dianggap tidak pantas dalam lingkungan profesional
20
+
21
+ ## Tanggung Jawab Pengelola
22
+ Pengelola proyek bertanggung jawab untuk memperjelas standar perilaku yang dapat diterima dan diharapkan untuk mengambil tindakan korektif yang adil sebagai tanggapan atas setiap insiden perilaku yang tidak dapat diterima.
23
+
24
+ Pengelola proyek memiliki hak dan tanggung jawab untuk menghapus, mengedit, atau menolak komentar, commit, code, pengeditan wiki, issue, dan kontribusi lainnya yang tidak selaras dengan Kode Etik ini, atau untuk melarang sementara atau permanen setiap kontributor atas perilaku lain yang mereka anggap tidak pantas, mengancam, menyinggung, atau berbahaya.
25
+
26
+ ## Ruang Lingkup
27
+ Kode Etik ini berlaku baik di dalam ruang proyek maupun di ruang publik ketika seseorang mewakili proyek atau komunitasnya. Contoh mewakili proyek atau komunitas meliputi penggunaan alamat email resmi proyek, memposting melalui akun media sosial resmi, atau bertindak sebagai perwakilan yang ditunjuk pada acara online atau offline. Representasi suatu proyek dapat ditentukan lebih lanjut dan dijelaskan oleh pengelola proyek.
28
+
29
+ ## Penegakan
30
+ Instansi perilaku yang kasar, melecehkan, atau tidak dapat diterima dapat dilaporkan dengan menghubungi tim proyek. Semua keluhan akan ditinjau dan diselidiki serta akan menghasilkan tanggapan yang dianggap perlu dan tepat sesuai situasi. Tim proyek berkewajiban untuk menjaga kerahasiaan terkait pelapor insiden. Rincian lebih lanjut tentang kebijakan penegakan dapat diposting secara terpisah.
31
+
32
+ Pengelola proyek yang tidak mengikuti atau menegakkan Kode Etik dengan itikad baik dapat menghadapi dampak sementara atau permanen seperti yang ditentukan oleh anggota kepemimpinan proyek lainnya.
33
+
34
+ ## Atribusi
35
+ Kode Etik ini diadaptasi dari [Contributor Covenant](https://www.contributor-covenant.org), versi 1.4, tersedia di [https://www.contributor-covenant.org/version/1/4/code-of-conduct.html](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html).
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,92 @@
1
+ # Panduan Kontribusi Eksa Framework
2
+
3
+ Terima kasih telah tertarik untuk berkontribusi pada **Eksa Framework**! Kami sangat menghargai bantuan Anda untuk membuat micro-framework ini menjadi lebih baik, lebih cepat, dan lebih elegan.
4
+
5
+ ---
6
+
7
+ ## 🏔️ Filosofi Proyek
8
+ Eksa Framework didesain sebagai *micro-framework* MVC yang ringan namun kuat, dengan penekanan pada:
9
+ 1. **Kemudahan Penggunaan**: API yang intuitif untuk pengembang Ruby.
10
+ 2. **Keindahan Visual**: Antarmuka *Glassmorphism* yang modern secara bawaan.
11
+ 3. **Fleksibilitas**: Mendukung SQLite dan MongoDB Atlas secara transparan.
12
+
13
+ ---
14
+
15
+ ## 🚩 Cara Melaporkan Masalah (Bugs)
16
+ Jika Anda menemukan bug, silakan buat *Issue* di GitHub dengan informasi berikut:
17
+ - Penjelasan singkat tentang masalah.
18
+ - Langkah-langkah untuk mereproduksi bug.
19
+ - Hasil yang diharapkan vs hasil yang sebenarnya.
20
+ - Versi Ruby dan Eksa Framework yang digunakan.
21
+
22
+ ---
23
+
24
+ ## 💡 Mengusulkan Fitur Baru
25
+ Kami selalu terbuka untuk ide-ide baru! Untuk mengusulkan fitur:
26
+ 1. Buka *Issue* baru dan beri label `enhancement`.
27
+ 2. Jelaskan mengapa fitur tersebut berguna dan bagaimana cara kerjanya.
28
+ 3. Sertakan contoh penggunaan jika memungkinkan.
29
+
30
+ ---
31
+
32
+ ## 🛠️ Persiapan Pengembangan
33
+
34
+ ### 1. Fork & Clone
35
+ *Fork* repositori ini ke akun GitHub Anda, lalu lakukan *clone* secara lokal:
36
+ ```bash
37
+ git clone https://github.com/USERNAME/eksa_framework.git
38
+ cd eksa_framework
39
+ ```
40
+
41
+ ### 2. Instalasi Dependensi
42
+ Pastikan Anda memiliki Ruby (v3.0+) dan terinstal `bundler`.
43
+ ```bash
44
+ bundle install
45
+ ```
46
+
47
+ ### 3. Membuat Branch
48
+ Selalu buat *branch* baru untuk setiap fitur atau perbaikan bug:
49
+ ```bash
50
+ # Untuk fitur baru
51
+ git checkout -b feature/nama-fitur-anda
52
+
53
+ # Untuk perbaikan bug
54
+ git checkout -b bugfix/deskripsi-perbaikan
55
+ ```
56
+
57
+ ---
58
+
59
+ ## 🎨 Standar Kode & Dokumentasi
60
+ - Ikuti [Ruby Style Guide](https://github.com/rubocop/ruby-style-guide).
61
+ - Pastikan kode Anda bersih dan mudah dibaca.
62
+ - Tambahkan komentar jika logika kode cukup kompleks.
63
+ - Jika Anda menambahkan fitur baru, pastikan untuk memperbarui `README.md` atau dokumentasi terkait.
64
+
65
+ ---
66
+
67
+ ## 🧪 Pengujian (Testing)
68
+ Kami menggunakan **RSpec** untuk memastikan stabilitas framework. Sebelum mengirimkan *Pull Request*, pastikan semua test lulus:
69
+ ```bash
70
+ bundle exec rspec
71
+ ```
72
+ Sangat disarankan untuk menambahkan test baru jika Anda menambahkan fitur atau memperbaiki bug.
73
+
74
+ ---
75
+
76
+ ## 🚀 Proses Pull Request
77
+ 1. Pastikan kode Anda sudah di-test secara lokal.
78
+ 2. Kirimkan *Pull Request* (PR) ke *branch* `main` di repositori utama.
79
+ 3. Berikan deskripsi yang jelas tentang apa yang Anda rubah di dalam PR.
80
+ 4. Tim kami akan meninjau PR Anda sesegera mungkin.
81
+
82
+ ---
83
+
84
+ ## 🛡️ Keamanan
85
+ Keamanan adalah prioritas kami. Jika Anda menemukan kerentanan, harap baca [Kebijakan Keamanan](SECURITY.md) kami sebelum melaporkannya.
86
+
87
+ ---
88
+
89
+ ## 📜 Kode Etik
90
+ Harap bersikap sopan dan profesional dalam setiap interaksi di proyek ini. Kami ingin membangun komunitas yang inklusif dan ramah bagi semua pengembang. Dengan berpartisipasi, Anda diharapkan untuk mematuhi [Kode Etik](CODE_OF_CONDUCT.md) kami.
91
+
92
+ Terima kasih telah berkontribusi! 🚀
data/Gemfile CHANGED
@@ -11,6 +11,7 @@ gem "rackup"
11
11
  gem 'sqlite3'
12
12
  gem 'mongo', '~> 2.19'
13
13
  gem 'dotenv', '~> 2.8'
14
+ gem 'bigdecimal', '~> 3.1'
14
15
  gem 'kramdown'
15
16
  gem 'kramdown-parser-gfm'
16
17
  gem 'bcrypt', '~> 3.1'
data/Gemfile.lock CHANGED
@@ -3,6 +3,7 @@ GEM
3
3
  specs:
4
4
  base64 (0.3.0)
5
5
  bcrypt (3.1.21)
6
+ bigdecimal (3.3.1)
6
7
  bson (5.2.0)
7
8
  diff-lcs (1.6.2)
8
9
  dotenv (2.8.1)
@@ -45,6 +46,7 @@ PLATFORMS
45
46
 
46
47
  DEPENDENCIES
47
48
  bcrypt (~> 3.1)
49
+ bigdecimal (~> 3.1)
48
50
  dotenv (~> 2.8)
49
51
  kramdown
50
52
  kramdown-parser-gfm
@@ -60,6 +62,7 @@ DEPENDENCIES
60
62
  CHECKSUMS
61
63
  base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
62
64
  bcrypt (3.1.21) sha256=5964613d750a42c7ee5dc61f7b9336fb6caca429ba4ac9f2011609946e4a2dcf
65
+ bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218
63
66
  bson (5.2.0) sha256=c468c1e8a3cfa1e80531cc519a890f85586986721d8e305f83465cc36bb82608
64
67
  diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
65
68
  dotenv (2.8.1) sha256=c5944793349ae03c432e1780a2ca929d60b88c7d14d52d630db0508c3a8a17d8
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # ✨ Eksa Framework v3.5.0
1
+ # ✨ Eksa Framework v3.5.2
2
2
 
3
3
  [![Ruby Version](https://img.shields.io/badge/ruby-3.0+-red.svg)](https://www.ruby-lang.org/)
4
4
  [![Rack Version](https://img.shields.io/badge/rack-3.0+-blue.svg)](https://rack.github.io/)
@@ -9,9 +9,10 @@
9
9
 
10
10
  ---
11
11
 
12
- ## 🚀 Fitur Unggulan v3.5.0
12
+ ## 🚀 Fitur Unggulan v3.5.2
13
13
 
14
14
  * 💎 **Modern Glassmorphism UI**: Tampilan transparan yang indah dengan Tailwind CSS & Lucide Icons.
15
+ * 📱 **Mobile Responsive Navigation**: Sistem navigasi adaptif dengan mobile drawer yang elegan.
15
16
  * ⚡ **Rack 3 & Middleware Support**: Mendukung standar terbaru dan pembuatan pipeline middleware kustom.
16
17
  * 🛠️ **Powerful CLI**: Inisialisasi project (`eksa init`), jalankan server (`eksa run`), generate komponen, ganti database, dan **migrasi data** otomatis.
17
18
  * 💾 **Agnostic Database Engine**: Dukungan multi-database (**SQLite** & **MongoDB Atlas**) dengan sistem adapter yang otomatis dan transparan.
@@ -124,5 +125,15 @@ bundle exec rspec
124
125
 
125
126
  ---
126
127
 
128
+ ## 🤝 Kontribusi & Komunitas
129
+
130
+ Kami sangat terbuka untuk kontribusi dari siapa pun! Silakan baca panduan berikut sebelum memulai:
131
+
132
+ - **[Panduan Kontribusi](CONTRIBUTING.md)**: Langkah-langkah untuk berkontribusi kode.
133
+ - **[Kebijakan Keamanan](SECURITY.md)**: Cara melaporkan kerentanan secara privat.
134
+ - **[Kode Etik](CODE_OF_CONDUCT.md)**: Standar perilaku dalam komunitas kami.
135
+
136
+ ---
137
+
127
138
  ## 📜 Lisensi
128
- Proyek ini dilisensikan di bawah **MIT License**. Lihat file [LICENSE](https://github.com/IshikawaUta/eksa-framework/blob/main/LICENSE) untuk detail lebih lanjut.
139
+ Proyek ini dilisensikan di bawah **MIT License**. Lihat file [LICENSE](LICENSE) untuk detail lebih lanjut.
data/SECURITY.md ADDED
@@ -0,0 +1,31 @@
1
+ # Kebijakan Keamanan
2
+
3
+ ## Versi yang Didukung
4
+
5
+ Kami sangat menyarankan Anda untuk selalu menggunakan versi terbaru dari Eksa Framework untuk mendapatkan perbaikan keamanan terbaru.
6
+
7
+ | Versi | Didukung |
8
+ | ------- | ------------------ |
9
+ | 3.5.x | ✅ Ya |
10
+ | < 3.5 | ❌ Tidak |
11
+
12
+ ## Melaporkan Kerentanan
13
+
14
+ Kami menangani keamanan dengan sangat serius. Jika Anda menemukan kerentanan keamanan di Eksa Framework, harap **JANGAN** membuka *Issue* publik. Sebaliknya, harap laporkan kerentanan tersebut secara privat melalui email ke:
15
+
16
+ **security@eksa-framework.dev** (Contoh email, silakan sesuaikan jika ada yang spesifik)
17
+
18
+ Tolong sertakan detail berikut dalam laporan Anda:
19
+ - Deskripsi kerentanan.
20
+ - Langkah-langkah untuk mereproduksi masalah.
21
+ - Dampak potensial dari kerentanan tersebut.
22
+
23
+ ## Proses Respons
24
+
25
+ Setelah kami menerima laporan kerentanan:
26
+ 1. Kami akan mengonfirmasi penerimaan laporan dalam waktu 48 jam.
27
+ 2. Kami akan bekerja untuk memvalidasi dan memperbaiki masalah tersebut.
28
+ 3. Kami akan memberikan pembaruan secara berkala mengenai kemajuan perbaikan.
29
+ 4. Setelah perbaikan dirilis, kami akan memberikan kredit kepada pelapor (kecuali jika pelapor memilih untuk anonim).
30
+
31
+ Terima kasih telah membantu menjaga keamanan Eksa Framework!
@@ -30,6 +30,14 @@ class PagesController < Eksa::Controller
30
30
  render :kontak
31
31
  end
32
32
 
33
+ def conduct
34
+ render :conduct
35
+ end
36
+
37
+ def security
38
+ render :security
39
+ end
40
+
33
41
  def edit
34
42
  @id = params['id']
35
43
  @pesan = Pesan.cari(@id)
@@ -8,24 +8,24 @@
8
8
 
9
9
  <div class="space-y-6 text-white/80 leading-relaxed">
10
10
  <p class="text-lg text-center mx-auto max-w-2xl mb-10">
11
- <strong>Eksa Framework v3.5.0</strong> adalah <strong>micro-framework</strong> Ruby yang dibangun dari nol untuk mendemonstrasikan kekuatan arsitektur MVC, kesederhanaan Ruby, dengan keindahan antarmuka-antarmuka UI masa kini.
11
+ <strong>Eksa Framework v3.5.2</strong> adalah <strong>micro-framework</strong> Ruby yang dibangun dari nol untuk mendemonstrasikan kekuatan arsitektur MVC, kesederhanaan Ruby, dengan keindahan antarmuka-antarmuka UI masa kini.
12
12
  </p>
13
13
 
14
14
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mt-8">
15
15
  <div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
16
16
  <i data-lucide="cpu" class="w-6 h-6 text-indigo-300 mb-3"></i>
17
17
  <h3 class="font-bold text-white mb-2">Core Ruby & Rack 3</h3>
18
- <p class="text-sm">Dibangun di atas standar industri Rack tanpa bloatware framework berlapis.</p>
18
+ <p class="text-sm">Dibangun di atas standar industri Rack tanpa bloatware framework berlapis. Kompatibel dengan Ruby 3.4+.</p>
19
19
  </div>
20
20
  <div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
21
21
  <i data-lucide="database" class="w-6 h-6 text-emerald-300 mb-3"></i>
22
- <h3 class="font-bold text-white mb-2">Multi-DB Engine</h3>
23
- <p class="text-sm">Mendukung peralihan dinamis & migrasi data antara SQLite dan MongoDB Atlas.</p>
22
+ <h3 class="font-bold text-white mb-2">Agnostic DB Engine</h3>
23
+ <p class="text-sm">Mendukung peralihan dinamis & migrasi data antara SQLite dan MongoDB Atlas secara JIT.</p>
24
24
  </div>
25
25
  <div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
26
- <i data-lucide="layout-template" class="w-6 h-6 text-cyan-300 mb-3"></i>
27
- <h3 class="font-bold text-white mb-2">Glassmorphism UI</h3>
28
- <p class="text-sm">Komponen estetis bergaya efek kaca bawaan <strong>frosted-glass</strong>.</p>
26
+ <i data-lucide="shield-check" class="w-6 h-6 text-rose-300 mb-3"></i>
27
+ <h3 class="font-bold text-white mb-2">Security First</h3>
28
+ <p class="text-sm">Dukungan <code class="text-indigo-200">.env</code> native untuk mengamankan kredensial cloud dan rahasia aplikasi.</p>
29
29
  </div>
30
30
  <div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
31
31
  <i data-lucide="pen-tool" class="w-6 h-6 text-yellow-300 mb-3"></i>
@@ -33,23 +33,23 @@
33
33
  <p class="text-sm">Sistem artikel statis lengkap Front Matter YAML & Auto-Routing layaknya Jekyll.</p>
34
34
  </div>
35
35
  <div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
36
- <i data-lucide="shield-check" class="w-6 h-6 text-rose-300 mb-3"></i>
37
- <h3 class="font-bold text-white mb-2">Secure Auth</h3>
38
- <p class="text-sm">Otentikasi basis sessi pintar BCrypt untuk proteksi admin panel berlapis.</p>
36
+ <i data-lucide="search" class="w-6 h-6 text-cyan-300 mb-3"></i>
37
+ <h3 class="font-bold text-white mb-2">SEO & JSON-LD</h3>
38
+ <p class="text-sm">Optimasi mesin pencari otomatis dengan Sitemap, Robots.txt, dan Structured Data.</p>
39
39
  </div>
40
40
  <div class="bg-white/5 p-6 rounded-2xl border border-white/10 hover:bg-white/10 transition">
41
41
  <i data-lucide="layout-dashboard" class="w-6 h-6 text-fuchsia-300 mb-3"></i>
42
42
  <h3 class="font-bold text-white mb-2">CMS Dashboard</h3>
43
- <p class="text-sm">Pusat kendali admin internal untuk edit Markdown via <strong>web page</strong> langsung.</p>
43
+ <p class="text-sm">Pusat kendali admin internal untuk edit Markdown via <strong>web editor</strong> langsung.</p>
44
44
  </div>
45
45
  </div>
46
46
  </div>
47
47
 
48
48
  <div class="mt-12 pt-8 border-t border-white/10 flex justify-between items-center">
49
- <a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition">
49
+ <a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition font-bold">
50
50
  <i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Home
51
51
  </a>
52
- <span class="text-xs opacity-40 italic">Handcrafted with Ruby</span>
52
+ <span class="text-xs opacity-40 italic">Handcrafted with Ruby by IshikawaUta</span>
53
53
  </div>
54
54
  </div>
55
55
 
@@ -0,0 +1,52 @@
1
+ <div class="glass rounded-3xl p-10 text-white animate__animated animate__fadeIn">
2
+ <div class="flex items-center gap-4 mb-8">
3
+ <div class="p-4 bg-indigo-500 rounded-2xl shadow-xl">
4
+ <i data-lucide="shield" class="w-8 h-8"></i>
5
+ </div>
6
+ <h1 class="text-4xl font-extrabold tracking-tight">Kode Etik <span class="text-indigo-300">Kontributor</span></h1>
7
+ </div>
8
+
9
+ <div class="prose prose-invert max-w-none space-y-6 text-white/80 leading-relaxed">
10
+ <section>
11
+ <h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Komitmen Kami</h2>
12
+ <p>Untuk menumbuhkan lingkungan yang terbuka dan ramah, kami sebagai kontributor dan pengelola berkomitmen untuk membuat partisipasi dalam proyek kami dan komunitas kami menjadi pengalaman yang bebas dari pelecehan bagi semua orang, tanpa memandang usia, ukuran tubuh, disabilitas, etnis, karakteristik seks, identitas dan ekspresi gender, tingkat pengalaman, pendidikan, status sosial ekonomi, kebangsaan, penampilan pribadi, ras, agama, atau identitas dan orientasi seksual.</p>
13
+ </section>
14
+
15
+ <section>
16
+ <h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Standar Kami</h2>
17
+ <p>Contoh perilaku yang berkontribusi pada penciptaan lingkungan yang positif meliputi:</p>
18
+ <ul class="list-disc list-inside space-y-2 ml-4">
19
+ <li>Menggunakan bahasa yang ramah dan inklusif</li>
20
+ <li>Menghargai perbedaan sudut pandang dan pengalaman</li>
21
+ <li>Menerima kritik yang membangun dengan lapang dada</li>
22
+ <li>Fokus pada apa yang terbaik bagi komunitas</li>
23
+ <li>Menunjukkan empati terhadap anggota komunitas lainnya</li>
24
+ </ul>
25
+ </section>
26
+
27
+ <section>
28
+ <h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Perilaku Tidak Pantas</h2>
29
+ <p>Contoh perilaku yang tidak dapat diterima meliputi:</p>
30
+ <ul class="list-disc list-inside space-y-2 ml-4 text-rose-300">
31
+ <li>Pelecehan publik atau pribadi</li>
32
+ <li>Komentar menghina/meremehkan, serta serangan pribadi</li>
33
+ <li>Penggunaan bahasa atau citra seksual yang tidak diinginkan</li>
34
+ <li>Memublikasikan informasi pribadi orang lain tanpa izin</li>
35
+ </ul>
36
+ </section>
37
+
38
+ <section>
39
+ <h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Penegakan</h2>
40
+ <p>Instance perilaku yang kasar atau melecehkan dapat dilaporkan dengan menghubungi tim proyek. Semua keluhan akan diselidiki secara rahasia.</p>
41
+ </section>
42
+ </div>
43
+
44
+ <div class="mt-12 pt-8 border-t border-white/10 flex justify-between items-center">
45
+ <a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition font-bold">
46
+ <i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Home
47
+ </a>
48
+ <span class="text-xs opacity-40 italic">Adapted from Contributor Covenant v1.4</span>
49
+ </div>
50
+ </div>
51
+
52
+ <script>lucide.createIcons();</script>
@@ -6,16 +6,16 @@
6
6
  </div>
7
7
  <h1 class="text-4xl font-extrabold tracking-tight">Dokumentasi <span class="text-indigo-300">Eksa</span></h1>
8
8
  </div>
9
- <p class="text-white/60 text-lg">Panduan profesional instalasi dan pengembangan aplikasi menggunakan Eksa Framework v3.5.0.</p>
9
+ <p class="text-white/60 text-lg">Panduan profesional instalasi dan pengembangan aplikasi menggunakan Eksa Framework v3.5.2.</p>
10
10
  </div>
11
11
 
12
12
  <div class="grid grid-cols-1 md:grid-cols-3 gap-8 mb-12">
13
13
  <div class="space-y-4">
14
14
  <h3 class="font-bold text-indigo-300 uppercase text-xs tracking-widest">Memulai</h3>
15
15
  <ul class="space-y-2 text-sm">
16
- <li><a href="#instalasi" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="download" class="w-3 h-3"></i> Instalasi Gem</a></li>
16
+ <li><a href="#instalasi" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="download" class="w-3 h-3"></i> Instalasi & Run</a></li>
17
+ <li><a href="#struktur" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="folder-tree" class="w-3 h-3"></i> Struktur Project</a></li>
17
18
  <li><a href="#keamanan" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="shield" class="w-3 h-3"></i> Setup Keamanan</a></li>
18
- <li><a href="#struktur" class="hover:text-indigo-300 transition flex items-center gap-2"><i data-lucide="folder" class="w-3 h-3"></i> Struktur Project</a></li>
19
19
  </ul>
20
20
  </div>
21
21
  <div class="space-y-4">
@@ -38,7 +38,7 @@
38
38
 
39
39
  <section id="instalasi" class="mb-12 scroll-mt-24">
40
40
  <h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
41
- <i data-lucide="terminal" class="w-6 h-6 text-indigo-400"></i> Instalasi Cepat
41
+ <i data-lucide="terminal" class="w-6 h-6 text-indigo-400"></i> Instalasi & Eksekusi
42
42
  </h2>
43
43
  <div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10 space-y-3">
44
44
  <div>
@@ -56,11 +56,44 @@
56
56
  </div>
57
57
  </section>
58
58
 
59
+ <section id="struktur" class="mb-12 scroll-mt-24">
60
+ <h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
61
+ <i data-lucide="folder-tree" class="w-6 h-6 text-indigo-400"></i> Struktur Project
62
+ </h2>
63
+ <p class="text-white/60 mb-4 text-sm">Eksa mengikuti konvensi MVC yang sederhana namun powerful.</p>
64
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
65
+ <div class="bg-white/5 p-4 rounded-xl border border-white/10">
66
+ <code class="text-indigo-300 font-bold">app/</code>
67
+ <p class="text-xs text-white/50 mt-1">Folders: <code class="text-white">controllers/</code>, <code class="text-white">models/</code>, <code class="text-white">views/</code>.</p>
68
+ </div>
69
+ <div class="bg-white/5 p-4 rounded-xl border border-white/10">
70
+ <code class="text-indigo-300 font-bold">_posts/</code>
71
+ <p class="text-xs text-white/50 mt-1">Pusat konten blog berbasis Markdown (.md).</p>
72
+ </div>
73
+ <div class="bg-white/5 p-4 rounded-xl border border-white/10">
74
+ <code class="text-indigo-300 font-bold">public/</code>
75
+ <p class="text-xs text-white/50 mt-1">Asset statis: <code class="text-white">css/</code>, <code class="text-white">img/</code>, <code class="text-white">js/</code>.</p>
76
+ </div>
77
+ <div class="bg-white/5 p-4 rounded-xl border border-white/10">
78
+ <code class="text-indigo-300 font-bold">db/</code>
79
+ <p class="text-xs text-white/50 mt-1">Penyimpanan <code class="text-white">eksa_app.db</code> (SQLite) dan skrip inisialisasi.</p>
80
+ </div>
81
+ <div class="bg-white/5 p-4 rounded-xl border border-white/10">
82
+ <code class="text-indigo-300 font-bold">config.ru</code>
83
+ <p class="text-xs text-white/50 mt-1">Konfigurasi Rack, Middleware, dan Routing utama.</p>
84
+ </div>
85
+ <div class="bg-white/5 p-4 rounded-xl border border-white/10">
86
+ <code class="text-indigo-300 font-bold">.env</code>
87
+ <p class="text-xs text-white/50 mt-1">Variabel lingkungan untuk kredensial database & secret key.</p>
88
+ </div>
89
+ </div>
90
+ </section>
91
+
59
92
  <section id="keamanan" class="mb-12 scroll-mt-24">
60
93
  <h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
61
94
  <i data-lucide="shield-check" class="w-6 h-6 text-indigo-400"></i> Setup Keamanan (.env)
62
95
  </h2>
63
- <p class="text-white/60 mb-4 text-sm">Gunakan file <code class="text-indigo-200">.env</code> untuk menyimpan kredensial sensitif seperti URI MongoDB Atlas dan Secret Session.</p>
96
+ <p class="text-white/60 mb-4 text-sm">Gunakan file <code class="text-indigo-200">.env</code> untuk menyimpan kredensial sensitif.</p>
64
97
  <div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10 space-y-2">
65
98
  <p class="text-white/30"># Salin template example</p>
66
99
  <p class="text-indigo-300">cp .env.example .env</p>
@@ -69,6 +102,23 @@
69
102
  </div>
70
103
  </section>
71
104
 
105
+ <section id="routing" class="mb-12 scroll-mt-24">
106
+ <h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
107
+ <i data-lucide="git-branch" class="w-6 h-6 text-indigo-400"></i> Routing System
108
+ </h2>
109
+ <p class="text-white/60 mb-4 text-sm">Definisikan endpoint aplikasi Anda di <code class="text-indigo-200">config.ru</code>. Eksa mendukung parameter dinamis.</p>
110
+ <div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10 space-y-4">
111
+ <div>
112
+ <p class="text-white/30"># Struktur: add_route(path, controller, action)</p>
113
+ <p class="text-indigo-300 italic">app.add_route "/", PagesController, :index</p>
114
+ <p class="text-indigo-300 italic">app.add_route "/blog/:slug", BlogController, :show</p>
115
+ </div>
116
+ <div class="p-3 bg-white/5 rounded-lg border border-white/10">
117
+ <p class="text-xs text-white/50 italic">Eksa akan otomatis memetakan <code class="text-white">:slug</code> menjadi <code class="text-white">params['slug']</code> di dalam controller.</p>
118
+ </div>
119
+ </div>
120
+ </section>
121
+
72
122
  <section id="database" class="mb-12 scroll-mt-24">
73
123
  <h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
74
124
  <i data-lucide="database" class="w-6 h-6 text-indigo-400"></i> Agnostic Database Engine
@@ -90,14 +140,14 @@
90
140
  <h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
91
141
  <i data-lucide="zap" class="w-6 h-6 text-indigo-400"></i> Just-In-Time Schema Initialization
92
142
  </h2>
93
- <p class="text-white/60 mb-4 text-sm">Anda tidak perlu lagi menjalankan migrasi manual. Eksa akan mendeteksi dan membuat tabel/koleksi secara otomatis tepat saat model pertama kali diakses.</p>
143
+ <p class="text-white/60 mb-4 text-sm">Eksa mendeteksi dan membuat tabel/koleksi secara otomatis tepat saat model pertama kali diakses (JIT).</p>
94
144
  <div class="bg-black/40 rounded-2xl p-6 font-mono text-sm border border-white/10">
95
- <p class="text-white/30"># Definisikan saja di model</p>
96
- <p class="text-indigo-300">class Post < Eksa::Model</p>
145
+ <p class="text-white/30"># Contoh di Model</p>
146
+ <p class="text-indigo-300">class Message < Eksa::Model</p>
97
147
  <p class="text-indigo-300 italic ml-4">def self.setup_schema</p>
98
- <p class="text-indigo-300 italic ml-8">db.execute "CREATE TABLE IF NOT EXISTS ..."</p>
148
+ <p class="text-indigo-300 italic ml-8">db.execute "CREATE TABLE IF NOT EXISTS messages..."</p>
99
149
  <p class="text-indigo-300 italic ml-4">end</p>
100
- <p class="text-indigo-300">main</p>
150
+ <p class="text-indigo-300">end</p>
101
151
  </div>
102
152
  </section>
103
153
 
@@ -128,12 +178,12 @@
128
178
 
129
179
  <section id="seo" class="mb-12 scroll-mt-24">
130
180
  <h2 class="text-2xl font-bold mb-4 flex items-center gap-2">
131
- <i data-lucide="search" class="w-6 h-6 text-indigo-400"></i> SEO & JSON-LD (Structured Data)
181
+ <i data-lucide="search" class="w-6 h-6 text-indigo-400"></i> SEO & JSON-LD
132
182
  </h2>
133
- <p class="text-white/60 mb-4 text-sm">Eksa v3.5.0 secara otomatis menyematkan data terstruktur untuk ranking pencarian yang lebih baik.</p>
183
+ <p class="text-white/60 mb-4 text-sm">Eksa v3.5.2 menyematkan data terstruktur secara otomatis untuk ranking pencarian yang lebih baik.</p>
134
184
  <div class="bg-white/5 p-4 rounded-xl border border-white/10 flex items-center gap-3">
135
185
  <i data-lucide="check-circle-2" class="w-5 h-5 text-emerald-400"></i>
136
- <p class="text-xs text-white/70">Mendukung <code class="text-indigo-300">sitemap.xml</code>, <code class="text-indigo-300">robots.txt</code>, dan skema <code class="text-indigo-300">BlogPosting</code> secara dinamis.</p>
186
+ <p class="text-xs text-white/70">Mendukung <code class="text-indigo-300">sitemap.xml</code>, <code class="text-indigo-300">robots.txt</code> secara dinamis.</p>
137
187
  </div>
138
188
  </section>
139
189
 
@@ -142,7 +192,7 @@
142
192
  <span class="bg-indigo-500/20 text-indigo-300 text-[10px] px-3 py-1 rounded-full border border-indigo-500/30 uppercase tracking-tighter">Rack 3.0 Compatible</span>
143
193
  <span class="bg-emerald-500/20 text-emerald-300 text-[10px] px-3 py-1 rounded-full border border-emerald-500/30 uppercase tracking-tighter">Production Ready</span>
144
194
  </div>
145
- <p class="text-white/40 text-sm italic">Eksa Framework v3.5.0 Professional Documentation</p>
195
+ <p class="text-white/40 text-sm italic">Eksa Framework v3.5.2 Professional Documentation</p>
146
196
  <a href="/" class="inline-block mt-6 text-indigo-300 hover:text-white transition font-bold flex items-center justify-center gap-2">
147
197
  <i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Beranda
148
198
  </a>
@@ -2,7 +2,7 @@
2
2
  <div class="flex flex-col md:flex-row justify-between items-start md:items-center mb-8 gap-4">
3
3
  <div>
4
4
  <span class="inline-block bg-indigo-500/20 text-indigo-200 text-xs font-bold px-3 py-1 rounded-full mb-3 border border-indigo-500/30">
5
- v3.5.0 Alpha
5
+ v3.5.2 Alpha
6
6
  </span>
7
7
  <h1 class="text-4xl font-extrabold tracking-tight">
8
8
  Halo, <span class="text-indigo-300"><%= @nama %></span>!
@@ -194,14 +194,57 @@
194
194
 
195
195
  <div class="flex items-center gap-4">
196
196
  <a href="https://github.com/IshikawaUta" target="_blank" class="p-2 hover:bg-white/10 rounded-full transition"><i data-lucide="github" class="w-5 h-5"></i></a>
197
+ <!-- Mobile Menu Button -->
198
+ <button onclick="toggleMobileMenu()" class="md:hidden p-2 hover:bg-white/10 rounded-full transition relative z-50">
199
+ <i data-lucide="menu" id="menu-icon" class="w-6 h-6"></i>
200
+ </button>
197
201
  </div>
198
202
  </nav>
199
203
 
204
+ <!-- Mobile Menu Overlay -->
205
+ <div id="mobile-menu" class="fixed inset-0 z-[60] glass hidden animate__animated">
206
+ <div class="flex flex-col h-full p-8">
207
+ <div class="flex items-center justify-between mb-12">
208
+ <div class="flex items-center gap-3">
209
+ <div class="p-2 bg-indigo-500 rounded-xl shadow-lg shadow-indigo-500/50">
210
+ <i data-lucide="layers" class="w-6 h-6"></i>
211
+ </div>
212
+ <span class="text-xl font-extrabold tracking-tight">Eksa<span class="text-indigo-300">Framework</span></span>
213
+ </div>
214
+ <button onclick="toggleMobileMenu()" class="p-2 hover:bg-white/10 rounded-full transition">
215
+ <i data-lucide="x" class="w-6 h-6 text-white"></i>
216
+ </button>
217
+ </div>
218
+
219
+ <ul class="flex flex-col gap-6 text-2xl font-bold">
220
+ <li><a href="/" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="home" class="w-8 h-8"></i> Home</a></li>
221
+ <li><a href="/about" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="info" class="w-8 h-8"></i> About</a></li>
222
+ <li><a href="/docs" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="book-open" class="w-8 h-8"></i> Docs</a></li>
223
+ <li><a href="/posts" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="book" class="w-8 h-8"></i> Blog</a></li>
224
+ <li><a href="/kontak" class="flex items-center gap-4 hover:text-indigo-300 transition" onclick="toggleMobileMenu()"><i data-lucide="message-circle" class="w-8 h-8"></i> Contact</a></li>
225
+ </ul>
226
+
227
+ <div class="mt-auto pt-8 border-t border-white/10 flex flex-col gap-4">
228
+ <div class="flex justify-center gap-8">
229
+ <a href="/conduct" class="text-sm hover:text-white transition">Kode Etik</a>
230
+ <a href="/security" class="text-sm hover:text-white transition">Keamanan</a>
231
+ </div>
232
+ <div class="text-center opacity-40 text-xs">
233
+ Handcrafted with Ruby by IshikawaUta
234
+ </div>
235
+ </div>
236
+ </div>
237
+ </div>
238
+
200
239
  <main class="max-w-6xl mx-auto py-12 px-6 flex-grow animate__animated animate__fadeInUp">
201
240
  <%= @content %>
202
241
  </main>
203
242
 
204
243
  <footer class="py-8 text-center text-white/40 text-sm border-t border-white/5">
244
+ <div class="flex justify-center gap-6 mb-4">
245
+ <a href="/conduct" class="hover:text-white transition">Kode Etik</a>
246
+ <a href="/security" class="hover:text-white transition">Keamanan</a>
247
+ </div>
205
248
  <p>&copy; <%= Time.now.year %> <span class="font-bold text-white/60">Eksa Framework</span>. Crafted for speed.</p>
206
249
  </footer>
207
250
 
@@ -211,6 +254,26 @@
211
254
  // Inisialisasi ikon Lucide
212
255
  lucide.createIcons();
213
256
 
257
+ // Mobile Menu Toggle
258
+ function toggleMobileMenu() {
259
+ const menu = document.getElementById('mobile-menu');
260
+ const body = document.body;
261
+
262
+ if (menu.classList.contains('hidden')) {
263
+ menu.classList.remove('hidden');
264
+ menu.classList.remove('animate__fadeOutRight');
265
+ menu.classList.add('animate__fadeInRight');
266
+ body.style.overflow = 'hidden'; // Prevent scrolling
267
+ } else {
268
+ menu.classList.remove('animate__fadeInRight');
269
+ menu.classList.add('animate__fadeOutRight');
270
+ body.style.overflow = ''; // Restore scrolling
271
+ setTimeout(() => {
272
+ menu.classList.add('hidden');
273
+ }, 500);
274
+ }
275
+ }
276
+
214
277
  // Setup Copy Buttons for Code Blocks
215
278
  document.querySelectorAll('pre').forEach((block) => {
216
279
  // Wrap pre in a container
@@ -0,0 +1,75 @@
1
+ <div class="glass rounded-3xl p-10 text-white animate__animated animate__fadeIn">
2
+ <div class="flex items-center gap-4 mb-8">
3
+ <div class="p-4 bg-emerald-500 rounded-2xl shadow-xl">
4
+ <i data-lucide="lock" class="w-8 h-8"></i>
5
+ </div>
6
+ <h1 class="text-4xl font-extrabold tracking-tight">Kebijakan <span class="text-emerald-300">Keamanan</span></h1>
7
+ </div>
8
+
9
+ <div class="prose prose-invert max-w-none space-y-8 text-white/80 leading-relaxed">
10
+ <section>
11
+ <h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Versi yang Didukung</h2>
12
+ <p>Kami menyarankan penggunaan versi terbaru untuk mendapatkan perbaikan keamanan terbaik.</p>
13
+ <div class="overflow-hidden rounded-xl border border-white/10 bg-white/5 mt-4">
14
+ <table class="w-full text-left">
15
+ <thead class="bg-white/10 border-white/10 text-white">
16
+ <tr>
17
+ <th class="px-6 py-3 font-semibold">Versi</th>
18
+ <th class="px-6 py-3 font-semibold">Status Dukungan</th>
19
+ </tr>
20
+ </thead>
21
+ <tbody class="divide-y divide-white/10">
22
+ <tr class="border-white/10">
23
+ <td class="px-6 py-4">3.5.x</td>
24
+ <td class="px-6 py-4 text-emerald-300 font-bold">✅ Didukung (Aktif)</td>
25
+ </tr>
26
+ <tr class="opacity-50">
27
+ <td class="px-6 py-4">< 3.5</td>
28
+ <td class="px-6 py-4 text-rose-300">❌ Tidak Didukung</td>
29
+ </tr>
30
+ </tbody>
31
+ </table>
32
+ </div>
33
+ </section>
34
+
35
+ <section class="bg-indigo-500/10 border border-indigo-500/20 p-6 rounded-2xl">
36
+ <h2 class="text-2xl font-bold text-white mb-4 flex items-center gap-3">
37
+ <i data-lucide="alert-triangle" class="text-indigo-300"></i>
38
+ Melaporkan Kerentanan
39
+ </h2>
40
+ <p>Jika Anda menemukan masalah keamanan, harap <strong>JANGAN</strong> membuat isu publik. Laporkan secara privat melalui email:</p>
41
+ <p class="mt-4 text-center">
42
+ <a href="mailto:komikers09@gmail.com" class="inline-block no-underline bg-indigo-600 hover:bg-indigo-700 text-white px-8 py-3 rounded-xl font-bold transition shadow-lg">
43
+ security@eksa-framework.dev
44
+ </a>
45
+ </p>
46
+ </section>
47
+
48
+ <section>
49
+ <h2 class="text-2xl font-bold text-white mb-4 border-b border-white/10 pb-2">Proses Respons</h2>
50
+ <ul class="space-y-4">
51
+ <li class="flex gap-4">
52
+ <span class="flex-shrink-0 w-8 h-8 bg-white/10 rounded-full flex items-center justify-center font-bold">1</span>
53
+ <p>Konfirmasi penerimaan laporan dalam 48 jam.</p>
54
+ </li>
55
+ <li class="flex gap-4">
56
+ <span class="flex-shrink-0 w-8 h-8 bg-white/10 rounded-full flex items-center justify-center font-bold">2</span>
57
+ <p>Validasi dan pengerjaan perbaikan secara tertutup.</p>
58
+ </li>
59
+ <li class="flex gap-4">
60
+ <span class="flex-shrink-0 w-8 h-8 bg-white/10 rounded-full flex items-center justify-center font-bold">3</span>
61
+ <p>Pembaruan berkala kepada pelapor mengenai progres.</p>
62
+ </li>
63
+ </ul>
64
+ </section>
65
+ </div>
66
+
67
+ <div class="mt-12 pt-8 border-t border-white/10 flex justify-between items-center">
68
+ <a href="/" class="flex items-center gap-2 text-indigo-300 hover:text-white transition font-bold">
69
+ <i data-lucide="arrow-left" class="w-4 h-4"></i> Kembali ke Home
70
+ </a>
71
+ <span class="text-xs opacity-40 italic">We take security seriously.</span>
72
+ </div>
73
+ </div>
74
+
75
+ <script>lucide.createIcons();</script>
data/config.ru CHANGED
@@ -15,6 +15,8 @@ app.add_route "/edit", PagesController, :edit
15
15
  app.add_route "/about", PagesController, :about
16
16
  app.add_route "/docs", PagesController, :docs
17
17
  app.add_route "/kontak", PagesController, :kontak
18
+ app.add_route "/conduct", PagesController, :conduct
19
+ app.add_route "/security", PagesController, :security
18
20
  app.add_route "/robots.txt", SeoController, :robots
19
21
  app.add_route "/sitemap.xml", SeoController, :sitemap
20
22
  app.add_route "/posts", PostsController, :index
data/lib/eksa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eksa
2
- VERSION = "3.5.0"
2
+ VERSION = "3.5.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eksa-framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - IshikawaUta
@@ -149,6 +149,20 @@ dependencies:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
151
  version: '2.8'
152
+ - !ruby/object:Gem::Dependency
153
+ name: bigdecimal
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '3.1'
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '3.1'
152
166
  description: Framework MVC ringan dengan tema modern, sistem routing, dan dukungan
153
167
  multi-database (SQLite & MongoDB).
154
168
  email:
@@ -160,16 +174,20 @@ extra_rdoc_files: []
160
174
  files:
161
175
  - ".eksa.json"
162
176
  - ".env.example"
177
+ - CODE_OF_CONDUCT.md
178
+ - CONTRIBUTING.md
163
179
  - Gemfile
164
180
  - Gemfile.lock
165
181
  - LICENSE
166
182
  - README.md
183
+ - SECURITY.md
167
184
  - _posts/2026-03-15-welcome-to-eksa-framework.md
168
185
  - app/controllers/pages_controller.rb
169
186
  - app/controllers/posts_controller.rb
170
187
  - app/controllers/seo_controller.rb
171
188
  - app/models/pesan.rb
172
189
  - app/views/about.html.erb
190
+ - app/views/conduct.html.erb
173
191
  - app/views/docs.html.erb
174
192
  - app/views/edit.html.erb
175
193
  - app/views/index.html.erb
@@ -177,6 +195,7 @@ files:
177
195
  - app/views/layout.html.erb
178
196
  - app/views/posts/index.html.erb
179
197
  - app/views/posts/show.html.erb
198
+ - app/views/security.html.erb
180
199
  - config.ru
181
200
  - db/eksa_app.db
182
201
  - db/setup.rb